예제 #1
0
 def getVars(self):
     vars = wcomponents.WTemplated.getVars( self )
     vars["logo"] = ""
     if self._conf.getLogo():
         vars["logo"] = "<img src=\"%s\" alt=\"%s\" border=\"0\">"%(vars["logoURL"], self._conf.getTitle())
     vars["confTitle"] = self._conf.getTitle()
     vars["displayURL"] = urlHandlers.UHConferenceDisplay.getURL(self._conf)
     vars["imgConferenceRoom"] = Config.getInstance().getSystemIconURL( "conferenceRoom" )
     #################################
     # Fermi timezone awareness      #
     #################################
     vars["confDateInterval"] = i18nformat("""_("from") %s _("to") %s""")%(format_date(self._conf.getStartDate(), format='long'), format_date(self._conf.getEndDate(), format='long'))
     if self._conf.getStartDate().strftime("%d%B%Y") == \
             self._conf.getEndDate().strftime("%d%B%Y"):
         vars["confDateInterval"] = format_date(self._conf.getStartDate(), format='long')
     elif self._conf.getStartDate().month == self._conf.getEndDate().month:
         vars["confDateInterval"] = "%s-%s %s"%(self._conf.getStartDate().day, self._conf.getEndDate().day, format_date(self._conf.getStartDate(), format='MMMM yyyy'))
     #################################
     # Fermi timezone awareness(end) #
     #################################
     vars["body"] = self._body
     vars["confLocation"] = ""
     if self._conf.getLocationList():
         vars["confLocation"] =  self._conf.getLocationList()[0].getName()
         vars["supportEmail"] = ""
     if self._conf.getSupportInfo().hasEmail():
         mailto = quoteattr("""mailto:%s?subject=%s"""%(self._conf.getSupportInfo().getEmail(), urllib.quote( self._conf.getTitle() ) ))
         vars["supportEmail"] =  _("""<a href=%s class="confSupportEmail"><img src="%s" border="0" alt="email"> %s</a>""")%(mailto,
                                                     Config.getInstance().getSystemIconURL("mail"),
                                                     self._conf.getSupportInfo().getCaption())
     format = displayMgr.ConfDisplayMgrRegistery().getDisplayMgr(self._conf).getFormat()
     vars["bgColorCode"] = format.getFormatOption("titleBgColor")["code"]
     vars["textColorCode"] = format.getFormatOption("titleTextColor")["code"]
     return vars
예제 #2
0
    def getVars(self):
        vars = wcomponents.WTemplated.getVars( self )
        vars["logo"] = ""
        if self._conf.getLogo():
            vars["logo"] = "<img src=\"%s\" alt=\"%s\" border=\"0\">"%(vars["logoURL"], self._conf.getTitle())
        vars["confTitle"] = self._conf.getTitle()
        vars["displayURL"] = urlHandlers.UHConferenceDisplay.getURL(self._conf)
        vars["imgConferenceRoom"] = Config.getInstance().getSystemIconURL( "conferenceRoom" )
        tzUtil = timezoneUtils.DisplayTZ(self._aw,self._conf)
        tz = tzUtil.getDisplayTZ()
        adjusted_sDate = self._conf.getStartDate().astimezone(timezone(tz))
        adjusted_eDate = self._conf.getEndDate().astimezone(timezone(tz))

        vars["confDateInterval"] = i18nformat("""_("from") %s _("to") %s (%s)""")%(format_date(adjusted_sDate, format='long'), format_date(adjusted_eDate, format='long'), tz)

        if self._conf.getStartDate().strftime("%d%B%Y") == \
                self._conf.getEndDate().strftime("%d%B%Y"):
            vars["confDateInterval"] = format_date(adjusted_sDate, format='long') + " (" + tz + ")"
        elif self._conf.getStartDate().month == self._conf.getEndDate().month:
            vars["confDateInterval"] = "%s-%s %s %s"%(adjusted_sDate.day, adjusted_eDate.day, format_date(adjusted_sDate, format='MMMM yyyy'), tz)
        vars["body"] = self._body
        vars["confLocation"] = ""
        if self._conf.getLocationList():
            vars["confLocation"] =  self._conf.getLocationList()[0].getName()
            vars["supportEmail"] = ""
        if self._conf.getSupportInfo().hasEmail():
            mailto = quoteattr("""mailto:%s?subject=%s"""%(self._conf.getSupportInfo().getEmail(), urllib.quote( self._conf.getTitle() ) ))
            vars["supportEmail"] =  i18nformat("""<a href=%s class="confSupportEmail"><img src="%s" border="0" alt="email">  _("support")</a>""")%(mailto, Config.getInstance().getSystemIconURL("mail") )
        format = displayMgr.ConfDisplayMgrRegistery().getDisplayMgr(self._conf).getFormat()
        vars["bgColorCode"] = format.getFormatOption("titleBgColor")["code"]
        vars["textColorCode"] = format.getFormatOption("titleTextColor")["code"]
        return vars
예제 #3
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
예제 #4
0
 def getVars(self):
     vars = wcomponents.WTemplated.getVars(self)
     vars["title"] = self.__conf.getTitle()
     vars["meetingIcon"] = Configuration.Config.getInstance(
     ).getSystemIconURL("meetingIcon")
     vars["modifyIcon"] = ""
     if self.__conf.canModify(self.__aw):
         vars["modifyIcon"] = """<a href="%s"><img src="%s" border="0" alt="Jump to the modification interface"></a>
                              """ % (
             vars["modifyURL"],
             Configuration.Config.getInstance().getSystemIconURL("modify"))
     vars["description"] = self.__getHTMLRow(_("Description"),
                                             self.__conf.getDescription())
     vars["location"] = ""
     location = self.__conf.getLocation()
     if location:
         vars["location"] = self.__getHTMLRow(
             _("Location"),
             "%s<br>%s" % (location.getName(), location.getAddress()))
     vars["room"] = ""
     room = self.__conf.getRoom()
     if room:
         roomLink = linking.RoomLinker().getHTMLLink(room, location)
         vars["room"] = self.__getHTMLRow(_("Room"), roomLink)
     sdate, edate = self.__conf.getStartDate(), self.__conf.getEndDate()
     fsdate, fedate = format_date(sdate,
                                  format='long'), format_date(edate,
                                                              format='long')
     fstime, fetime = sdate.strftime("%H:%M"), edate.strftime("%H:%M")
     vars["dateInterval"] = i18nformat("""_("from") %s %s _("to") %s %s""")%(fsdate, fstime, \
                                                     fedate, fetime)
     if sdate.strftime("%d%B%Y") == edate.strftime("%d%B%Y"):
         timeInterval = fstime
         if sdate.strftime("%H%M") != edate.strftime("%H%M"):
             timeInterval = "%s-%s" % (fstime, fetime)
         vars["dateInterval"] = "%s (%s)" % (fsdate, timeInterval)
     vars["startDate"] = sdate
     vars["endDate"] = edate
     vars["moreInfo"] = self.__getHTMLRow(_("Additional Info"),
                                          self.__conf.getContactInfo())
     chairs = []
     if self.__conf.getChairmanText() != "":
         chairs.append(self.__conf.getChairmanText())
     for chair in self.__conf.getChairList():
         chairs.append("<a href=\"mailto: %s\">%s</a>" %
                       (chair.getEmail(), chair.getFullName()))
     vars["chairs"] = self.__getHTMLRow(_("Chairmen"), "; ".join(chairs))
     ml = []
     for mat in self.__conf.getAllMaterialList():
         str = wcomponents.WMaterialDisplayItem().getHTML(\
                         self.__aw, mat, vars["materialURL"]( mat ))
         if str == "":
             continue
         ml.append(str)
     vars["material"] = self.__getHTMLRow(_("Material"), "<br>".join(ml))
     vars["schedule"] = self.__getSchedule( vars["sessionModifyURLGen"], \
                                             vars["contribModifyURLGen"], \
                                             vars["materialURL"],\
                                             vars["subContribModifyURLGen"] )
     return vars
