Example #1
0
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)
Example #2
0
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
Example #3
0
    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)
Example #4
0
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
Example #5
0
 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
Example #6
0
    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)
Example #7
0
 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
Example #8
0
 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))
Example #9
0
 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))
Example #10
0
    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
Example #11
0
    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)
Example #12
0
 def _format_time(value):
     return format_time(value) if value else None
Example #13
0
 def _format_time(value):
     return format_time(value) if value else None
Example #14
0
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)
Example #15
0
    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
Example #16
0
File: utils.py Project: Ictp/indico
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')