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
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
def __getVarsTextTpl(self, conf): tvars = {} tvars['entries'] = [] confSchedule = conf.getSchedule() entrylist = confSchedule.getEntries() for entry in entrylist: if type(entry) is schedule.BreakTimeSchEntry: newItem = entry else: newItem = entry.getOwner() tvars['entries'].append(newItem) tvars["conf"] = conf styleMgr = info.HelperMaKaCInfo.getMaKaCInfoInstance().getStyleManager() tvars['INCLUDE'] = os.path.join(styleMgr.getBaseTPLPath(), 'include') tvars['getTime'] = lambda date : format_time(date.time()) tvars['isTime0H0M'] = lambda date : (date.hour, date.minute) == (0,0) tvars['getDate'] = lambda date : format_date(date, format='yyyy-MM-dd') tvars['prettyDate'] = lambda date : format_date(date, format='full') tvars['getLocationInfo'] = lambda item: getLocationInfo(item, False) from MaKaC.conference import SessionSlot, AcceptedContribution tvars['getItemType'] = lambda item: "Break" if isinstance(item, schedule.BreakTimeSchEntry) \ else ("Session" if isinstance(item, SessionSlot) \ else ("Contribution" if isinstance(item, AcceptedContribution) \ else item.__class__.__name__)) return tvars
def 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
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
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
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'
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
def __getVarsTextTpl(self, conf): tvars = {} tvars['entries'] = [] confSchedule = conf.getSchedule() entrylist = confSchedule.getEntries() for entry in entrylist: if type(entry) is schedule.BreakTimeSchEntry: newItem = entry else: newItem = entry.getOwner() tvars['entries'].append(newItem) tvars["conf"] = conf styleMgr = info.HelperMaKaCInfo.getMaKaCInfoInstance().getStyleManager( ) tvars['INCLUDE'] = os.path.join(styleMgr.getBaseTPLPath(), 'include') tvars['getTime'] = lambda date: format_time(date.time()) tvars['isTime0H0M'] = lambda date: (date.hour, date.minute) == (0, 0) tvars['getDate'] = lambda date: format_date(date, format='yyyy-MM-dd') tvars['prettyDate'] = lambda date: format_date(date, format='full') tvars['getLocationInfo'] = lambda item: getLocationInfo(item, False) from MaKaC.conference import SessionSlot, AcceptedContribution tvars['getItemType'] = lambda item: "Break" if isinstance(item, schedule.BreakTimeSchEntry) \ else ("Session" if isinstance(item, SessionSlot) \ else ("Contribution" if isinstance(item, AcceptedContribution) \ else item.__class__.__name__)) return tvars
def 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)
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')
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)
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
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()
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
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
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
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
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 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
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)
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)
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))
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
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
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)
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
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))
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 })
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
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))
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')
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()
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 }
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, }
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
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
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)
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
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
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
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
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)
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)
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)
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)
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)
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"> </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
def getVars(self): vars = wcomponents.WTemplated.getVars(self) vars["isWithdrawn"] = isinstance(self._contrib.getCurrentStatus(), conference.ContribStatusWithdrawn) vars["Contribution"] = vars["target"] = self._contrib vars["urlICSFile"] = urlHandlers.UHContribToiCal.getURL(self._contrib) vars["showAttachedFiles"] = self._contrib.getConference().getAbstractMgr().showAttachedFilesContribList() and isinstance(self._contrib, conference.AcceptedContribution) and self._contrib.getAbstract() and len(self._contrib.getAbstract().getAttachments()) > 0 vars["abstractAttachments"] = fossilize(self._contrib.getAbstract().getAttachments().values(), ILocalFileAbstractMaterialFossil) if isinstance(self._contrib, conference.AcceptedContribution) and self._contrib.getAbstract() else [] vars.update(self._getIcalExportParams(self._aw.getUser(), '/export/event/%s/contribution/%s.ics' % (self._contrib.getConference().getId(), self._contrib.getId()))) vars["getAuthorURL"] = lambda auth: self._getAuthorURL(auth) vars["formatDate"] = lambda date: format_date(date, "d MMM yyyy") tz = timezone(DisplayTZ(self._aw, self._contrib.getConference()).getDisplayTZ()) vars["formatTime"] = lambda time: format_time(time, format="short", timezone=tz) vars["formatDateTime"] = lambda dt: format_datetime(dt, format='d/M/yyyy H:mm', timezone=tz) vars["accessWrapper"] = self._aw statusReviewing = self._getStatusReviewing() vars["showSubmit"] = statusReviewing not in ["Accept", "Reject", "Submitted"] vars["showMaterial"] = statusReviewing is not None vars["showHistory"] = statusReviewing is not None vars["reviewingActive"] = self._contrib.getConference() and \ self._contrib.getConference().getConfPaperReview().hasReviewing() and \ not isinstance(self._contrib.getCurrentStatus(), conference.ContribStatusWithdrawn) and \ (self._contrib.canUserSubmit(self._aw.getUser()) or self._contrib.canModify(self._aw)) if statusReviewing == "Submitted": vars["statusText"] = _("Awaiting review") vars["statusClass"] = "contributionReviewingStatusPending" elif statusReviewing == "Accept": vars["statusText"] = _("ACCEPTED") vars["statusClass"] = "contributionReviewingStatusAccepted" elif statusReviewing == "Reject": vars["statusText"] = _("REJECTED") vars["statusClass"] = "contributionReviewingStatusRejected" elif statusReviewing == "To be corrected": vars["statusText"] = _("To be corrected") vars["statusClass"] = "contributionReviewingStatusCorrected" elif statusReviewing is not None: vars["statusText"] = statusReviewing vars["statusClass"] = "contributionReviewingStatusCorrected" else: vars["statusText"] = _("Paper not yet submitted") vars["statusClass"] = "contributionReviewingStatusNotSubmitted" vars["prefixUpload"] = "Re-" if statusReviewing not in ["Accept", "Reject", None] else "" vars["getResourceName"] = lambda resource: self._getResourceName(resource) vars["reportNumberSystems"] = Config.getInstance().getReportNumberSystems() return vars
def 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})