예제 #5
0
파일: meeting.py 프로젝트: NIIF/indico
 def getVars(self):
     vars = wcomponents.WTemplated.getVars( self )
     vars["logo"] = ""
     if self._conf.getLogo():
         vars["logo"] = "<img src=\"%s\" alt=\"%s\" border=\"0\">"%(vars["logoURL"], self._conf.getTitle())
     vars["confTitle"] = self._conf.getTitle()
     vars["displayURL"] = urlHandlers.UHConferenceDisplay.getURL(self._conf)
     vars["imgConferenceRoom"] = Config.getInstance().getSystemIconURL( "conferenceRoom" )
     #################################
     # Fermi timezone awareness      #
     #################################
     vars["confDateInterval"] = i18nformat("""_("from") %s _("to") %s""")%(format_date(self._conf.getStartDate(), format='long'), format_date(self._conf.getEndDate(), format='long'))
     if self._conf.getStartDate().strftime("%d%B%Y") == \
             self._conf.getEndDate().strftime("%d%B%Y"):
         vars["confDateInterval"] = format_date(self._conf.getStartDate(), format='long')
     elif self._conf.getStartDate().month == self._conf.getEndDate().month:
         vars["confDateInterval"] = "%s-%s %s"%(self._conf.getStartDate().day, self._conf.getEndDate().day, format_date(self._conf.getStartDate(), format='MMMM yyyy'))
     #################################
     # Fermi timezone awareness(end) #
     #################################
     vars["body"] = self._body
     vars["confLocation"] = ""
     if self._conf.getLocationList():
         vars["confLocation"] =  self._conf.getLocationList()[0].getName()
         vars["supportEmail"] = ""
     if self._conf.getSupportInfo().hasEmail():
         mailto = quoteattr("""mailto:%s?subject=%s"""%(self._conf.getSupportInfo().getEmail(), urllib.quote( self._conf.getTitle() ) ))
         vars["supportEmail"] =  _("""<a href=%s class="confSupportEmail"><img src="%s" border="0" alt="email"> %s</a>""")%(mailto,
                                                     Config.getInstance().getSystemIconURL("mail"),
                                                     self._conf.getSupportInfo().getCaption())
     format = displayMgr.ConfDisplayMgrRegistery().getDisplayMgr(self._conf).getFormat()
     vars["bgColorCode"] = format.getFormatOption("titleBgColor")["code"]
     vars["textColorCode"] = format.getFormatOption("titleTextColor")["code"]
     return vars
예제 #6
0
    def getVars(self):
        vars = wcomponents.WTemplated.getVars( self )
        vars["logo"] = ""
        if self.event.has_logo:
            vars["logoURL"] = self.event.logo_url
            vars["logo"] = '<img src="{}" alt="{}" border="0" class="confLogo">'.format(
                vars["logoURL"], escape_html(self.event.title.encode('utf-8'), escape_quotes=True))
        vars["confTitle"] = self.event.title.encode('utf-8')
        vars["displayURL"] = self.event.url
        start_dt_local = self.event.start_dt_display.astimezone(self.event.display_tzinfo)
        end_dt_local = self.event.end_dt_display.astimezone(self.event.display_tzinfo)
        vars["timezone"] = self.event.display_tzinfo.zone
        vars["confDateInterval"] = _("from {start} to {end}").format(start=format_date(start_dt_local, format='long'),
                                                                     end=format_date(end_dt_local, format='long'))
        if start_dt_local.strftime("%d%B%Y") == end_dt_local.strftime("%d%B%Y"):
            vars["confDateInterval"] = format_date(start_dt_local, format='long')
        elif start_dt_local.strftime("%B%Y") == end_dt_local.strftime("%B%Y"):
            vars["confDateInterval"] = "%s-%s %s" % (start_dt_local.day, end_dt_local.day,
                                                     format_date(start_dt_local, format='MMMM yyyy'))
        vars["confLocation"] = self.event.venue_name
        vars["body"] = self._body
        vars['menu'] = menu_entries_for_event(self.event)

        vars["bgColorCode"] = layout_settings.get(self._conf, 'header_background_color').replace("#", "")
        vars["textColorCode"] = layout_settings.get(self._conf, 'header_text_color').replace("#", "")

        vars["confId"] = self._conf.id
        vars["conf"] = self._conf
        return vars
예제 #7
0
파일: calendar.py 프로젝트: qroques/indico
 def blocking_data(self):
     if self.blocking:
         return {
             'id':
             self.blocking.id,
             'creator':
             self.blocking.created_by_user.full_name,
             'reason':
             self.blocking.reason,
             'blocking_url':
             url_for('rooms.blocking_details',
                     blocking_id=self.blocking.id),
             'type':
             'blocking'
         }
     elif self.nb_period:
         return {
             'id':
             None,
             'creator':
             None,
             'reason':
             'Unavailable from {0} until {1}.'.format(
                 format_date(self.nb_period.start_dt),
                 format_date(self.nb_period.end_dt)),
             'blocking_url':
             None,
             'type':
             'nonbookable'
         }
     return None
예제 #8
0
class IRegFormAccommodationFossil(IFossil):
    def getArrivalDate(self):
        """
        Get arrival dates
        """

    getArrivalDate.convert = lambda x: format_date(x, "dd-MM-yyyy")

    def getDepartureDate(self):
        """
        Get departure dates
        """

    getDepartureDate.convert = lambda x: format_date(x, "dd-MM-yyyy")

    def getAccommodationType(self):
        """
        Get accommodation type
        """

    getAccommodationType.result = IRegFormAccommodationTypeItemFossil

    def getPrice(self):
        """
        Accommodation price
        """

    def isBillable(self):
        """
        Accommodation billability
        """

    isBillable.name = 'billable'
예제 #9
0
    def getVars(self):
        vars = wcomponents.WTemplated.getVars(self)
        vars['timezone'] = self._conf.as_event.display_tzinfo.zone

        description = self._conf.as_event.description.encode('utf-8')
        vars["description_html"] = isStringHTML(description)
        vars["description"] = description

        event = self._conf.as_event
        start_dt_local = event.start_dt_display.astimezone(
            event.display_tzinfo)
        end_dt_local = event.end_dt_display.astimezone(event.display_tzinfo)

        fsdate, fedate = format_date(
            start_dt_local, format='medium'), format_date(end_dt_local,
                                                          format='medium')
        fstime, fetime = start_dt_local.strftime(
            "%H:%M"), end_dt_local.strftime("%H:%M")

        vars["dateInterval"] = (fsdate, fstime, fedate, fetime)

        vars["address"] = None
        vars["room"] = None

        vars["attachments"] = self._conf.as_event.attached_items
        vars["conf"] = self._conf
        vars["event"] = self._conf.as_event

        info = self._conf.as_event.additional_info
        vars["moreInfo_html"] = isStringHTML(info)
        vars["moreInfo"] = info
        vars["actions"] = ''
        vars["isSubmitter"] = self._conf.as_event.can_manage(
            session.user, 'submit')
        return vars
예제 #10
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
예제 #11
0
파일: utils.py 프로젝트: bkolobara/indico
def formatDate(date, showWeek=False, format=None, locale=None, timezone=None):
    week = ""
    if showWeek:
        week = "EEE "
    if not format:
        return format_date(date, week+'d/M/yyyy', locale=locale, timezone=timezone)
    else:
        return format_date(date, format, locale=locale, timezone=timezone)
예제 #12
0
파일: utils.py 프로젝트: Ictp/indico
def formatDate(date, showWeek=False, format=None, locale=None):
    week = ""
    if showWeek:
        week = "EEE "
    if not format:
        return format_date(date, week+'d/M/yyyy', locale=locale).encode('utf-8')
    else:
        return format_date(date, format, locale=locale).encode('utf-8')
예제 #13
0
def formatDate(date, showWeek=False, format=None, locale=None):
    week = ""
    if showWeek:
        week = "EEE "
    if not format:
        return format_date(date, week + 'd/M/yyyy', locale=locale)
    else:
        return format_date(date, format, locale=locale)
