def formatTime(tm, format=None, locale=None, server_tz=False, tz=None): if not format: return format_time(tm, 'H:mm', locale=locale, timezone=tz, server_tz=server_tz) else: return format_time(tm, format, locale=locale, timezone=tz, server_tz=server_tz)
def get_time_changes_notifications(changes, tzinfo, entry=None): notifications = [] for obj, change in changes.iteritems(): if entry: if entry.object == obj: continue if not isinstance(obj, Event) and obj.timetable_entry in entry.children: continue msg = None if isinstance(obj, Event): if 'start_dt' in change: new_time = change['start_dt'][1] msg = _("Event start time changed to {}") elif 'end_dt' in change: new_time = change['end_dt'][1] msg = _("Event end time changed to {}") else: raise ValueError("Invalid change in event.") elif isinstance(obj, SessionBlock): if 'start_dt' in change: new_time = change['start_dt'][1] msg = _("Session block start time changed to {}") elif 'end_dt' in change: new_time = change['end_dt'][1] msg = _("Session block end time changed to {}") else: raise ValueError("Invalid change in session block.") if msg: notifications.append(msg.format(to_unicode(format_time(new_time, timezone=tzinfo)))) return notifications
def _get_base_path(self, attachment): # TODO: adapt to new models (needs extra properties to use event TZ) obj = linked_object = attachment.folder.object paths = [] while obj != self.event: start_date = _get_start_dt(obj) if start_date is not None: if isinstance(obj, SubContribution): paths.append( secure_filename( '{}_{}'.format(obj.position, obj.title), '')) else: time = format_time(start_date, format='HHmm', timezone=self.event.timezone) paths.append( secure_filename( '{}_{}'.format(to_unicode(time), obj.title), '')) else: if isinstance(obj, SubContribution): paths.append( secure_filename( '{}){}'.format(obj.position, obj.title), unicode(obj.id))) else: paths.append(secure_filename(obj.title, unicode(obj.id))) obj = _get_obj_parent(obj) linked_obj_start_date = _get_start_dt(linked_object) if attachment.folder.object != self.event and linked_obj_start_date is not None: paths.append( secure_filename(linked_obj_start_date.strftime('%Y%m%d_%A'), '')) return reversed(paths)
def get_time_changes_notifications(changes, tzinfo, entry=None): notifications = [] for obj, change in changes.iteritems(): if entry: if entry.object == obj: continue if not isinstance(obj, Event) and obj.timetable_entry in entry.children: continue msg = None if isinstance(obj, Event): if 'start_dt' in change: new_time = change['start_dt'][1] msg = _("Event start time changed to {}") elif 'end_dt' in change: new_time = change['end_dt'][1] msg = _("Event end time changed to {}") else: raise ValueError("Invalid change in event.") elif isinstance(obj, SessionBlock): if 'start_dt' in change: new_time = change['start_dt'][1] msg = _("Session block start time changed to {}") elif 'end_dt' in change: new_time = change['end_dt'][1] msg = _("Session block end time changed to {}") else: raise ValueError("Invalid change in session block.") if msg: notifications.append(msg.format(format_time(new_time, timezone=tzinfo))) return notifications
def __getVarsTextTpl(self, conf): tvars = {} tvars['entries'] = [] confSchedule = conf.getSchedule() entrylist = confSchedule.getEntries() for entry in entrylist: if type(entry) is schedule.BreakTimeSchEntry: newItem = entry else: newItem = entry.getOwner() tvars['entries'].append(newItem) tvars["conf"] = conf styleMgr = info.HelperMaKaCInfo.getMaKaCInfoInstance().getStyleManager() tvars['INCLUDE'] = os.path.join(styleMgr.getBaseTPLPath(), 'include') tvars['getTime'] = lambda date : format_time(date.time()) tvars['isTime0H0M'] = lambda date : (date.hour, date.minute) == (0,0) tvars['getDate'] = lambda date : format_date(date, format='yyyy-MM-dd') tvars['prettyDate'] = lambda date : format_date(date, format='full') tvars['getLocationInfo'] = lambda item: getLocationInfo(item, False) from MaKaC.conference import SessionSlot, AcceptedContribution tvars['getItemType'] = lambda item: "Break" if isinstance(item, schedule.BreakTimeSchEntry) \ else ("Session" if isinstance(item, SessionSlot) \ else ("Contribution" if isinstance(item, AcceptedContribution) \ else item.__class__.__name__)) return tvars
def _get_base_path(self, attachment): # TODO: adapt to new models (needs extra properties to use event TZ) obj = linked_object = attachment.folder.object paths = [] while obj != self.event_new: start_date = _get_start_dt(obj) if start_date is not None: if isinstance(obj, SubContribution): paths.append(secure_filename('{}_{}'.format(obj.position, obj.title), '')) else: paths.append(secure_filename('{}_{}'.format(format_time(start_date, format='HHmm', timezone=self.event_new.timezone), obj.title), '')) else: if isinstance(obj, SubContribution): paths.append(secure_filename('{}){}'.format(obj.position, obj.title), unicode(obj.id))) else: paths.append(secure_filename(obj.title, unicode(obj.id))) obj = _get_obj_parent(obj) linked_obj_start_date = _get_start_dt(linked_object) if attachment.folder.object != self.event_new and linked_obj_start_date is not None: paths.append(secure_filename(linked_obj_start_date.strftime('%Y%m%d_%A'), '')) return reversed(paths)
def __getVarsTextTpl(self, conf): tvars = {} tvars['entries'] = [] confSchedule = conf.getSchedule() entrylist = confSchedule.getEntries() for entry in entrylist: if type(entry) is schedule.BreakTimeSchEntry: newItem = entry else: newItem = entry.getOwner() tvars['entries'].append(newItem) tvars["conf"] = conf styleMgr = info.HelperMaKaCInfo.getMaKaCInfoInstance().getStyleManager( ) tvars['INCLUDE'] = os.path.join(styleMgr.getBaseTPLPath(), 'include') tvars['getTime'] = lambda date: format_time(date.time()) tvars['isTime0H0M'] = lambda date: (date.hour, date.minute) == (0, 0) tvars['getDate'] = lambda date: format_date(date, format='yyyy-MM-dd') tvars['prettyDate'] = lambda date: format_date(date, format='full') tvars['getLocationInfo'] = lambda item: getLocationInfo(item, False) from MaKaC.conference import SessionSlot, AcceptedContribution tvars['getItemType'] = lambda item: "Break" if isinstance(item, schedule.BreakTimeSchEntry) \ else ("Session" if isinstance(item, SessionSlot) \ else ("Contribution" if isinstance(item, AcceptedContribution) \ else item.__class__.__name__)) return tvars
def _fetch_contribution_info(self): """Build the list of information entries for contributions of the event""" self.contributions = {} query = (Contribution.query .with_parent(self.event) .options(joinedload('legacy_mapping'), joinedload('timetable_entry').lazyload('*'))) for contribution in query: if not contribution.start_dt: continue cid = (contribution.legacy_mapping.legacy_contribution_id if contribution.legacy_mapping else contribution.id) key = '{}t{}'.format(contribution.event_id, cid) self.contributions[key] = u'{} ({})'.format(contribution.title, format_time(contribution.start_dt))
def getVars(self): vars = wcomponents.WTemplated.getVars(self) vars["isWithdrawn"] = isinstance(self._contrib.getCurrentStatus(), conference.ContribStatusWithdrawn) vars["Contribution"] = vars["target"] = self._contrib vars["urlICSFile"] = urlHandlers.UHContribToiCal.getURL(self._contrib) vars["showAttachedFiles"] = self._contrib.getConference().getAbstractMgr().showAttachedFilesContribList() and isinstance(self._contrib, conference.AcceptedContribution) and self._contrib.getAbstract() and len(self._contrib.getAbstract().getAttachments()) > 0 vars["abstractAttachments"] = fossilize(self._contrib.getAbstract().getAttachments().values(), ILocalFileAbstractMaterialFossil) if isinstance(self._contrib, conference.AcceptedContribution) and self._contrib.getAbstract() else [] vars.update(self._getIcalExportParams(self._aw.getUser(), '/export/event/%s/contribution/%s.ics' % (self._contrib.getConference().getId(), self._contrib.getId()))) vars["getAuthorURL"] = lambda auth: self._getAuthorURL(auth) vars["formatDate"] = lambda date: format_date(date, "d MMM yyyy") tz = timezone(DisplayTZ(self._aw, self._contrib.getConference()).getDisplayTZ()) vars["formatTime"] = lambda time: format_time(time, format="short", timezone=tz) vars["formatDateTime"] = lambda dt: format_datetime(dt, format='d/M/yyyy H:mm', timezone=tz) vars["accessWrapper"] = self._aw statusReviewing = self._getStatusReviewing() vars["showSubmit"] = statusReviewing not in ["Accept", "Reject", "Submitted"] vars["showMaterial"] = statusReviewing is not None vars["showHistory"] = statusReviewing is not None vars["reviewingActive"] = self._contrib.getConference() and \ self._contrib.getConference().getConfPaperReview().hasReviewing() and \ not isinstance(self._contrib.getCurrentStatus(), conference.ContribStatusWithdrawn) and \ (self._contrib.canUserSubmit(self._aw.getUser()) or self._contrib.canModify(self._aw)) if statusReviewing == "Submitted": vars["statusText"] = _("Awaiting review") vars["statusClass"] = "contributionReviewingStatusPending" elif statusReviewing == "Accept": vars["statusText"] = _("ACCEPTED") vars["statusClass"] = "contributionReviewingStatusAccepted" elif statusReviewing == "Reject": vars["statusText"] = _("REJECTED") vars["statusClass"] = "contributionReviewingStatusRejected" elif statusReviewing == "To be corrected": vars["statusText"] = _("To be corrected") vars["statusClass"] = "contributionReviewingStatusCorrected" elif statusReviewing is not None: vars["statusText"] = statusReviewing vars["statusClass"] = "contributionReviewingStatusCorrected" else: vars["statusText"] = _("Paper not yet submitted") vars["statusClass"] = "contributionReviewingStatusNotSubmitted" vars["prefixUpload"] = "Re-" if statusReviewing not in ["Accept", "Reject", None] else "" vars["getResourceName"] = lambda resource: self._getResourceName(resource) vars["reportNumberSystems"] = Config.getInstance().getReportNumberSystems() return vars
def _process(self): form = BookingListForm(event=self.event) has_contribs = _contrib_query(self.event).has_rows() has_session_blocks = _session_block_query(self.event).has_rows() links = (ReservationLink.query.with_parent(self.event) .options(joinedload('reservation').joinedload('room'), joinedload('session_block'), joinedload('contribution')) .filter(~ReservationLink.reservation.has(Reservation.is_cancelled))).all() contribs_data = {c.id: {'start_dt': c.start_dt.isoformat(), 'end_dt': c.end_dt.isoformat()} for c in _contrib_query(self.event)} session_blocks_data = {sb.id: {'start_dt': sb.start_dt.isoformat(), 'end_dt': sb.end_dt.isoformat()} for sb in _session_block_query(self.event)} is_past_event = self.event.end_dt < now_utc() is_single_day = self.event.start_dt.date() == self.event.end_dt.date() event_rb_params = {'link_type': 'event', 'link_id': self.event.id, 'recurrence': 'single' if is_single_day else 'daily', 'number': 1, 'interval': 'week', 'sd': self.event.start_dt_local.date().isoformat(), 'ed': None if is_single_day else self.event.end_dt_local.date().isoformat(), 'st': format_time(self.event.start_dt_local.time()), 'et': format_time(self.event.end_dt_local.time()), 'text': self.event.room.name if self.event.room else None} return WPEventBookingList.render_template('booking_list.html', self.event, form=form, links=links, has_contribs=has_contribs, contribs_data=contribs_data, has_session_blocks=has_session_blocks, session_blocks_data=session_blocks_data, event_rb_params=event_rb_params, is_past_event=is_past_event)
def _format_time(value): return format_time(value) if value else None
def getVars(self): vars = wcomponents.WTemplated.getVars(self) vars["isWithdrawn"] = isinstance(self._contrib.getCurrentStatus(), conference.ContribStatusWithdrawn) vars["Contribution"] = vars["target"] = self._contrib vars["urlICSFile"] = urlHandlers.UHContribToiCal.getURL(self._contrib) vars["showAttachedFiles"] = self._contrib.getConference( ).getAbstractMgr().showAttachedFilesContribList() and isinstance( self._contrib, conference.AcceptedContribution) and self._contrib.getAbstract( ) and len(self._contrib.getAbstract().getAttachments()) > 0 vars["abstractAttachments"] = fossilize( self._contrib.getAbstract().getAttachments().values(), ILocalFileAbstractMaterialFossil) if isinstance( self._contrib, conference.AcceptedContribution ) and self._contrib.getAbstract() else [] vars.update( self._getIcalExportParams( self._aw.getUser(), '/export/event/%s/contribution/%s.ics' % (self._contrib.getConference().getId(), self._contrib.getId()))) vars["getAuthorURL"] = lambda auth: self._getAuthorURL(auth) vars["formatDate"] = lambda date: format_date(date, "d MMM yyyy") tz = timezone( DisplayTZ(self._aw, self._contrib.getConference()).getDisplayTZ()) vars["formatTime"] = lambda time: format_time( time, format="short", timezone=tz) vars["formatDateTime"] = lambda dt: format_datetime( dt, format='d/M/yyyy H:mm', timezone=tz) vars["accessWrapper"] = self._aw statusReviewing = self._getStatusReviewing() vars["showSubmit"] = statusReviewing not in [ "Accept", "Reject", "Submitted" ] vars["showMaterial"] = statusReviewing is not None vars["showHistory"] = statusReviewing is not None vars["reviewingActive"] = self._contrib.getConference() and \ self._contrib.getConference().getConfPaperReview().hasReviewing() and \ not isinstance(self._contrib.getCurrentStatus(), conference.ContribStatusWithdrawn) and \ (self._contrib.canUserSubmit(self._aw.getUser()) or self._contrib.canModify(self._aw)) if statusReviewing == "Submitted": vars["statusText"] = _("Awaiting review") vars["statusClass"] = "contributionReviewingStatusPending" elif statusReviewing == "Accept": vars["statusText"] = _("ACCEPTED") vars["statusClass"] = "contributionReviewingStatusAccepted" elif statusReviewing == "Reject": vars["statusText"] = _("REJECTED") vars["statusClass"] = "contributionReviewingStatusRejected" elif statusReviewing == "To be corrected": vars["statusText"] = _("To be corrected") vars["statusClass"] = "contributionReviewingStatusCorrected" elif statusReviewing is not None: vars["statusText"] = statusReviewing vars["statusClass"] = "contributionReviewingStatusCorrected" else: vars["statusText"] = _("Paper not yet submitted") vars["statusClass"] = "contributionReviewingStatusNotSubmitted" vars["prefixUpload"] = "Re-" if statusReviewing not in [ "Accept", "Reject", None ] else "" vars["getResourceName"] = lambda resource: self._getResourceName( resource) vars["reportNumberSystems"] = Config.getInstance( ).getReportNumberSystems() return vars
def formatTime(tm, format=None, locale=None): if not format: return format_time(tm, 'H:mm', locale=locale).encode('utf-8') else: return format_time(tm, format, locale=locale).encode('utf-8')