def _make_form(self): form_class = type(b'FeaturesForm', (IndicoForm,), {}) for name, feature in sorted(get_feature_definitions().iteritems(), key=lambda x: x[1].friendly_name): field = BooleanField(feature.friendly_name, widget=SwitchWidget(on_label=_('On'), off_label=_('Off')), description=feature.description) setattr(form_class, name, field) defaults = {name: True for name in get_enabled_features(self.event)} return form_class(csrf_enabled=False, obj=FormDefaults(defaults))
def required_by_deep(cls): """All feature names depending on this feature. This includes features which depend on a feature depending on this feature. """ # This is not very efficient, but it runs exactly one on a not-very-large set return {feature.name for feature in get_feature_definitions().itervalues() if cls.name in feature.requires_deep}
def _make_form(self): form_class = type('FeaturesForm', (IndicoForm,), {}) disallowed = get_disallowed_features(self.event) for name, feature in sorted(get_feature_definitions().items(), key=lambda x: x[1].friendly_name): if name in disallowed: continue field = BooleanField(feature.friendly_name, widget=SwitchWidget(), description=feature.description) setattr(form_class, name, field) defaults = {name: True for name in get_enabled_features(self.event)} return form_class(csrf_enabled=False, obj=FormDefaults(defaults))
def requires_deep(cls): """All feature names required by this feature. This includes features required by a requirement. """ feature_definitions = get_feature_definitions() todo = set(cls.requires) features = set() while todo: feature = todo.pop() features.add(feature) todo |= feature_definitions[feature].requires return features
def _event_created(event, **kwargs): from indico.modules.events.features.util import get_feature_definitions, get_enabled_features feature_definitions = get_feature_definitions() for feature in get_enabled_features(event): feature_definitions[feature].enabled(event)
def _check_feature_definitions(app, **kwargs): # This will raise RuntimeError if the feature names are not unique from indico.modules.events.features.util import get_feature_definitions get_feature_definitions()
def _format_feature_names(self, names): return ', '.join(sorted(unicode(f.friendly_name) for f in get_feature_definitions().itervalues() if f.name in names))
def _format_feature_names(self, names): return ', '.join( sorted( unicode(f.friendly_name) for f in get_feature_definitions().itervalues() if f.name in names))