예제 #14
0
 def render(cls, event):
     start_dt, end_dt = event.start_dt_local, event.end_dt_local
     interval = _('{} to {}').format(format_date(start_dt, format='long'), format_date(end_dt, format='long'))
     if start_dt.date() == end_dt.date():
         interval = format_datetime(start_dt)
     elif start_dt.date().replace(day=1) == end_dt.date().replace(day=1):
         interval = '{} - {} {}'.format(start_dt.day, end_dt.day, format_date(start_dt, format='MMMM yyyy'))
     return interval
예제 #15
0
파일: excel.py 프로젝트: NIIF/indico
    def getExcelFile(self):
        excelGen = ExcelGenerator()
        for key in self._displayList:
            excelGen.addValue(key)

        excelGen.newLine()

        if self._abstractList is None:
            self._abstractList = self._conf.getAbstractMgr().getAbstractList()

        for abstract in self._abstractList:
            for key in self._displayList:
                status = abstract.getCurrentStatus()
                isStatusAccpeted = isinstance(status, (AbstractStatusAccepted, AbstractStatusProposedToAccept))
                if key == "ID":
                    excelGen.addValue(abstract.getId())
                elif key == "Title":
                    excelGen.addValue(abstract.getTitle())
                elif key == "PrimaryAuthor":
                    paList = []
                    for pa in abstract.getPrimaryAuthorList():
                        paList.append(pa.getFullName())
                    excelGen.addValue("; ".join(paList))
                elif key == "Tracks":
                    trList = []
                    for tr in abstract.getTrackList():
                        trList.append(tr.getTitle())
                    excelGen.addValue("; ".join(trList))
                elif key == "Type":
                    contribType = abstract.getContribType()
                    ctname = ""
                    if contribType is not None:
                        ctname = contribType.getName()
                    excelGen.addValue(ctname)
                elif key == "Status":
                    excelGen.addValue(AbstractStatusList.getInstance().getCaption(status.__class__))
                elif key == "Rating":
                    if abstract.getRating():
                        excelGen.addValue("%.2f" % abstract.getRating())
                    else:
                        excelGen.addNumberAsString("-", self._excelSpecific)
                elif key == "AccTrack":
                    accTrack = ""
                    if isStatusAccpeted and status.getTrack():
                        accTrack = status.getTrack().getCode()
                    excelGen.addValue(accTrack)
                elif key == "AccType":
                    accType = ""
                    if isStatusAccpeted and status.getType():
                        accType = status.getType().getName()
                    excelGen.addValue(accType)
                elif key == "SubmissionDate":
                    excelGen.addValue(format_date(abstract.getSubmissionDate(), format="short"))
                elif key == "ModificationDate":
                    excelGen.addValue(format_date(abstract.getModificationDate(), format="short"))

            excelGen.newLine()
        return excelGen.getExcelContent()
예제 #16
0
파일: meeting.py 프로젝트: vstitches/indico
 def getVars(self):
     vars = wcomponents.WTemplated.getVars(self)
     vars["title"] = self.__conf.getTitle()
     vars["meetingIcon"] = Configuration.Config.getInstance().getSystemIconURL("meetingIcon")
     vars["modifyIcon"] = ""
     if self.__conf.canModify(self.__aw):
         vars[
             "modifyIcon"
         ] = """<a href="%s"><img src="%s" border="0" alt="Jump to the modification interface"></a>
                              """ % (
             vars["modifyURL"],
             Configuration.Config.getInstance().getSystemIconURL("modify"),
         )
     vars["description"] = self.__getHTMLRow(_("Description"), self.__conf.getDescription())
     vars["location"] = ""
     location = self.__conf.getLocation()
     if location:
         vars["location"] = self.__getHTMLRow(
             _("Location"), "%s<br>%s" % (location.getName(), location.getAddress())
         )
     vars["room"] = ""
     room = self.__conf.getRoom()
     if room:
         roomLink = linking.RoomLinker().getHTMLLink(room, location)
         vars["room"] = self.__getHTMLRow(_("Room"), roomLink)
     sdate, edate = self.__conf.getStartDate(), self.__conf.getEndDate()
     fsdate, fedate = format_date(sdate, format="long"), format_date(edate, format="long")
     fstime, fetime = sdate.strftime("%H:%M"), edate.strftime("%H:%M")
     vars["dateInterval"] = i18nformat("""_("from") %s %s _("to") %s %s""") % (fsdate, fstime, fedate, fetime)
     if sdate.strftime("%d%B%Y") == edate.strftime("%d%B%Y"):
         timeInterval = fstime
         if sdate.strftime("%H%M") != edate.strftime("%H%M"):
             timeInterval = "%s-%s" % (fstime, fetime)
         vars["dateInterval"] = "%s (%s)" % (fsdate, timeInterval)
     vars["startDate"] = sdate
     vars["endDate"] = edate
     vars["moreInfo"] = self.__getHTMLRow(_("Additional Info"), self.__conf.getContactInfo())
     chairs = []
     if self.__conf.getChairmanText() != "":
         chairs.append(self.__conf.getChairmanText())
     for chair in self.__conf.getChairList():
         chairs.append('<a href="mailto: %s">%s</a>' % (chair.getEmail(), chair.getFullName()))
     vars["chairs"] = self.__getHTMLRow(_("Chairmen"), "; ".join(chairs))
     ml = []
     for mat in self.__conf.getAllMaterialList():
         str = wcomponents.WMaterialDisplayItem().getHTML(self.__aw, mat, vars["materialURL"](mat))
         if str == "":
             continue
         ml.append(str)
     vars["material"] = self.__getHTMLRow(_("Material"), "<br>".join(ml))
     vars["schedule"] = self.__getSchedule(
         vars["sessionModifyURLGen"],
         vars["contribModifyURLGen"],
         vars["materialURL"],
         vars["subContribModifyURLGen"],
     )
     return vars
예제 #17
0
 def getValue(cls, conf):
     adjusted_sDate = conf.getAdjustedStartDate()
     adjusted_eDate = conf.getAdjustedEndDate()
     confDateInterval = _("%s to %s") % (format_date(adjusted_sDate, format='long'), format_date(adjusted_eDate, format='long'))
     if adjusted_sDate.strftime("%d%B%Y") == \
             adjusted_eDate.strftime("%d%B%Y"):
         confDateInterval = format_date(adjusted_sDate, format='long')
     elif adjusted_sDate.strftime("%B%Y") == adjusted_eDate.strftime("%B%Y"):
         confDateInterval = "%s-%s %s" % (adjusted_sDate.day, adjusted_eDate.day, format_date(adjusted_sDate, format='MMMM yyyy'))
     return confDateInterval
예제 #18
0
 def render(cls, event):
     start_dt, end_dt = event.start_dt_local, event.end_dt_local
     interval = _("{} to {}").format(to_unicode(format_date(start_dt, format='long')),
                                     to_unicode(format_date(end_dt, format='long')))
     if start_dt.date() == end_dt.date():
         interval = to_unicode(format_datetime(start_dt))
     elif start_dt.date().replace(day=1) == end_dt.date().replace(day=1):
         interval = "{} - {} {}".format(start_dt.day, end_dt.day,
                                        to_unicode(format_date(start_dt, format='MMMM yyyy')))
     return interval
