class IConferenceMetadataFossil(_IncludeMaterialFossil, IFossil): def getId(self): pass def getStartDate(self): pass getStartDate.convert = Conversion.datetime def getEndDate(self): pass getEndDate.convert = Conversion.datetime def getTitle(self): pass def getDescription(self): pass def getType(self): pass def getOwner(self): pass getOwner.convert = lambda x: x.getTitle() getOwner.name = 'category' def getCategoryId(self): pass getCategoryId.produce = lambda x: x.getOwner().getId() def getTimezone(self): pass def getChairList(self): pass getChairList.name = 'chairs' getChairList.result = IConferenceChairMetadataFossil def getLocation(self): """ Location (CERN/...) """ getLocation.convert = lambda l: l and l.getName() def getLocator(self): pass getLocator.convert = Conversion.url(urlHandlers.UHConferenceDisplay) getLocator.name = 'url' def getRoom(self): """ Room (inside location) """ getRoom.convert = lambda r: r and r.getName() def getVisibility(self): pass getVisibility.name = 'visibility' getVisibility.produce = lambda x: Conversion.visibility(x) def getRoomMapURL(self): pass getRoomMapURL.produce = lambda x: RoomLinker().getURL(x.getRoom(), x.getLocation())
def _build_session_event_api_data(self, event): data = self._build_event_api_data_base(event) data.update({ '_fossil': 'conference', 'adjustedStartDate': self._serialize_date(event.as_legacy.getAdjustedStartDate()), 'adjustedEndDate': self._serialize_date(event.as_legacy.getAdjustedEndDate()), 'bookedRooms': Conversion.reservationsList(event.reservations.all()), 'supportInfo': { '_fossil': 'supportInfo', 'caption': to_unicode(event.as_legacy.getSupportInfo().getCaption()), '_type': 'SupportInfo', 'email': event.as_legacy.getSupportInfo().getEmail(), 'telephone': event.as_legacy.getSupportInfo().getTelephone() }, }) return data
class IBasicConferenceMetadataFossil(IFossil): def getId(self): pass def getStartDate(self): pass getStartDate.convert = Conversion.datetime def getEndDate(self): pass getEndDate.convert = Conversion.datetime def getTitle(self): pass def getType(self): pass def getOwner(self): pass getOwner.convert = lambda x: x.getTitle() getOwner.name = 'category' def getCategoryId(self): pass getCategoryId.produce = lambda x: x.getOwner().getId() def getLocator(self): pass getLocator.convert = Conversion.url(urlHandlers.UHConferenceDisplay) getLocator.name = 'url'
class ISessionMetadataBaseFossil(ISessionSlotFossil, _IncludeACLFossil): def getSession(self): pass getSession.result = ISessionMinimalFossil def getId(self): pass getId.produce = lambda ss: "{0}-{1}".format(ss.getSession().getId(), ss.getId()) def getLocator(self): pass getLocator.convert = Conversion.url(urlHandlers.UHSessionDisplay) getLocator.name = 'url' def getFullTitle(self): pass getFullTitle.name = 'title' def getDescription(self): pass def getNote(self): pass getNote.produce = lambda x: build_note_api_data(x.note)
class ICategoryMetadataFossil(IFossil): def getId(self): pass def getName(self): pass def getLocator(self): pass getLocator.convert = Conversion.url(urlHandlers.UHCategoryDisplay) getLocator.name = 'url'
def _build_session_event_api_data(self, event): data = self._build_event_api_data_base(event) data.update({ '_fossil': 'conference', 'adjustedStartDate': self._serialize_date(event.start_dt_local), 'adjustedEndDate': self._serialize_date(event.end_dt_local), 'bookedRooms': Conversion.reservationsList(event.reservations.all()), 'supportInfo': { '_fossil': 'supportInfo', 'caption': event.contact_title, '_type': 'SupportInfo', 'email': ', '.join(event.contact_emails), 'telephone': ', '.join(event.contact_phones) }, }) return data
def _build_session_event_api_data(self, event): data = self._build_event_api_data_base(event) data.update({ '_fossil': 'conference', 'adjustedStartDate': self._serialize_date(event.start_dt_local), 'adjustedEndDate': self._serialize_date(event.end_dt_local), 'bookedRooms': Conversion.reservationsList(event.reservations), 'supportInfo': { '_fossil': 'supportInfo', 'caption': event.contact_title, '_type': 'SupportInfo', 'email': ', '.join(event.contact_emails), 'telephone': ', '.join(event.contact_phones) }, }) return data
def _build_session_event_api_data(self, event): data = self._build_event_api_data_base(event) data.update( { "_fossil": "conference", "adjustedStartDate": self._serialize_date(event.as_legacy.getAdjustedStartDate()), "adjustedEndDate": self._serialize_date(event.as_legacy.getAdjustedEndDate()), "bookedRooms": Conversion.reservationsList(event.reservations.all()), "supportInfo": { "_fossil": "supportInfo", "caption": to_unicode(event.as_legacy.getSupportInfo().getCaption()), "_type": "SupportInfo", "email": event.as_legacy.getSupportInfo().getEmail(), "telephone": event.as_legacy.getSupportInfo().getTelephone(), }, } ) return data
def _build_event_api_data(self, event): can_manage = self.user is not None and event.can_manage(self.user) data = self._build_event_api_data_base(event) data.update({ '_fossil': self.fossils_mapping['event'].get(self._detail_level), 'categoryId': unicode(event.category_id), 'category': event.category.getTitle(), 'note': build_note_api_data(event.note), 'roomFullname': event.room_name, 'url': url_for('event.conferenceDisplay', confId=event.id, _external=True), 'modificationDate': self._serialize_date(event.as_legacy.getModificationDate()), 'creationDate': self._serialize_date(event.as_legacy.getCreationDate()), 'creator': self._serialize_person(event.creator, person_type='Avatar', can_manage=can_manage), 'hasAnyProtection': event.as_legacy.hasAnyProtection(), 'roomMapURL': event.room.map_url if event.room else None, 'visibility': Conversion.visibility(event.as_legacy), 'folders': build_folders_api_data(event), 'chairs': self._serialize_persons(event.person_links, person_type='ConferenceChair', can_manage=can_manage), 'material': build_material_legacy_api_data(event) + [build_note_legacy_api_data(event.note)] }) if can_manage: data['allowed'] = self._serialize_access_list(event) if self._detail_level in {'contributions', 'subcontributions'}: data['contributions'] = [] for contribution in event.contributions: include_subcontribs = self._detail_level == 'subcontributions' serialized_contrib = self._serialize_contribution(contribution, include_subcontribs) data['contributions'].append(serialized_contrib) elif self._detail_level == 'sessions': # Contributions without a session data['contributions'] = [] for contribution in event.contributions: if not contribution.session: serialized_contrib = self._serialize_contribution(contribution) data['contributions'].append(serialized_contrib) data['sessions'] = [] for session_ in event.sessions: data['sessions'].extend(self._build_session_api_data(session_)) if self._occurrences: data['occurrences'] = fossilize(self._calculate_occurrences(event, self._fromDT, self._toDT, pytz.timezone(self._serverTZ)), {Period: IPeriodFossil}, tz=self._tz, naiveTZ=self._serverTZ) return data
def _build_event_api_data(self, event): can_manage = self.user is not None and event.can_manage(self.user) data = self._build_event_api_data_base(event) data.update({ '_fossil': self.fossils_mapping['event'].get(self._detail_level), 'categoryId': unicode(event.category_id), 'category': event.category.getTitle(), 'note': build_note_api_data(event.note), 'roomFullname': event.room_name, 'url': url_for('event.conferenceDisplay', confId=event.id, _external=True), 'modificationDate': self._serialize_date(event.as_legacy.getModificationDate()), 'creationDate': self._serialize_date(event.as_legacy.getCreationDate()), 'creator': self._serialize_person(event.creator, person_type='Avatar', can_manage=can_manage), 'hasAnyProtection': event.as_legacy.hasAnyProtection(), 'roomMapURL': event.room.map_url if event.room else None, 'visibility': Conversion.visibility(event.as_legacy), 'folders': build_folders_api_data(event), 'chairs': self._serialize_persons(event.person_links, person_type='ConferenceChair', can_manage=can_manage), 'material': build_material_legacy_api_data(event) + [build_note_legacy_api_data(event.note)] }) if can_manage: data['allowed'] = self._serialize_access_list(event) if self._detail_level in {'contributions', 'subcontributions'}: data['contributions'] = [] for contribution in event.contributions: include_subcontribs = self._detail_level == 'subcontributions' serialized_contrib = self._serialize_contribution( contribution, include_subcontribs) data['contributions'].append(serialized_contrib) elif self._detail_level == 'sessions': # Contributions without a session data['contributions'] = [] for contribution in event.contributions: if not contribution.session: serialized_contrib = self._serialize_contribution( contribution) data['contributions'].append(serialized_contrib) data['sessions'] = [] for session_ in event.sessions: data['sessions'].extend(self._build_session_api_data(session_)) if self._occurrences: data['occurrences'] = fossilize(self._calculate_occurrences( event, self._fromDT, self._toDT, pytz.timezone(self._serverTZ)), {Period: IPeriodFossil}, tz=self._tz, naiveTZ=self._serverTZ) return data
class IContributionMetadataFossil(_IncludeMaterialFossil, IFossil): def getId(self): pass def getTitle(self): pass def getLocation(self): pass getLocation.convert = lambda l: l and l.getName() def getRoom(self): pass getRoom.convert = lambda r: r and r.getName() def getStartDate(self): pass getStartDate.convert = Conversion.datetime def getEndDate(self): pass getEndDate.convert = Conversion.datetime def getDuration(self): pass getDuration.convert = Conversion.duration def getDescription(self): pass def getSpeakerList(self): pass getSpeakerList.name = 'speakers' getSpeakerList.result = IContributionParticipationMetadataFossil def getPrimaryAuthorList(self): pass getPrimaryAuthorList.name = 'primaryauthors' getPrimaryAuthorList.result = IContributionParticipationMetadataFossil def getCoAuthorList(self): pass getCoAuthorList.name = 'coauthors' getCoAuthorList.result = IContributionParticipationMetadataFossil def getTrack( self ): pass getTrack.convert = lambda t: t and t.getTitle() def getSession( self ): pass getSession.convert = lambda s: s and s.getTitle() def getType(self): pass getType.convert = lambda t: t and t.getName() def getLocator(self): pass getLocator.convert = Conversion.url(urlHandlers.UHContributionDisplay) getLocator.name = 'url'
class IContributionMetadataFossil(_IncludeMaterialFossil, _IncludeACLFossil, IFossil): def getId(self): pass def getTitle(self): pass def getLocation(self): pass getLocation.convert = lambda l: l and l.getName() def getRoom(self): pass getRoom.convert = lambda r: r and r.getName() def getRoomFullName(self): """ Contribution Room """ getRoomFullName.produce = lambda c: c.getRoom() getRoomFullName.convert = Conversion.roomFullName getRoomFullName.name = 'roomFullname' def getStartDate(self): pass getStartDate.convert = Conversion.datetime def getEndDate(self): pass getEndDate.convert = Conversion.datetime def getDuration(self): pass getDuration.convert = Conversion.duration def getDescription(self): pass def getSpeakerList(self): pass getSpeakerList.name = 'speakers' getSpeakerList.result = IContributionParticipationMetadataFossil def getPrimaryAuthorList(self): pass getPrimaryAuthorList.name = 'primaryauthors' getPrimaryAuthorList.result = IContributionParticipationMetadataFossil def getCoAuthorList(self): pass getCoAuthorList.name = 'coauthors' getCoAuthorList.result = IContributionParticipationMetadataFossil def getTrack( self ): pass getTrack.convert = lambda t: t and t.getTitle() def getSession( self ): pass getSession.convert = lambda s: s and s.getTitle() def getType(self): pass getType.convert = lambda t: t and t.getName() def getLocator(self): pass getLocator.convert = Conversion.url(urlHandlers.UHContributionDisplay) getLocator.name = 'url' def getKeywords(self): pass getKeywords.produce = lambda x: x.getKeywords().splitlines() if x.getKeywords().strip() else [] def getNote(self): pass getNote.produce = lambda x: build_note_api_data(x.note)
class IConferenceMetadataFossil(_IncludeMaterialFossil, _IncludeACLFossil, IFossil): def getId(self): pass def getStartDate(self): pass getStartDate.convert = Conversion.datetime def getEndDate(self): pass getEndDate.convert = Conversion.datetime def getTitle(self): pass def getDescription(self): pass def getType(self): pass def getOwner(self): pass getOwner.convert = lambda x: x.getTitle() getOwner.name = 'category' def getCategoryId(self): pass getCategoryId.produce = lambda x: x.getOwner().getId() def getTimezone(self): pass def getNote(self): pass getNote.produce = lambda x: build_note_api_data(x.note) def getChairList(self): pass getChairList.name = 'chairs' getChairList.result = IConferenceChairMetadataFossil def getLocation(self): """ Location (CERN/...) """ getLocation.convert = lambda l: l and l.getName() def getLocator(self): pass getLocator.convert = Conversion.url(urlHandlers.UHConferenceDisplay) getLocator.name = 'url' def getRoom(self): """ Room (inside location) """ getRoom.convert = lambda r: r and r.getName() def getRoomFullName(self): """ Conference Room """ getRoomFullName.produce = lambda c: c.getRoom() getRoomFullName.convert = Conversion.roomFullName getRoomFullName.name = 'roomFullname' def getVisibility(self): pass getVisibility.name = 'visibility' getVisibility.produce = lambda x: Conversion.visibility(x) def hasAnyProtection(self): pass def getAddress(self): pass def getCreator(self): pass getCreator.produce = lambda x: x.as_event.creator.as_avatar getCreator.result = IConferenceChairMetadataFossil def getCreationDate(self): pass def getModificationDate(self): pass def getRoomMapURL(self): pass getRoomMapURL.produce = lambda x: RoomLinker().getURL(x.getRoom(), x.getLocation())