def render_event_header(event, conference_layout=False, theme=None, theme_override=False): print_url = _get_print_url(event, theme, theme_override) if not conference_layout else None show_nav_bar = event.type_ != EventType.conference or layout_settings.get(event, 'show_nav_bar') themes = {tid: {'name': data['title'], 'user_visible': data.get('user_visible')} for tid, data in theme_settings.get_themes_for(event.type_.name).viewitems()} return render_template('events/header.html', event=event, print_url=print_url, show_nav_bar=show_nav_bar, themes=themes, theme=theme)
def getVars( self ): from indico.web.http_api.util import generate_public_auth_request vars = WHeader.getVars( self ) vars["categurl"] = self._conf.as_event.category.url vars["conf"] = vars["target"] = self._conf vars["imgLogo"] = Config.getInstance().getSystemIconURL("miniLogo") vars["MaKaCHomeURL"] = self._conf.as_event.category.url # Default values to avoid NameError while executing the template styles = theme_settings.get_themes_for("conference") vars["viewoptions"] = [{'id': theme_id, 'name': data['title']} for theme_id, data in sorted(styles.viewitems(), key=lambda x: x[1]['title'])] vars["SelectedStyle"] = "" vars["pdfURL"] = "" vars["displayURL"] = str(urlHandlers.UHConferenceOtherViews.getURL(self._conf)) # Setting the buttons that will be displayed in the header menu vars["showFilterButton"] = False vars["showMoreButton"] = True vars["showExportToICal"] = True vars["showExportToPDF"] = False vars["showDLMaterial"] = True vars["showLayout"] = True vars["displayNavigationBar"] = layout_settings.get(self._conf, 'show_nav_bar') # This is basically the same WICalExportBase, but we need some extra # logic in order to have the detailed URLs apiMode = api_settings.get('security_mode') vars["icsIconURL"] = str(Config.getInstance().getSystemIconURL("ical_grey")) vars["apiMode"] = apiMode vars["signingEnabled"] = apiMode in {APIMode.SIGNED, APIMode.ONLYKEY_SIGNED, APIMode.ALL_SIGNED} vars["persistentAllowed"] = api_settings.get('allow_persistent') user = self._aw.getUser() apiKey = user.api_key if user else None topURLs = generate_public_auth_request(apiKey, '/export/event/%s.ics' % self._conf.getId()) urls = generate_public_auth_request(apiKey, '/export/event/%s.ics' % self._conf.getId(), {'detail': 'contributions'}) vars["requestURLs"] = { 'publicRequestURL': topURLs["publicRequestURL"], 'authRequestURL': topURLs["authRequestURL"], 'publicRequestDetailedURL': urls["publicRequestURL"], 'authRequestDetailedURL': urls["authRequestURL"] } vars["persistentUserEnabled"] = apiKey.is_persistent_allowed if apiKey else False vars["apiActive"] = apiKey is not None vars["userLogged"] = user is not None tpl = get_template_module('api/_messages.html') vars['apiKeyUserAgreement'] = tpl.get_ical_api_key_msg() vars['apiPersistentUserAgreement'] = tpl.get_ical_persistent_msg() return vars
def __init__(self, *args, **kwargs): event_type = kwargs.pop('event_type').legacy_name super(IndicoThemeSelectField, self).__init__(*args, **kwargs) self.choices = sorted([(tid, theme['title']) for tid, theme in theme_settings.get_themes_for(event_type).viewitems()], key=itemgetter(1)) self.default = theme_settings.defaults[event_type]
def get_theme(event, override_theme_id=None): """Get the theme ID and whether it's an override. This is useful for places where a user may specify a different timetable theme. If the override theme is not valid for the event, a message is flashed and an exception redirecting the user to the main event page is raised. :raise BadRequest: if the override theme id is not valid :return: a ``(theme_id, is_override)`` tuple """ if not override_theme_id: return event.theme, False elif override_theme_id == 'default': theme = theme_settings.defaults[event.type] return theme, theme != event.theme elif override_theme_id in theme_settings.get_themes_for(event.type_.name): return override_theme_id, override_theme_id != event.theme else: if override_theme_id in theme_settings.themes: flash( _("The theme '{}' is not valid for this event.").format( override_theme_id)) else: flash( _("The theme '{}' does not exist.").format(override_theme_id)) raise BadRequest(response=redirect(event.url))
def theme(self): from indico.modules.events.layout import layout_settings, theme_settings theme = layout_settings.get(self, 'timetable_theme') if theme and theme in theme_settings.get_themes_for(self.type): return theme else: return theme_settings.defaults[self.type]
def render_event_header(event, conference_layout=False, theme=None, theme_override=False): print_url = _get_print_url(event, theme, theme_override) if not conference_layout else None show_nav_bar = event.type_ != EventType.conference or layout_settings.get(event, u'show_nav_bar') themes = {tid: {'name': data[u'title'], 'user_visible': data.get(u'user_visible')} for tid, data in theme_settings.get_themes_for(event.type_.name).viewitems()} return render_template(u'events/header.html', event=event, print_url=print_url, show_nav_bar=show_nav_bar, themes=themes, theme=theme)
def __init__(self, *args, **kwargs): allow_default = kwargs.pop('allow_default', False) event_type = kwargs.pop('event_type').name super().__init__(*args, **kwargs) self.choices = sorted(((tid, theme['title']) for tid, theme in theme_settings.get_themes_for(event_type).items()), key=lambda x: x[1].lower()) if allow_default: self.choices.insert(0, ('', _('Category default'))) self.default = '' if allow_default else theme_settings.defaults[event_type]
def __init__(self, *args, **kwargs): allow_default = kwargs.pop('allow_default', False) event_type = kwargs.pop('event_type').name super(IndicoThemeSelectField, self).__init__(*args, **kwargs) self.choices = sorted([(tid, theme['title']) for tid, theme in theme_settings.get_themes_for(event_type).viewitems()], key=lambda x: x[1].lower()) if allow_default: self.choices.insert(0, ('', _('Category default'))) self.default = '' if allow_default else theme_settings.defaults[event_type]
def _process_default_themes(self, old_cat): default_themes = { 'meeting': theme_settings.defaults['meeting'], 'lecture': theme_settings.defaults['lecture'] } old_default_styles = getattr(old_cat, '_defaultStyle', None) if old_default_styles: if not old_default_styles['simple_event']: pass elif old_default_styles['simple_event'] in theme_settings.get_themes_for('simple_event'): default_themes['lecture'] = old_default_styles['simple_event'] else: self.print_warning('Invalid lecture theme: {}'.format(old_default_styles['simple_event']), always=False, event_id=old_cat.id) if not old_default_styles['meeting']: pass elif old_default_styles['meeting'] in theme_settings.get_themes_for('meeting'): default_themes['meeting'] = old_default_styles['meeting'] else: self.print_warning('Invalid meeting theme: {}'.format(old_default_styles['meeting']), always=False, event_id=old_cat.id) return default_themes
def get_theme(event, override_theme_id=None): """Get the theme ID and whether it's an override. This is useful for places where a user may specify a different timetable theme. If the override theme is not valid for the event, a message is flashed and an exception redirecting the user to the main event page is raised. :raise BadRequest: if the override theme id is not valid :return: a ``(theme_id, is_override)`` tuple """ if not override_theme_id: return event.theme, False elif override_theme_id == 'default': theme = theme_settings.defaults[event.type] return theme, theme != event.theme elif override_theme_id in theme_settings.get_themes_for(event.type_.name): return override_theme_id, override_theme_id != event.theme else: if override_theme_id in theme_settings.themes: flash(_("The theme '{}' is not valid for this event.").format(override_theme_id)) else: flash(_("The theme '{}' does not exist.").format(override_theme_id)) raise BadRequest(response=redirect(event.url))
def getVars( self ): vars = WConferenceHeader.getVars( self ) vars["categurl"] = self._conf.as_event.category.url view_options = [{'id': tid, 'name': data['title']} for tid, data in sorted(theme_settings.get_themes_for(vars["type"]).viewitems(), key=lambda x: x[1]['title'])] vars["viewoptions"] = view_options vars["SelectedStyle"] = theme_settings.themes[vars['currentView']]['title'] vars["displayURL"] = urlHandlers.UHConferenceDisplay.getURL(self._rh._conf) # Setting the buttons that will be displayed in the header menu vars["showFilterButton"] = True vars["showExportToPDF"] = True vars["showDLMaterial"] = True vars["showLayout"] = True # Dates Menu tz = DisplayTZ(self._aw,self._conf,useServerTZ=1).getDisplayTZ() sdate = self._conf.getStartDate().astimezone(timezone(tz)) edate = self._conf.getEndDate().astimezone(timezone(tz)) selected = "" if vars.has_key("selectedDate"): selectedDate = vars["selectedDate"] if selectedDate == "all" or selectedDate == "": selected = "selected" else: selectedDate = "all" dates = [ i18nformat(""" <option value="all" %s>- - _("all days") - -</option> """)%selected] while sdate.date() <= edate.date(): iso_date = sdate.date().isoformat() selected = 'selected' if selectedDate == iso_date else '' dates.append('<option value="{}" {}>{}</option>'.format(iso_date, selected, format_date(sdate))) sdate = sdate + timedelta(days=1) vars["datesMenu"] = "".join(dates); # Sessions Menu selected = "" if vars.has_key("selectedSession"): selectedSession = vars["selectedSession"] if selectedSession == "all" or selectedSession == "": selected = "selected" else: selectedSession = "all" sessions = [ i18nformat(""" <option value="all" %s>- - _("all sessions") - -</option> """)%selected] for session_ in self._conf.as_event.sessions: selected = "selected" if unicode(session_.friendly_id) == selectedSession else '' title = session_.title if len(title) > 60: title = title[0:40] + u"..." sessions.append(""" <option value="%s" %s>%s</option> """ % (session_.friendly_id, selected, title.encode('utf-8'))) vars["sessionsMenu"] = "".join(sessions) # Handle hide/show contributions option hideContributions = None; if len(self._conf.getSessionList()) != 0: if vars.has_key("detailLevel"): if vars["detailLevel"] == "session": hideContributions = "checked" else: hideContributions = "" vars["hideContributions"] = hideContributions urlCustPrint = urlHandlers.UHConferenceOtherViews.getURL(self._conf) urlCustPrint.addParam("showDate", vars.get("selectedDate") or "all") urlCustPrint.addParam("showSession", vars.get("selectedSession") or "all") urlCustPrint.addParam("detailLevel", vars.get("detailLevel") or "all") urlCustPrint.addParam("fr", "no") urlCustPrint.addParam("view", vars["currentView"]) vars["printURL"]=str(urlCustPrint) vars["pdfURL"] = url_for('timetable.export_pdf', self._conf) return vars
def getVars(self): vars = WConferenceHeader.getVars(self) vars["categurl"] = self._conf.as_event.category.url view_options = [{ 'id': tid, 'name': data['title'] } for tid, data in sorted(theme_settings.get_themes_for( vars["type"]).viewitems(), key=lambda x: x[1]['title'])] vars["viewoptions"] = view_options vars["SelectedStyle"] = theme_settings.themes[ vars['currentView']]['title'] vars["displayURL"] = urlHandlers.UHConferenceDisplay.getURL( self._rh._conf) # Setting the buttons that will be displayed in the header menu vars["showFilterButton"] = True vars["showExportToPDF"] = True vars["showDLMaterial"] = True vars["showLayout"] = True # Dates Menu tz = DisplayTZ(self._aw, self._conf, useServerTZ=1).getDisplayTZ() sdate = self._conf.getStartDate().astimezone(timezone(tz)) edate = self._conf.getEndDate().astimezone(timezone(tz)) selected = "" if vars.has_key("selectedDate"): selectedDate = vars["selectedDate"] if selectedDate == "all" or selectedDate == "": selected = "selected" else: selectedDate = "all" dates = [ i18nformat( """ <option value="all" %s>- - _("all days") - -</option> """) % selected ] while sdate.date() <= edate.date(): iso_date = sdate.date().isoformat() selected = 'selected' if selectedDate == iso_date else '' dates.append('<option value="{}" {}>{}</option>'.format( iso_date, selected, format_date(sdate))) sdate = sdate + timedelta(days=1) vars["datesMenu"] = "".join(dates) # Sessions Menu selected = "" if vars.has_key("selectedSession"): selectedSession = vars["selectedSession"] if selectedSession == "all" or selectedSession == "": selected = "selected" else: selectedSession = "all" sessions = [ i18nformat( """ <option value="all" %s>- - _("all sessions") - -</option> """ ) % selected ] for session_ in self._conf.as_event.sessions: selected = "selected" if unicode( session_.friendly_id) == selectedSession else '' title = session_.title if len(title) > 60: title = title[0:40] + u"..." sessions.append( """ <option value="%s" %s>%s</option> """ % (session_.friendly_id, selected, title.encode('utf-8'))) vars["sessionsMenu"] = "".join(sessions) # Handle hide/show contributions option hideContributions = None if len(self._conf.getSessionList()) != 0: if vars.has_key("detailLevel"): if vars["detailLevel"] == "session": hideContributions = "checked" else: hideContributions = "" vars["hideContributions"] = hideContributions urlCustPrint = urlHandlers.UHConferenceOtherViews.getURL(self._conf) urlCustPrint.addParam("showDate", vars.get("selectedDate") or "all") urlCustPrint.addParam("showSession", vars.get("selectedSession") or "all") urlCustPrint.addParam("detailLevel", vars.get("detailLevel") or "all") urlCustPrint.addParam("fr", "no") urlCustPrint.addParam("view", vars["currentView"]) vars["printURL"] = str(urlCustPrint) vars["pdfURL"] = url_for('timetable.export_pdf', self._conf) return vars
def _get_timetable_theme_choices(event): it = ((tid, data['title']) for tid, data in theme_settings.get_themes_for(event.type).viewitems()) return sorted(it, key=lambda x: x[1].lower())
def _get_timetable_theme_choices(event): it = ((tid, data['title']) for tid, data in theme_settings.get_themes_for(event.type).items()) return sorted(it, key=lambda x: x[1].lower())
def getVars(self): from indico.web.http_api.util import generate_public_auth_request vars = WHeader.getVars(self) vars["categurl"] = self._conf.as_event.category.url vars["conf"] = vars["target"] = self._conf vars["imgLogo"] = Config.getInstance().getSystemIconURL("miniLogo") vars["MaKaCHomeURL"] = self._conf.as_event.category.url # Default values to avoid NameError while executing the template styles = theme_settings.get_themes_for("conference") vars["viewoptions"] = [{ 'id': theme_id, 'name': data['title'] } for theme_id, data in sorted(styles.viewitems(), key=lambda x: x[1]['title'])] vars["SelectedStyle"] = "" vars["pdfURL"] = "" vars["displayURL"] = str( urlHandlers.UHConferenceOtherViews.getURL(self._conf)) # Setting the buttons that will be displayed in the header menu vars["showFilterButton"] = False vars["showMoreButton"] = True vars["showExportToICal"] = True vars["showExportToPDF"] = False vars["showDLMaterial"] = True vars["showLayout"] = True vars["displayNavigationBar"] = layout_settings.get( self._conf, 'show_nav_bar') # This is basically the same WICalExportBase, but we need some extra # logic in order to have the detailed URLs apiMode = api_settings.get('security_mode') vars["icsIconURL"] = str( Config.getInstance().getSystemIconURL("ical_grey")) vars["apiMode"] = apiMode vars["signingEnabled"] = apiMode in { APIMode.SIGNED, APIMode.ONLYKEY_SIGNED, APIMode.ALL_SIGNED } vars["persistentAllowed"] = api_settings.get('allow_persistent') user = self._aw.getUser() apiKey = user.api_key if user else None topURLs = generate_public_auth_request( apiKey, '/export/event/%s.ics' % self._conf.getId()) urls = generate_public_auth_request( apiKey, '/export/event/%s.ics' % self._conf.getId(), {'detail': 'contributions'}) vars["requestURLs"] = { 'publicRequestURL': topURLs["publicRequestURL"], 'authRequestURL': topURLs["authRequestURL"], 'publicRequestDetailedURL': urls["publicRequestURL"], 'authRequestDetailedURL': urls["authRequestURL"] } vars[ "persistentUserEnabled"] = apiKey.is_persistent_allowed if apiKey else False vars["apiActive"] = apiKey is not None vars["userLogged"] = user is not None tpl = get_template_module('api/_messages.html') vars['apiKeyUserAgreement'] = tpl.get_ical_api_key_msg() vars['apiPersistentUserAgreement'] = tpl.get_ical_persistent_msg() return vars