예제 #19
0
 def getVars(self):
     vars = wcomponents.WTemplated.getVars(self)
     tzUtil = timezoneUtils.DisplayTZ(self._aw, self._conf)
     tz = tzUtil.getDisplayTZ()
     sdate = self._conf.getStartDate().astimezone(timezone(tz))
     edate = self._conf.getEndDate().astimezone(timezone(tz))
     fsdate, fedate = format_date(sdate,
                                  format='full'), format_date(edate,
                                                              format='full')
     fstime, fetime = sdate.strftime("%H:%M"), edate.strftime("%H:%M")
     if sdate.strftime("%Y%B%d") == edate.strftime("%Y%B%d"):
         timeInterval = fstime
         if sdate.strftime("%H%M") != edate.strftime("%H%M"):
             timeInterval = "%s - %s" % (fstime, fetime)
         vars["dateInterval"] = "<b>%s (%s) (%s)</b>" % (fsdate,
                                                         timeInterval, tz)
     else:
         vars["dateInterval"] = "from <b>%s (%s)</b> to <b>%s (%s) (%s)</b>"%(\
                             fsdate, fstime, fedate, fetime, tz)
     vars["title"] = self._conf.getTitle()
     vars["description"] = self.__getHTMLRow(_("Description"),
                                             self._conf.getDescription(), 0)
     vars["location"] = ""
     location = self._conf.getLocation()
     if location:
         vars["location"] = self.__getHTMLRow(
             _("Location"), "%s<br><small>%s</small>" %
             (location.getName(), location.getAddress()))
     vars["room"] = ""
     room = self._conf.getRoom()
     if room:
         roomLink = linking.RoomLinker().getHTMLLink(room, location)
         vars["room"] = self.__getHTMLRow(_("Room"), roomLink)
     vars["moreInfo"] = self.__getHTMLRow(_("Additional Info"),
                                          self._conf.getContactInfo(), 0)
     ml = []
     for mat in self._conf.getAllMaterialList():
         ml.append( wcomponents.WMaterialDisplayItem().getHTML(\
                                             self._aw, mat, \
                                             vars["materialURLGen"](mat) ) )
     vars["material"] = self.__getHTMLRow(_("Material"), "<br>".join(ml), 0)
     al = []
     if self._conf.getChairmanText() != "":
         al.append(self._conf.getChairmanText())
     for organiser in self._conf.getChairList():
         al.append( """<a href="mailto:%s">%s</a>"""%(organiser.getEmail(),\
                                                  organiser.getFullName() ) )
     vars["contact"] = self.__getHTMLRow("Contact", "<br>".join(al), 0)
     vars["modifyItem"] = ""
     if self._conf.canModify(self._aw):
         vars[
             "modifyItem"] = """<a href="%s"><img src="%s" border="0" alt="Jump to the modification interface"></a> """ % (
                 vars["modifyURL"], Configuration.Config.getInstance(
                 ).getSystemIconURL("popupMenu"))
     return vars
예제 #20
0
 def getVars(self):
     vars = wcomponents.WTemplated.getVars(self)
     vars["title"] = self.__session.getTitle()
     vars["description"] = self.__session.getDescription()
     conf = self.__session.getConference()
     vars["location"] = ""
     location = self.__session.getOwnLocation()
     if location:
         vars["location"] = self.__getHTMLRow(
             _("Location"),
             "%s<br>%s" % (location.getName(), location.getAddress()))
     vars["room"] = ""
     room = self.__session.getOwnRoom()
     if room:
         location = self.__session.getLocation()
         roomLink = linking.RoomLinker().getHTMLLink(room, location)
         vars["room"] = self.__getHTMLRow("Room", roomLink)
     vars["startDate"] = format_date(self.__session.getStartDate(),
                                     format='full')
     vars["startTime"] = self.__session.getStartDate().strftime("%H:%M")
     vars["endDate"] = format_date(self.__session.getEndDate(),
                                   format='full')
     vars["endTime"] = self.__session.getEndDate().strftime("%H:%M")
     if vars["startDate"] == vars["endDate"]:
         vars["dateInterval"] = "%s (%s -> %s)"%(vars["startDate"],\
                                                 vars["startTime"],\
                                                 vars["endTime"] )
         if conf.getStartDate().strftime("%d%B%Y") == \
                     self.__session.getStartDate().strftime("%d%B%Y") and \
                         conf.getEndDate().strftime("%d%B%Y") == \
                             self.__session.getEndDate().strftime("%d%B%Y"):
             vars["dateInterval"] = "%s -> %s"%( vars["startTime"],\
                                                 vars["endTime"] )
     else:
         vars["dateInterval"] = "%s %s -> %s %s"%(vars["startDate"],\
                                                 vars["startTime"],\
                                                 vars["endDate"],\
                                                 vars["endTime"] )
     vars["modifyURL"] = self.__modifyURLGen(self.__session)
     vars["conveners"] = self.__getConvenersHTML(
         self.__session.getConvenerList())
     vars["modifyItem"] = ""
     if self.__session.canModify(self.__aw):
         vars[
             "modifyItem"] = """<a href="%s"><img src="%s" border="0" alt="Jump to the modification interface"></a> """ % (
                 self.__modifyURLGen(self.__session),
                 Configuration.Config.getInstance().getSystemIconURL(
                     "modify"))
     vars["expandIcon"] = ""
     vars["schedule"] = self.__getSchedule(self.__contribModifyURLGen, \
                                           self.__materialURLGen,
                                           self.__subContribModifyURLGen )
     vars["material"] = self.__getMaterialHTML(
         self.__session.getAllMaterialList())
     return vars
예제 #21
0
def generate_csv_from_registrations(registrations, regform_items, special_items):
    """Generates a CSV file from a given registration list.

    :param registrations: The list of registrations to include in the file
    :param regform_items: The registration form items to be used as columns
    :param special_items: Registration form information as extra columns
    """

    field_names = ['ID', 'Name']
    special_item_mapping = OrderedDict([
        ('reg_date', ('Registration date', lambda x: format_datetime(x.submitted_dt))),
        ('state', ('Registration state', lambda x: x.state.title)),
        ('price', ('Price', lambda x: x.render_price())),
        ('checked_in', ('Checked in', lambda x: 'Yes' if x.checked_in else 'No')),
        ('checked_in_date', ('Check-in date', lambda x: format_datetime(x.checked_in_dt) if x.checked_in else ''))
    ])
    for item in regform_items:
        field_names.append('{}_{}'.format(item.title.encode('utf-8'), item.id))
        if item.input_type == 'accommodation':
            field_names.append('{}_{}_{}'.format(item.title.encode('utf-8'), 'Arrival', item.id))
            field_names.append('{}_{}_{}'.format(item.title.encode('utf-8'), 'Departure', item.id))
    field_names.extend(title for name, (title, fn) in special_item_mapping.iteritems() if name in special_items)
    buf = BytesIO()
    writer = csv.DictWriter(buf, fieldnames=field_names)
    writer.writeheader()
    for registration in registrations:
        data = registration.data_by_field
        registration_dict = {
            'ID': registration.friendly_id,
            'Name': "{} {}".format(registration.first_name, registration.last_name).encode('utf-8')
        }
        for item in regform_items:
            key = '{}_{}'.format(item.title.encode('utf-8'), item.id)
            if item.input_type == 'accommodation':
                registration_dict[key] = _prepare_data(data[item.id].friendly_data.get('choice')
                                                       if item.id in data else '')
                key = '{}_{}_{}'.format(item.title.encode('utf-8'), 'Arrival', item.id)
                arrival_date = data[item.id].friendly_data.get('arrival_date') if item.id in data else None
                registration_dict[key] = _prepare_data(format_date(arrival_date) if arrival_date else '')
                key = '{}_{}_{}'.format(item.title.encode('utf-8'), 'Departure', item.id)
                departure_date = data[item.id].friendly_data.get('departure_date') if item.id in data else None
                registration_dict[key] = _prepare_data(format_date(departure_date) if departure_date else '')
            else:
                registration_dict[key] = _prepare_data(data[item.id].friendly_data if item.id in data else '')
        for name, (title, fn) in special_item_mapping.iteritems():
            if name not in special_items:
                continue
            value = fn(registration)
            if isinstance(value, unicode):
                value = value.encode('utf-8')
            registration_dict[title] = value
        writer.writerow(registration_dict)
    buf.seek(0)
    return buf
예제 #22
0
 def fn(event):
     tzinfo = category.display_tzinfo
     start_dt = event.start_dt.astimezone(tzinfo)
     end_dt = event.end_dt.astimezone(tzinfo)
     if start_dt.year != end_dt.year:
         return '{} - {}'.format(format_date(start_dt, timezone=tzinfo),
                                 format_date(end_dt, timezone=tzinfo))
     elif (start_dt.month != end_dt.month) or (start_dt.day != end_dt.day):
         return '{} - {}'.format(format_date(start_dt, day_month, timezone=tzinfo),
                                 format_date(end_dt, day_month, timezone=tzinfo))
     else:
         return format_date(start_dt, day_month, timezone=tzinfo)
