Changeset 561719 in indico


Ignore:
Timestamp:
10/21/11 16:39:27 (19 months ago)
Author:
Jose Benito <jose.benito.gonzalez@…>
Branches:
master, hello-world-walkthrough, ipv6, v0.98-series, v0.98.2, v0.98.3, v0.98b2, v0.99, 051b2622c51afb171a1dedb46a0df4fbb0cbd02e, d9941f8582b36b24821a11ea5ba16fda6a457fb1
Children:
ff053c
Parents:
c7f5d2
git-author:
Adrian Moennich <jerome.ernst.monnich@…> (09/28/11 15:27:07)
git-committer:
Jose Benito <jose.benito.gonzalez@…> (10/21/11 16:39:27)
Message:

[IMP] eAgreement export

File:
1 edited

Legend:

Unmodified
Added
Removed
  • indico/MaKaC/plugins/Collaboration/http_api.py

    refb1b9 r561719  
    2525from MaKaC.webinterface.rh.collaboration import RCCollaborationAdmin 
    2626from MaKaC.plugins.Collaboration.RecordingManager.common import createIndicoLink 
     27from MaKaC.plugins.Collaboration.pages import WElectronicAgreement 
     28from MaKaC.plugins.Collaboration.collaborationTools import CollaborationTools 
     29from MaKaC.conference import ConferenceHolder 
     30from MaKaC.plugins.Collaboration.base import SpeakerStatusEnum 
    2731 
    2832 
    29 globalHTTPAPIHooks = ['CollaborationAPIHook'] 
     33globalHTTPAPIHooks = ['CollaborationAPIHook', 'CollaborationExportHook'] 
    3034 
    3135class CollaborationAPIHook(HTTPAPIHook): 
     
    5256        success = createIndicoLink(self._indicoID, self._cdsID) 
    5357        return {'success': success} 
     58 
     59 
     60class CollaborationExportHook(HTTPAPIHook): 
     61    TYPES = ('eAgreements',) 
     62    RE = r'(?P<confId>\w+)' 
     63    GUEST_ALLOWED = False 
     64    VALID_FORMATS = ('json', 'jsonp', 'xml') 
     65 
     66    def _hasAccess(self, aw): 
     67        return RCCollaborationAdmin.hasRights(user=aw.getUser()) 
     68 
     69    def _getParams(self): 
     70        super(CollaborationExportHook, self)._getParams() 
     71        self._conf = ConferenceHolder().getById(self._pathParams['confId'], True) 
     72        if not self._conf: 
     73            raise HTTPAPIError('Conference does not exist.', apache.HTTP_BAD_REQUEST) 
     74 
     75    def export_eAgreements(self, aw): 
     76        manager = self._conf.getCSBookingManager() 
     77        requestType = CollaborationTools.getRequestTypeUserCanManage(self._conf, aw.getUser()) 
     78        contributions = manager.getContributionSpeakerByType(requestType) 
     79        for cont, speakers in contributions.items(): 
     80            for spk in speakers: 
     81                sw = manager.getSpeakerWrapperByUniqueId('%s.%s' % (cont, spk.getId())) 
     82                status = sw.getStatus() if sw else None 
     83                signed = None 
     84                if status in (SpeakerStatusEnum.FROMFILE, SpeakerStatusEnum.SIGNED): 
     85                    signed = True 
     86                elif status == SpeakerStatusEnum.REFUSED: 
     87                    signed = False 
     88                yield { 
     89                    'type': sw and sw.getRequestType(), 
     90                    'status': status, 
     91                    'signed': signed, 
     92                    'contrib': cont, 
     93                    'speaker': { 
     94                        'id': spk.getId(), 
     95                        'name': spk.getFullName(), 
     96                        'email': spk.getEmail() 
     97                    } 
     98                } 
Note: See TracChangeset for help on using the changeset viewer.