def buildCache(ids): i = 1 for id in ids: DBMgr.getInstance().startRequest() try: conf = ConferenceHolder().getById(id) except: print "conf %s not found" continue j = 1 for cont in conf.getContributionList(): print "conf %d:%s - contrib %d:%s"%(i, conf.getId(), j, cont.getId()) og = outputGenerator(AccessWrapper()) x = og.contribToXMLMarc21(cont, 1, overrideCache=True) for subCont in cont.getSubContributionList(): print "conf %d:%s - contrib %d:%s - subContrib:%s"%(i, conf.getId(), j, cont.getId(), subCont.getId()) y = og.subContribToXMLMarc21(subCont, 1, overrideCache=True) j += 1 i += 1 DBMgr.getInstance().endRequest()
def buildCache(ids): i = 1 for id in ids: DBMgr.getInstance().startRequest() try: conf = ConferenceHolder().getById(id) except: print "conf %s not found" continue print i, ":", conf.getId() og = outputGenerator(AccessWrapper()) x = og.confToXML(conf, 1, 1, 1, overrideCache=True) y = og.confToXMLMarc21(conf, 1, 1, 1, overrideCache=True) i += 1 DBMgr.getInstance().endRequest()
class CollaborationExportHook(HTTPAPIHook): TYPES = ('eAgreements', ) RE = r'(?P<confId>\w+)' GUEST_ALLOWED = False VALID_FORMATS = ('json', 'jsonp', 'xml') def _hasAccess(self, aw): return RCCollaborationAdmin.hasRights(user=aw.getUser()) def _getParams(self): super(CollaborationExportHook, self)._getParams() self._conf = ConferenceHolder().getById(self._pathParams['confId'], True) if not self._conf: raise HTTPAPIError('Conference does not exist.', 400) def export_eAgreements(self, aw): manager = Catalog.getIdx("cs_bookingmanager_conference").get( self._conf.getId()) requestType = CollaborationTools.getRequestTypeUserCanManage( self._conf, aw.getUser()) contributions = manager.getContributionSpeakerByType(requestType) for cont, speakers in contributions.items(): for spk in speakers: sw = manager.getSpeakerWrapperByUniqueId('%s.%s' % (cont, spk.getId())) if not sw: continue signed = None if sw.getStatus() in (SpeakerStatusEnum.FROMFILE, SpeakerStatusEnum.SIGNED): signed = True elif sw.getStatus() == SpeakerStatusEnum.REFUSED: signed = False yield { 'confId': sw.getConference().getId(), 'contrib': cont, 'type': sw.getRequestType(), 'status': sw.getStatus(), 'signed': signed, 'speaker': { 'id': spk.getId(), 'name': spk.getFullName(), 'email': spk.getEmail() } }
class CollaborationExportHook(HTTPAPIHook): TYPES = ('eAgreements', ) RE = r'(?P<confId>\w+)' GUEST_ALLOWED = False VALID_FORMATS = ('json', 'jsonp', 'xml') def _hasAccess(self, aw): return RCCollaborationAdmin.hasRights(user=aw.getUser()) def _getParams(self): super(CollaborationExportHook, self)._getParams() self._conf = ConferenceHolder().getById(self._pathParams['confId'], True) if not self._conf: raise HTTPAPIError('Conference does not exist.', apache.HTTP_BAD_REQUEST) def export_eAgreements(self, aw): manager = Catalog.getIdx("cs_bookingmanager_conference").get(self._conf.getId()) requestType = CollaborationTools.getRequestTypeUserCanManage(self._conf, aw.getUser()) contributions = manager.getContributionSpeakerByType(requestType) for cont, speakers in contributions.items(): for spk in speakers: sw = manager.getSpeakerWrapperByUniqueId('%s.%s' % (cont, spk.getId())) if not sw: continue signed = None if sw.getStatus() in (SpeakerStatusEnum.FROMFILE, SpeakerStatusEnum.SIGNED): signed = True elif sw.getStatus() == SpeakerStatusEnum.REFUSED: signed = False yield { 'confId': sw.getConference().getId(), 'contrib': cont, 'type': sw.getRequestType(), 'status': sw.getStatus(), 'signed': signed, 'speaker': { 'id': spk.getId(), 'name': spk.getFullName(), 'email': spk.getEmail() } }
class AgreementExportHook(HTTPAPIHook): TYPES = ('agreements',) RE = r'(?P<agreement_type>[^/]+)/(?P<event_id>\w+)' MAX_RECORDS = {} GUEST_ALLOWED = False VALID_FORMATS = ('json', 'jsonp', 'xml') def _getParams(self): super(AgreementExportHook, self)._getParams() type_ = self._pathParams['agreement_type'] try: self._definition = get_agreement_definitions()[type_] except KeyError: raise HTTPAPIError('No such agreement type', 404) self._event = ConferenceHolder().getById(self._pathParams['event_id'], True) if self._event is None: raise HTTPAPIError('No such event', 404) def _hasAccess(self, aw): return self._definition.can_access_api(aw.getUser().user, self._event) def export_agreements(self, aw): sent_agreements = {a.identifier: a for a in Agreement.find(event_id=self._event.getId(), type=self._definition.name)} for person in islice(sorted(self._definition.get_people(self._event).itervalues(), key=attrgetter('name', 'identifier')), self._offset, self._offset + self._limit): agreement = sent_agreements.get(person.identifier) data = { 'event_id': int(self._event.id), 'identifier': person.identifier, 'sent': agreement is not None, 'accepted': None if (not agreement or agreement.pending) else agreement.accepted, } self._definition.extend_api_data(self._event, person, agreement, data) yield data
class AgreementExportHook(HTTPAPIHook): TYPES = ('agreements',) RE = r'(?P<agreement_type>[^/]+)/(?P<event_id>\w+)' MAX_RECORDS = {} GUEST_ALLOWED = False VALID_FORMATS = ('json', 'jsonp', 'xml') def _getParams(self): super(AgreementExportHook, self)._getParams() type_ = self._pathParams['agreement_type'] try: self._definition = get_agreement_definitions()[type_] except KeyError: raise HTTPAPIError('No such agreement type', 404) self._event = ConferenceHolder().getById(self._pathParams['event_id'], True) if self._event is None: raise HTTPAPIError('No such event', 404) def _hasAccess(self, aw): return self._definition.can_access_api(aw.getUser(), self._event) def export_agreements(self, aw): sent_agreements = {a.identifier: a for a in Agreement.find(event_id=self._event.getId(), type=self._definition.name)} for person in islice(sorted(self._definition.get_people(self._event).itervalues(), key=attrgetter('name', 'identifier')), self._offset, self._offset + self._limit): agreement = sent_agreements.get(person.identifier) data = { 'event_id': int(self._event.id), 'identifier': person.identifier, 'sent': agreement is not None, 'accepted': None if (not agreement or agreement.pending) else agreement.accepted, } self._definition.extend_api_data(self._event, person, agreement, data) yield data