예제 #23
0
파일: display.py 프로젝트: fph/indico
 def format_event_date(self, event):
     day_month = 'dd MMM'
     tzinfo = self.category.display_tzinfo
     start_dt = event.start_dt.astimezone(tzinfo)
     end_dt = event.end_dt.astimezone(tzinfo)
     if start_dt.year != end_dt.year:
         return '{} - {}'.format(format_date(start_dt, timezone=tzinfo), format_date(end_dt, timezone=tzinfo))
     elif (start_dt.month != end_dt.month) or (start_dt.day != end_dt.day):
         return '{} - {}'.format(format_date(start_dt, day_month, timezone=tzinfo),
                                 format_date(end_dt, day_month, timezone=tzinfo))
     else:
         return format_date(start_dt, day_month, timezone=tzinfo)
예제 #24
0
 def format_event_date(self, event):
     day_month = 'dd MMM'
     tzinfo = self.category.display_tzinfo
     start_dt = event.start_dt.astimezone(tzinfo)
     end_dt = event.end_dt.astimezone(tzinfo)
     if start_dt.year != end_dt.year:
         return '{} - {}'.format(to_unicode(format_date(start_dt, timezone=tzinfo)),
                                 to_unicode(format_date(end_dt, timezone=tzinfo)))
     elif (start_dt.month != end_dt.month) or (start_dt.day != end_dt.day):
         return '{} - {}'.format(to_unicode(format_date(start_dt, day_month, timezone=tzinfo)),
                                 to_unicode(format_date(end_dt, day_month, timezone=tzinfo)))
     else:
         return to_unicode(format_date(start_dt, day_month, timezone=tzinfo))
예제 #25
0
def generate_spreadsheet_from_registrations(registrations, regform_items, static_items):
    """Generate a spreadsheet data from a given registration list.

    :param registrations: The list of registrations to include in the file
    :param regform_items: The registration form items to be used as columns
    :param static_items: Registration form information as extra columns
    """
    field_names = ['ID', 'Name']
    special_item_mapping = {
        'reg_date': ('Registration date', lambda x: x.submitted_dt),
        'state': ('Registration state', lambda x: x.state.title),
        'price': ('Price', lambda x: x.render_price()),
        'checked_in': ('Checked in', lambda x: x.checked_in),
        'checked_in_date': ('Check-in date', lambda x: x.checked_in_dt if x.checked_in else ''),
        'payment_date': ('Payment date', lambda x: (x.transaction.timestamp
                                                    if (x.transaction is not None and
                                                        x.transaction.status == TransactionStatus.successful)
                                                    else '')),
    }
    for item in regform_items:
        field_names.append(unique_col(item.title, item.id))
        if item.input_type == 'accommodation':
            field_names.append(unique_col('{} ({})'.format(item.title, 'Arrival'), item.id))
            field_names.append(unique_col('{} ({})'.format(item.title, 'Departure'), item.id))
    field_names.extend(title for name, (title, fn) in special_item_mapping.items() if name in static_items)
    rows = []
    for registration in registrations:
        data = registration.data_by_field
        registration_dict = {
            'ID': registration.friendly_id,
            'Name': f"{registration.first_name} {registration.last_name}"
        }
        for item in regform_items:
            key = unique_col(item.title, item.id)
            if item.input_type == 'accommodation':
                registration_dict[key] = data[item.id].friendly_data.get('choice') if item.id in data else ''
                key = unique_col('{} ({})'.format(item.title, 'Arrival'), item.id)
                arrival_date = data[item.id].friendly_data.get('arrival_date') if item.id in data else None
                registration_dict[key] = format_date(arrival_date) if arrival_date else ''
                key = unique_col('{} ({})'.format(item.title, 'Departure'), item.id)
                departure_date = data[item.id].friendly_data.get('departure_date') if item.id in data else None
                registration_dict[key] = format_date(departure_date) if departure_date else ''
            else:
                registration_dict[key] = data[item.id].friendly_data if item.id in data else ''
        for name, (title, fn) in special_item_mapping.items():
            if name not in static_items:
                continue
            value = fn(registration)
            registration_dict[title] = value
        rows.append(registration_dict)
    return field_names, rows
예제 #26
0
파일: util.py 프로젝트: bkolobara/indico
def generate_spreadsheet_from_registrations(registrations, regform_items, static_items):
    """Generates a spreadsheet data from a given registration list.

    :param registrations: The list of registrations to include in the file
    :param regform_items: The registration form items to be used as columns
    :param static_items: Registration form information as extra columns
    """
    field_names = ['ID', 'Name']
    special_item_mapping = OrderedDict([
        ('reg_date', ('Registration date', lambda x: x.submitted_dt)),
        ('state', ('Registration state', lambda x: x.state.title)),
        ('price', ('Price', lambda x: x.render_price())),
        ('checked_in', ('Checked in', lambda x: x.checked_in)),
        ('checked_in_date', ('Check-in date', lambda x: x.checked_in_dt if x.checked_in else '')),
        ('payment_date', ('Payment date', lambda x: (x.transaction.timestamp
                                                     if (x.transaction is not None and
                                                         x.transaction.status == TransactionStatus.successful)
                                                     else '')))
    ])
    for item in regform_items:
        field_names.append(unique_col(item.title, item.id))
        if item.input_type == 'accommodation':
            field_names.append(unique_col('{} ({})'.format(item.title, 'Arrival'), item.id))
            field_names.append(unique_col('{} ({})'.format(item.title, 'Departure'), item.id))
    field_names.extend(title for name, (title, fn) in special_item_mapping.iteritems() if name in static_items)
    rows = []
    for registration in registrations:
        data = registration.data_by_field
        registration_dict = {
            'ID': registration.friendly_id,
            'Name': "{} {}".format(registration.first_name, registration.last_name)
        }
        for item in regform_items:
            key = unique_col(item.title, item.id)
            if item.input_type == 'accommodation':
                registration_dict[key] = data[item.id].friendly_data.get('choice') if item.id in data else ''
                key = unique_col('{} ({})'.format(item.title, 'Arrival'), item.id)
                arrival_date = data[item.id].friendly_data.get('arrival_date') if item.id in data else None
                registration_dict[key] = format_date(arrival_date) if arrival_date else ''
                key = unique_col('{} ({})'.format(item.title, 'Departure'), item.id)
                departure_date = data[item.id].friendly_data.get('departure_date') if item.id in data else None
                registration_dict[key] = format_date(departure_date) if departure_date else ''
            else:
                registration_dict[key] = data[item.id].friendly_data if item.id in data else ''
        for name, (title, fn) in special_item_mapping.iteritems():
            if name not in static_items:
                continue
            value = fn(registration)
            registration_dict[title] = value
        rows.append(registration_dict)
    return field_names, rows
예제 #27
0
 def __init__(self, rh, event_, **kwargs):
     assert event_ == kwargs.setdefault('event', event_)
     self.event = event_
     WPDecorated.__init__(self, rh, **kwargs)
     start_dt_local = event_.start_dt_display.astimezone(event_.display_tzinfo)
     end_dt_local = event_.end_dt_display.astimezone(event_.display_tzinfo)
     dates = ' ({})'.format(to_unicode(format_date(start_dt_local, format='long')))
     if start_dt_local.date() != end_dt_local.date():
         if start_dt_local.year == end_dt_local.year and start_dt_local.month == end_dt_local.month:
             dates = ' ({}-{})'.format(start_dt_local.day, to_unicode(format_date(end_dt_local, format='long')))
         else:
             dates = ' ({} - {})'.format(to_unicode(format_date(start_dt_local, format='long')),
                                         to_unicode(format_date(end_dt_local, format='long')))
     self.title = '{} {}'.format(strip_tags(self.event.title), dates)
예제 #28
0
파일: choices.py 프로젝트: indico/indico
 def unprocess_field_data(cls, versioned_data, unversioned_data):
     data = {}
     arrival_date_from = _to_date(unversioned_data['arrival_date_from'])
     arrival_date_to = _to_date(unversioned_data['arrival_date_to'])
     departure_date_from = _to_date(unversioned_data['departure_date_from'])
     departure_date_to = _to_date(unversioned_data['departure_date_to'])
     data['arrival_dates'] = [(dt.date().isoformat(), format_date(dt))
                              for dt in iterdays(arrival_date_from, arrival_date_to)]
     data['departure_dates'] = [(dt.date().isoformat(), format_date(dt))
                                for dt in iterdays(departure_date_from, departure_date_to)]
     items = deepcopy(versioned_data['choices'])
     for item in items:
         item['caption'] = unversioned_data['captions'][item['id']]
     data['choices'] = items
     return data
