def _process_conference(self): form = ConferenceLayoutForm(obj=self._get_form_defaults(), event=self.event) css_form = CSSForm() logo_form = LogoForm() tt_theme_settings_form = _make_theme_settings_form(self.event, form.timetable_theme.data) tt_form_valid = tt_theme_settings_form.validate_on_submit() if tt_theme_settings_form else True if form.validate_on_submit() and tt_form_valid: if tt_theme_settings_form: layout_settings.set(self.event, 'timetable_theme_settings', tt_theme_settings_form.data) else: layout_settings.delete(self.event, 'timetable_theme_settings') data = {unicode(key): value for key, value in form.data.iteritems() if key in layout_settings.defaults} layout_settings.set_multi(self.event, data) if form.theme.data == '_custom': layout_settings.set(self.event, 'use_custom_css', True) flash(_('Settings saved'), 'success') return redirect(url_for('.index', self.event)) else: if self.event.logo_metadata: logo_form.logo.data = self.event if self.event.has_stylesheet: css_form.css_file.data = self.event return WPLayoutEdit.render_template('layout_conference.html', self.event, form=form, logo_form=logo_form, css_form=css_form, timetable_theme_settings_form=tt_theme_settings_form)
def _process_conference(self): form = ConferenceLayoutForm(obj=self._get_form_defaults(), event=self.event_new) css_form = CSSForm() logo_form = LogoForm() if form.validate_on_submit(): data = { unicode(key): value for key, value in form.data.iteritems() if key in layout_settings.defaults } layout_settings.set_multi(self.event_new, data) if form.theme.data == '_custom': layout_settings.set(self.event_new, 'use_custom_css', True) flash(_('Settings saved'), 'success') return redirect(url_for('.index', self.event_new)) else: if self.event_new.logo_metadata: logo_form.logo.data = self.event_new if self.event_new.has_stylesheet: css_form.css_file.data = self.event_new return WPLayoutEdit.render_template('layout_conference.html', self._conf, form=form, event=self.event_new, logo_form=logo_form, css_form=css_form)
def migrate_layout_settings(self): print cformat('%{white!}migrating layout settings, event logos and custom stylesheets') default_styles = self.zodb_root['MaKaCInfo']['main']._styleMgr._defaultEventStylesheet for event, event_type, dmgr, logo, custom_css in committing_iterator(self._iter_event_layout_data()): if event_type != 'conference': theme = dmgr._defaultstyle if not theme or theme == default_styles[event_type]: continue layout_settings.set(event, 'timetable_theme', theme) if not self.quiet: self.print_success(cformat('- %{cyan}Default timetable theme: {}').format(theme), event_id=event.id) continue settings = self._get_event_settings(event, dmgr) layout_settings.set_multi(event, settings) if not self.quiet: self.print_success(cformat('- %{cyan}Layout settings'), event_id=event.id) if logo or custom_css: sa_event = Event.get(event.id) if not sa_event: self.print_warning('Event does not exist (anymore)! Logo and/or CSS file not saved!', event_id=event.id) continue if logo: self._process_logo(logo, sa_event) if custom_css: self._process_css(custom_css, sa_event)
def migrate(self): dmgr = self.zodb_root['displayRegistery'][self.conf.id] style_mgr = getattr( dmgr, '_styleMngr', None) if self.event._type == EventType.conference else None custom_css = getattr( style_mgr, '_css', None) if self.event._type == EventType.conference else None if self.event._type == EventType.conference: logo = self.conf._logo settings = self._get_event_settings(dmgr) layout_settings.set_multi(self.event, settings) if not self.quiet: self.print_success('- %[cyan]Layout settings') if logo: self._process_logo(logo) if custom_css: self._process_css(custom_css) else: theme = dmgr._defaultstyle if not theme or theme == self.default_styles[ self.event._type.legacy_name]: return layout_settings.set(self.event, 'timetable_theme', theme) if not self.quiet: self.print_success( '- %[cyan]Default timetable theme: {}'.format(theme))
def _process(self): defaults = FormDefaults(**layout_settings.get_all(self._conf)) form = LayoutForm(obj=defaults, event=self.event) css_form = CSSForm() logo_form = LogoForm() if form.validate_on_submit(): data = { unicode(key): value for key, value in form.data.iteritems() if key in layout_settings.defaults } layout_settings.set_multi(self._conf, data) if form.theme.data == '_custom': layout_settings.set(self._conf, 'use_custom_css', True) flash(_('Settings saved'), 'success') return redirect(url_for('event_layout.index', self._conf)) else: if self.event.logo_metadata: logo_form.logo.data = _logo_data(self.event) if self.event.has_stylesheet: css_form.css_file.data = _css_file_data(self.event) return WPLayoutEdit.render_template('layout.html', self._conf, form=form, event=self._conf, logo_form=logo_form, css_form=css_form)
def run(self, new_event, cloners, shared_data): for col in ('logo_metadata', 'logo', 'stylesheet_metadata', 'stylesheet'): setattr(new_event, col, getattr(self.old_event, col)) layout_settings.set_multi(new_event, layout_settings.get_all(self.old_event, no_defaults=True)) if layout_settings.get(self.old_event, 'use_custom_menu'): for menu_entry in MenuEntry.get_for_event(self.old_event): self._copy_menu_entry(menu_entry, new_event) db.session.flush()
def _process_lecture_meeting(self): form = LectureMeetingLayoutForm(obj=self._get_form_defaults(), event=self.event_new) if form.validate_on_submit(): layout_settings.set_multi(self.event_new, form.data) flash(_('Settings saved'), 'success') return redirect(url_for('.index', self.event_new)) return WPLayoutEdit.render_template('layout_meeting_lecture.html', self._conf, form=form, event=self.event_new)
def _process_lecture_meeting(self): form = LectureMeetingLayoutForm(obj=self._get_form_defaults(), event=self.event) tt_theme_settings_form = _make_theme_settings_form(self.event, form.timetable_theme.data) tt_form_valid = tt_theme_settings_form.validate_on_submit() if tt_theme_settings_form else True if form.validate_on_submit() and tt_form_valid: if tt_theme_settings_form: layout_settings.set(self.event, 'timetable_theme_settings', tt_theme_settings_form.data) else: layout_settings.delete(self.event, 'timetable_theme_settings') layout_settings.set_multi(self.event, form.data) flash(_('Settings saved'), 'success') return redirect(url_for('.index', self.event)) return WPLayoutEdit.render_template('layout_meeting_lecture.html', self.event, form=form, timetable_theme_settings_form=tt_theme_settings_form)
def clone(self, new_event, options): if self.event.getType() != 'conference': # for meetings/lecture we want to keep the default timetable style in all cases theme = layout_settings.get(self.event, 'timetable_theme') if theme is not None: layout_settings.set(new_event, 'timetable_theme', theme) return if 'layout' not in options: return for col in ('logo_metadata', 'logo', 'stylesheet_metadata', 'stylesheet'): setattr(new_event.as_event, col, getattr(self.event.as_event, col)) layout_settings.set_multi(new_event, layout_settings.get_all(self.event, no_defaults=True)) if layout_settings.get(self.event, 'use_custom_menu'): for menu_entry in MenuEntry.get_for_event(self.event): self._copy_menu_entry(menu_entry, new_event, new_event.as_event.menu_entries) db.session.flush()
def _process(self): defaults = FormDefaults(**layout_settings.get_all(self._conf)) form = LayoutForm(obj=defaults, event=self.event_new) css_form = CSSForm() logo_form = LogoForm() if form.validate_on_submit(): data = {unicode(key): value for key, value in form.data.iteritems() if key in layout_settings.defaults} layout_settings.set_multi(self._conf, data) if form.theme.data == '_custom': layout_settings.set(self._conf, 'use_custom_css', True) flash(_('Settings saved'), 'success') return redirect(url_for('event_layout.index', self._conf)) else: if self.event_new.logo_metadata: logo_form.logo.data = self.event_new if self.event_new.has_stylesheet: css_form.css_file.data = self.event_new return WPLayoutEdit.render_template('layout.html', self._conf, form=form, event=self.event_new, logo_form=logo_form, css_form=css_form)
def _process(self): defaults = FormDefaults(**layout_settings.get_all(self._conf)) form = LayoutForm(obj=defaults, event=self.event) css_form = CSSForm() logo_form = LogoForm() if form.validate_on_submit(): data = {unicode(key): value for key, value in form.data.iteritems() if key in layout_settings.defaults} layout_settings.set_multi(self._conf, data) if form.theme.data == "_custom": layout_settings.set(self._conf, "use_custom_css", True) flash(_("Settings saved"), "success") return redirect(url_for("event_layout.index", self._conf)) else: if self.event.logo_metadata: logo_form.logo.data = _logo_data(self.event) if self.event.has_stylesheet: css_form.css_file.data = _css_file_data(self.event) return WPLayoutEdit.render_template( "layout.html", self._conf, form=form, event=self._conf, logo_form=logo_form, css_form=css_form )
def clone(self, new_event, options): if self.event.getType() != 'conference': # for meetings/lecture we want to keep the default timetable style in all cases theme = layout_settings.get(self.event, 'timetable_theme') if theme is not None: layout_settings.set(new_event, 'timetable_theme', theme) return if 'layout' not in options: return for col in ('logo_metadata', 'logo', 'stylesheet_metadata', 'stylesheet'): setattr(new_event.as_event, col, getattr(self.event.as_event, col)) layout_settings.set_multi( new_event, layout_settings.get_all(self.event, no_defaults=True)) if layout_settings.get(self.event, 'use_custom_menu'): for menu_entry in MenuEntry.get_for_event(self.event): self._copy_menu_entry(menu_entry, new_event, new_event.as_event.menu_entries) db.session.flush()