예제 #29
0
 def unprocess_field_data(cls, versioned_data, unversioned_data):
     data = {}
     arrival_date_from = _to_date(unversioned_data['arrival_date_from'])
     arrival_date_to = _to_date(unversioned_data['arrival_date_to'])
     departure_date_from = _to_date(unversioned_data['departure_date_from'])
     departure_date_to = _to_date(unversioned_data['departure_date_to'])
     data['arrival_dates'] = [(dt.date().isoformat(), format_date(dt))
                              for dt in iterdays(arrival_date_from, arrival_date_to)]
     data['departure_dates'] = [(dt.date().isoformat(), format_date(dt))
                                for dt in iterdays(departure_date_from, departure_date_to)]
     items = deepcopy(versioned_data['choices'])
     for item in items:
         item['caption'] = unversioned_data['captions'][item['id']]
     data['choices'] = items
     return data
예제 #30
0
 def __init__(self, rh, event_, **kwargs):
     assert event_ == kwargs.setdefault('event', event_)
     WPDecorated.__init__(self, rh, **kwargs)
     self._navigationTarget = self._conf = event_.as_legacy
     self._tz = event_.display_tzinfo.zone
     start_dt_local = event_.start_dt_display.astimezone(event_.display_tzinfo)
     end_dt_local = event_.end_dt_display.astimezone(event_.display_tzinfo)
     dates = " (%s)" % format_date(start_dt_local, format='long')
     if start_dt_local.strftime("%d%B%Y") != end_dt_local.strftime("%d%B%Y"):
         if start_dt_local.strftime("%B%Y") == end_dt_local.strftime("%B%Y"):
             dates = " (%s-%s)" % (start_dt_local.strftime("%d"), format_date(end_dt_local, format='long'))
         else:
             dates = " (%s - %s)" % (format_date(start_dt_local, format='long'),
                                     format_date(end_dt_local, format='long'))
     self._setTitle("%s %s" % (strip_ml_tags(self._conf.as_event.title.encode('utf-8')), dates))
예제 #31
0
파일: meeting.py 프로젝트: vstitches/indico
 def getVars(self):
     vars = wcomponents.WTemplated.getVars(self)
     vars["title"] = self.__session.getTitle()
     vars["description"] = self.__session.getDescription()
     conf = self.__session.getConference()
     vars["location"] = ""
     location = self.__session.getOwnLocation()
     if location:
         vars["location"] = self.__getHTMLRow(
             _("Location"), "%s<br>%s" % (location.getName(), location.getAddress())
         )
     vars["room"] = ""
     room = self.__session.getOwnRoom()
     if room:
         location = self.__session.getLocation()
         roomLink = linking.RoomLinker().getHTMLLink(room, location)
         vars["room"] = self.__getHTMLRow("Room", roomLink)
     vars["startDate"] = format_date(self.__session.getStartDate(), format="full")
     vars["startTime"] = self.__session.getStartDate().strftime("%H:%M")
     vars["endDate"] = format_date(self.__session.getEndDate(), format="full")
     vars["endTime"] = self.__session.getEndDate().strftime("%H:%M")
     if vars["startDate"] == vars["endDate"]:
         vars["dateInterval"] = "%s (%s -> %s)" % (vars["startDate"], vars["startTime"], vars["endTime"])
         if conf.getStartDate().strftime("%d%B%Y") == self.__session.getStartDate().strftime(
             "%d%B%Y"
         ) and conf.getEndDate().strftime("%d%B%Y") == self.__session.getEndDate().strftime("%d%B%Y"):
             vars["dateInterval"] = "%s -> %s" % (vars["startTime"], vars["endTime"])
     else:
         vars["dateInterval"] = "%s %s -> %s %s" % (
             vars["startDate"],
             vars["startTime"],
             vars["endDate"],
             vars["endTime"],
         )
     vars["modifyURL"] = self.__modifyURLGen(self.__session)
     vars["conveners"] = self.__getConvenersHTML(self.__session.getConvenerList())
     vars["modifyItem"] = ""
     if self.__session.canModify(self.__aw):
         vars["modifyItem"] = (
             """<a href="%s"><img src="%s" border="0" alt="Jump to the modification interface"></a> """
             % (self.__modifyURLGen(self.__session), Configuration.Config.getInstance().getSystemIconURL("modify"))
         )
     vars["expandIcon"] = ""
     vars["schedule"] = self.__getSchedule(
         self.__contribModifyURLGen, self.__materialURLGen, self.__subContribModifyURLGen
     )
     vars["material"] = self.__getMaterialHTML(self.__session.getAllMaterialList())
     return vars
 def run(self):
     """Perform the rescheduling."""
     if self.fit_blocks:
         self._fit_blocks()
     if self.mode == RescheduleMode.time:
         self._reschedule_time()
     elif self.mode == RescheduleMode.duration:
         self._reschedule_duration()
     db.session.flush()
     self.event.log(
         EventLogRealm.management,
         EventLogKind.change,
         'Timetable',
         "Entries rescheduled",
         session.user,
         data={
             'Mode':
             self.mode.title,
             'Day':
             format_date(self.day, locale='en_GB'),
             'Fit Blocks':
             self.fit_blocks,
             'Gap':
             format_human_timedelta(self.gap) if self.gap else None,
             'Session':
             self.session.title if self.session else None,
             'Session block':
             self.session_block.full_title if self.session_block else None
         })
예제 #33
0
 def render_placeholder(self, data, key=None):
     mapping = {'name': 'choice',
                'nights': 'nights',
                'arrival': 'arrival_date',
                'departure': 'departure_date'}
     rv = self.get_friendly_data(data).get(mapping[key], '')
     return format_date(rv) if isinstance(rv, date) else rv
예제 #34
0
파일: display.py 프로젝트: indico/indico
 def format_event_date(self, event):
     day_month = "dd MMM"
     tzinfo = self.category.display_tzinfo
     start_dt = event.start_dt.astimezone(tzinfo)
     end_dt = event.end_dt.astimezone(tzinfo)
     if start_dt.year != end_dt.year:
         return "{} - {}".format(
             to_unicode(format_date(start_dt, timezone=tzinfo)), to_unicode(format_date(end_dt, timezone=tzinfo))
         )
     elif (start_dt.month != end_dt.month) or (start_dt.day != end_dt.day):
         return "{} - {}".format(
             to_unicode(format_date(start_dt, day_month, timezone=tzinfo)),
             to_unicode(format_date(end_dt, day_month, timezone=tzinfo)),
         )
     else:
         return to_unicode(format_date(start_dt, day_month, timezone=tzinfo))
예제 #35
0
    def _process(self):
        config = Config.getInstance()

        # QRCode (Version 6 with error correction L can contain up to 106 bytes)
        qr = qrcode.QRCode(version=6,
                           error_correction=qrcode.constants.ERROR_CORRECT_M,
                           box_size=4,
                           border=1)

        checkin_app_client_id = config.getCheckinAppClientId()
        checkin_app = OAuthApplication.find_first(
            client_id=checkin_app_client_id)

        qr_data = {
            "event_id": self.event_new.id,
            "title": self.event_new.title,
            "date": format_date(self.event_new.start_dt_local
                                ),  # XXX: switch to utc+isoformat?
            "server": {
                "baseUrl": config.getBaseURL(),
                "consumerKey": checkin_app.client_id,
                "auth_url": url_for('oauth.oauth_authorize', _external=True),
                "token_url": url_for('oauth.oauth_token', _external=True)
            }
        }
        json_qr_data = json.dumps(qr_data)
        qr.add_data(json_qr_data)
        qr.make(fit=True)
        qr_img = qr.make_image()

        output = BytesIO()
        qr_img.save(output)
        output.seek(0)

        return send_file('config.png', output, 'image/png')
예제 #36
0
    def pack(self, materialTypes=[], days=[], mainResource=False, fromDate="", fileHandler=None, sessions=[]):
        if fromDate != "":
            [day, month, year] = fromDate.split(" ")
            fromDate = datetime(int(year), int(month), int(day))

        di = self._conf.getSchedule().getAdjustedStartDate()
        confED = self._conf.getSchedule().getAdjustedEndDate()
        ed = confED.replace(hour=23, minute=59, second=59)
        while di <= ed:
            entries = self._conf.getSchedule().getEntriesOnDay(di)
            if len(entries) > 0:
                dirName = "%s" % di.strftime("%Y%m%d_%A")
                for entry in entries:
                    if isinstance(entry, schedule.LinkedTimeSchEntry) and isinstance(entry.getOwner(), conference.Contribution):
                        if format_date(di, format='dMMMMyyyy') in days:
                            contrib = entry.getOwner()
                            self._packContrib(contrib, dirName, "", materialTypes, days, mainResource, fromDate, fileHandler)
                            for subcontrib in contrib.getSubContributionList():
                                self._packSubContrib(subcontrib, dirName, "", materialTypes, days, mainResource, fromDate, fileHandler)
                    elif isinstance(entry, schedule.LinkedTimeSchEntry) and isinstance(entry.getOwner(), conference.SessionSlot) \
                            and (entry.getOwner().getSession().getId() in sessions):
                        self._packSessionSlot(entry.getOwner(), dirName, materialTypes, days, mainResource, fromDate, fileHandler)
            di += timedelta(days=1)

        self._addMaterials(self._conf, "", "", "", "", materialTypes, mainResource, fromDate, fileHandler)

        fileHandler.close()
        return fileHandler.getPath()
예제 #37
0
파일: display.py 프로젝트: vintas/indico
 def _format_tuple(x):
     (year, month), events = x
     return {
         'name': format_date(date(year, month, 1), format='MMMM yyyy'),
         'events': list(events),
         'is_current': year == self.now.year and month == self.now.month
     }
예제 #38
0
파일: display.py 프로젝트: indico/indico
 def _format_tuple(x):
     (year, month), events = x
     return {
         "name": format_date(date(year, month, 1), format="MMMM yyyy"),
         "events": list(events),
         "is_current": year == self.now.year and month == self.now.month,
     }
예제 #39
0
파일: choices.py 프로젝트: mdoucet/indico
 def unprocess_field_data(cls, versioned_data, unversioned_data):
     data = {}
     arrival_date_from = _to_date(unversioned_data["arrival_date_from"])
     arrival_date_to = _to_date(unversioned_data["arrival_date_to"])
     departure_date_from = _to_date(unversioned_data["departure_date_from"])
     departure_date_to = _to_date(unversioned_data["departure_date_to"])
     data["arrival_dates"] = [
         (dt.date().isoformat(), format_date(dt)) for dt in iterdays(arrival_date_from, arrival_date_to)
     ]
     data["departure_dates"] = [
         (dt.date().isoformat(), format_date(dt)) for dt in iterdays(departure_date_from, departure_date_to)
     ]
     items = deepcopy(versioned_data["choices"])
     for item in items:
         item["caption"] = unversioned_data["captions"][item["id"]]
     data["choices"] = items
     return data
예제 #40
0
 def getVars( self ):
     vars = wcomponents.WTemplated.getVars( self )
     tzUtil = timezoneUtils.DisplayTZ(self._aw,self._conf)
     tz = tzUtil.getDisplayTZ()
     sdate = self._conf.getStartDate().astimezone(timezone(tz))
     edate = self._conf.getEndDate().astimezone(timezone(tz))
     fsdate, fedate = format_date(sdate, format='full'), format_date(edate, format='full')
     fstime, fetime = sdate.strftime("%H:%M"), edate.strftime("%H:%M")
     if sdate.strftime("%Y%B%d") == edate.strftime("%Y%B%d"):
         timeInterval = fstime
         if sdate.strftime("%H%M") != edate.strftime("%H%M"):
             timeInterval = "%s - %s"%(fstime, fetime)
         vars["dateInterval"] = "<b>%s (%s) (%s)</b>"%( fsdate, timeInterval, tz )
     else:
         vars["dateInterval"] = "from <b>%s (%s)</b> to <b>%s (%s) (%s)</b>"%(\
                             fsdate, fstime, fedate, fetime, tz)
     vars["title"] = self._conf.getTitle()
     vars["description"] =  self.__getHTMLRow(  _("Description"), self._conf.getDescription(), 0 )
     vars["location"] = ""
     location = self._conf.getLocation()
     if location:
         vars["location"] = self.__getHTMLRow(  _("Location"), "%s<br><small>%s</small>"%(location.getName(), location.getAddress()) )
     vars["room"] = ""
     room = self._conf.getRoom()
     if room:
         roomLink = linking.RoomLinker().getHTMLLink( room, location )
         vars["room"] = self.__getHTMLRow( _("Room"), roomLink )
     vars["moreInfo"] = self.__getHTMLRow(  _("Additional Info"), self._conf.getContactInfo(), 0 )
     ml = []
     for mat in self._conf.getAllMaterialList():
         ml.append( wcomponents.WMaterialDisplayItem().getHTML(\
                                             self._aw, mat, \
                                             vars["materialURLGen"](mat) ) )
     vars["material"] =  self.__getHTMLRow( _("Material"), "<br>".join(ml), 0)
     al = []
     if self._conf.getChairmanText() != "":
         al.append( self._conf.getChairmanText() )
     for organiser in self._conf.getChairList():
         al.append( """<a href="mailto:%s">%s</a>"""%(organiser.getEmail(),\
                                                  organiser.getFullName() ) )
     vars["contact"] = self.__getHTMLRow("Contact", "<br>".join( al ), 0 )
     vars["modifyItem"] = ""
     if self._conf.canModify( self._aw ):
         vars["modifyItem"] = """<a href="%s"><img src="%s" border="0" alt="Jump to the modification interface"></a> """%(vars["modifyURL"], Configuration.Config.getInstance().getSystemIconURL("popupMenu") )
     return vars
예제 #41
0
 def reject(self, user, reason, silent=False):
     self.is_rejected = True
     self.rejection_reason = reason
     if not silent:
         log = [u'Day rejected: {}'.format(format_date(self.date).decode('utf-8')),
                u'Reason: {}'.format(reason)]
         self.reservation.add_edit_log(ReservationEditLog(user_name=user.full_name, info=log))
         from indico.modules.rb.notifications.reservation_occurrences import notify_rejection
         notify_rejection(self)
예제 #42
0
def _group_by_date(object_list):
    objects_grouped_by_date = OrderedDict()
    for obj in object_list:
        date = to_unicode(format_date(obj.start_dt, format='full'))
        if date in objects_grouped_by_date:
            objects_grouped_by_date[date].append(obj)
        else:
            objects_grouped_by_date[date] = [obj]
    return objects_grouped_by_date
예제 #43
0
파일: choices.py 프로젝트: indico/indico
 def render_placeholder(self, data, key=None):
     mapping = {'name': 'choice',
                'nights': 'nights',
                'arrival': 'arrival_date',
                'departure': 'departure_date'}
     rv = self.get_friendly_data(data).get(mapping[key], '')
     if isinstance(rv, date):
         rv = format_date(rv).decode('utf-8')
     return rv
예제 #44
0
def _group_by_date(object_list):
    objects_grouped_by_date = {}
    for obj in object_list:
        date = format_date(obj.start_dt, format='full')
        if date in objects_grouped_by_date:
            objects_grouped_by_date[date].append(obj)
        else:
            objects_grouped_by_date[date] = [obj]
    return objects_grouped_by_date
예제 #45
0
class IRegFormAccommodationSectionFossil(IRegFormSectionBaseFossil):
    def getDescription(self):
        """
        Section description
        """

    def getArrivalOffsetDates(self):
        """
        Arrival offset dates
        """

    getArrivalOffsetDates.convert = lambda x: [-el for el in x]

    def getDepartureOffsetDates(self):
        """
        Departure offset dates
        """

    def getArrivalDates(self):
        """
        Get arrival dates
        """

    getArrivalDates.convert = lambda x: dict(
        (format_date(date, "dd-MM-yyyy"), format_date(date, "dd-MMMM-yyyy"))
        for date in x)

    def getDepartureDates(self):
        """
        Get departure dates
        """

    getDepartureDates.convert = lambda x: dict(
        (format_date(date, "dd-MM-yyyy"), format_date(date, "dd-MMMM-yyyy"))
        for date in x)

    def getAccommodationTypesList(self):
        """
        Accommodation types list
        """

    getAccommodationTypesList.name = 'items'
    getAccommodationTypesList.result = IRegFormAccommodationTypeItemFossil
예제 #46
0
 def blocking_data(self):
     if self.blocking:
         return {
             'id': self.blocking.id,
             'creator': self.blocking.created_by_user.full_name,
             'reason': self.blocking.reason,
             'blocking_url': url_for('rooms.blocking_details', blocking_id=self.blocking.id),
             'type': 'blocking'
         }
     elif self.nb_period:
         return {
             'id': None,
             'creator': None,
             'reason': 'Unavailable from {0} until {1}.'.format(format_date(self.nb_period.start_dt),
                                                                format_date(self.nb_period.end_dt)),
             'blocking_url': None,
             'type': 'nonbookable'
         }
     return None
 def cancel(self, user, reason=None, silent=False):
     self.is_cancelled = True
     self.rejection_reason = reason
     if not silent:
         log = [u'Day cancelled: {}'.format(format_date(self.date))]
         if reason:
             log.append(u'Reason: {}'.format(reason))
         self.reservation.add_edit_log(ReservationEditLog(user_name=user.getFullName(), info=log))
         from indico.modules.rb.notifications.reservation_occurrences import notify_cancellation
         notify_cancellation(self)
예제 #48
0
 def reject(self, user, reason, silent=False):
     self.state = ReservationOccurrenceState.rejected
     self.rejection_reason = reason or None
     signals.rb.booking_occurrence_state_changed.send(self)
     if not silent:
         log = ['Day rejected: {}'.format(format_date(self.date)),
                f'Reason: {reason}']
         self.reservation.add_edit_log(ReservationEditLog(user_name=user.full_name, info=log))
         from indico.modules.rb.notifications.reservation_occurrences import notify_rejection
         notify_rejection(self)
예제 #49
0
 def reject(self, user, reason, silent=False):
     self.state = ReservationOccurrenceState.rejected
     self.rejection_reason = reason or None
     signals.rb.booking_occurrence_state_changed.send(self)
     if not silent:
         log = [u'Day rejected: {}'.format(format_date(self.date).decode('utf-8')),
                u'Reason: {}'.format(reason)]
         self.reservation.add_edit_log(ReservationEditLog(user_name=user.full_name, info=log))
         from indico.modules.rb.notifications.reservation_occurrences import notify_rejection
         notify_rejection(self)
예제 #50
0
 def _getAnswer(self):
     if not self._start_dt or not self._end_dt:
         return None
     start_date = self._start_dt.date()
     end_date = self._end_dt.date()
     holidays = Holiday.find_all(Holiday.date.in_([start_date, end_date]))
     if holidays:
         return _(u'Holidays chosen: {0}'.format(', '.join(h.name or format_date(h.date) for h in holidays)))
     if is_weekend(start_date) or is_weekend(end_date):
         return _(u'Weekend chosen')
     return None
 def reject(self, user, reason, silent=False):
     self.is_rejected = True
     self.rejection_reason = reason
     if not silent:
         log = [u'Day rejected: {}'.format(format_date(self.date)),
                u'Reason: {}'.format(reason)]
         self.reservation.add_edit_log(ReservationEditLog(user_name=user.getFullName(), info=log))
         # Notification sent only when the reservation is still valid
         if self.reservation.occurrences.filter_by(is_valid=True).count():
             from indico.modules.rb.notifications.reservation_occurrences import notify_rejection
             notify_rejection(self)
예제 #52
0
    def _create_material(self, logs):
        folder = AttachmentFolder.find_first(object=self.event_new, is_default=False, title='Chat Logs',
                                             is_deleted=False)
        if folder is None:
            folder = AttachmentFolder(protection_mode=ProtectionMode.protected, linked_object=self.event_new,
                                      title='Chat Logs', description='Chat logs for this event')
            db.session.add(folder)

        filename = '{}.html'.format(secure_filename(self.material_name, 'logs'))
        attachment = Attachment(folder=folder, user=session.user, title=self.material_name, type=AttachmentType.file,
                                description="Chat logs for the chat room '{}'".format(self.chatroom.name))
        attachment.file = AttachmentFile(user=session.user, filename=filename, content_type='text/html')
        attachment.file.save(logs.encode('utf-8'))
        db.session.flush()
        signals.attachments.attachment_created.send(attachment, user=session.user)
        log_data = [
            ('Range', 'Everything' if not self.date_filter else
                      '{} - {}'.format(format_date(self.start_date), format_date(self.end_date))),
        ]
        self.event.log(EventLogRealm.management, EventLogKind.positive, 'Chat',
                       'Created material: {}'.format(filename), session.user, data=log_data)
예제 #53
0
    def getHTML( self ):
        res = []
        divs = []

        for day in self._month.getDayList():
            fulldate = "%s%02d%02d" % (self._month.getYear(),self._month.getMonthNumber(),day.getDayNumber())
            if day.getDayNumber() == 1:
                for i in range(day.getWeekDay()):
                    res.append("<td></td>")
            categs = day.getCategories()
            if len(categs)>1:
                colors = ["""
                <table cellspacing="0" cellpadding="0" border="0" align="left">
                <tr>"""]
                for categ in categs:
                    colors.append("""<td bgcolor="%s">&nbsp;</td>"""%self._categColors.getColor( categ ))
                colors.append("""
                </tr>
                </table>""")
                res.append( """<td align="right" bgcolor="%s"  onMouseOver="setOnAnchor('d%s')" onMouseOut="clearOnAnchor('d%s')">%s<span style="cursor: default;" id="a%s">%s</span></td>"""%( self._multipleColor, fulldate, fulldate, "\n".join(colors), fulldate, day.getDayNumber() ) )
                divs.append(self._getDiv(day))
            elif len(categs) == 1:
                res.append( """<td align="right" bgcolor="%s" onMouseOver="setOnAnchor('d%s')" onMouseOut="clearOnAnchor('d%s')"><span style="cursor: default;" id="a%s">%s</span></td>"""%( self._categColors.getColor( categs[0] ), fulldate, fulldate, fulldate, day.getDayNumber() ) )
                divs.append(self._getDiv(day))
            else:
                res.append( """<td align="right">%s</td>"""%day.getDayNumber() )
            if day.getWeekDay() == 6:
                res.append("""
                    </tr>
                    <tr>\n""")
        str = """
                <table cellspacing="1" cellpadding="5">
                    <tr>
                        <td colspan="7" align="center" style="font-size: 1.2em;">%s</b></td>
                    </tr>
                    <tr>
                      %s
                    </tr>
                    <tr>
                        %s
                    </tr>
                </table>
                %s
                """ % (format_date(self._month._date, 'MMM YYYY'),
                       ''.join(list('<td align="right" bgcolor="#CCCCCC">{}</td>'.format(
                               get_current_locale().weekday(wd)[:2]) for wd in xrange(0, 7))),
                       "\n".join(res), "\n".join(divs))

        return str
예제 #54
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
예제 #55
0
 def run(self):
     """Perform the rescheduling"""
     if self.fit_blocks:
         self._fit_blocks()
     if self.mode == RescheduleMode.time:
         self._reschedule_time()
     elif self.mode == RescheduleMode.duration:
         self._reschedule_duration()
     db.session.flush()
     self.event.log(EventLogRealm.management, EventLogKind.change, 'Timetable',
                    "Entries rescheduled", session.user,
                    data={'Mode': self.mode.title,
                          'Day': format_date(self.day, locale='en_GB'),
                          'Fit Blocks': self.fit_blocks,
                          'Gap': format_human_timedelta(self.gap) if self.gap else None,
                          'Session': self.session.title if self.session else None,
                          'Session block': self.session_block.full_title if self.session_block else None})