class ActivityConfigSchema(colander.Schema): """ The schema for activity types configuration """ header_img = get_file_dl_node(title=u'En-tête des sortie PDF') footer_img = get_file_dl_node( u'Image du pied de page des sorties PDF', u"Vient se placer au-dessus du texte du pied de page", ) footer = forms.textarea_node( title=u"Texte du pied de page des sorties PDF", missing=u"", ) types = ActivityTypesSeqConfig( title=u"Configuration des natures de rendez-vous", widget=CleanSequenceWidget( add_subitem_text_template=u"Ajouter une nature de rendez-vous ", orderable=True, )) modes = ActivityModesSeqConfig( title=u"Configuration des modes d'entretien", widget=CleanSequenceWidget( add_subitem_text_template=u"Ajouter un mode d'entretien", orderable=True, )) actions = ActivityActionSeq( title=u"Configuration des titres disponibles pour la sortie PDF", widget=CleanSequenceWidget( add_subitem_text_template=u"Ajouter un titre", orderable=True, ))
def deferred_seq_widget(nodex, kw): elements = kw['deadlines'] return CleanSequenceWidget( add_subitem_text_template=u"-", min_len=len(elements), max_len=len(elements), )
class ActivityActionConfig(colander.Schema): id = forms.id_node() label = colander.SchemaNode(colander.String(), title=u"Titre", description=u"Titre dans la sortie pdf", validator=colander.Length(max=255)) children = ActivitySubActionSeq( title=u"", widget=CleanSequenceWidget( add_subitem_text_template=u"Ajouter un sous-titre", ))
class WorkshopInfo1(colander.Schema): id = forms.id_node() label = colander.SchemaNode(colander.String(), title=u"Titre", description=u"Titre dans la sortie pdf", validator=colander.Length(max=255)) children = WorkshopInfo2Seq( title=u'', widget=CleanSequenceWidget( add_subitem_text_template=u"Ajouter un sous-titre", orderable=True, ))
def get_sequence_model_admin(model, title=u"", excludes=(), **kw): """ Return a schema for configuring sequence of models model The SQLAlchemy model to configure """ node_schema = SQLAlchemySchemaNode( model, widget=CleanMappingWidget(), excludes=excludes, ) node_schema.name = 'data' colanderalchemy_config = getattr(model, '__colanderalchemy_config__', {}) default_widget_options = dict( orderable=True, min_len=1, ) widget_options = colanderalchemy_config.get('seq_widget_options', {}) widget_options.update(kw.get('widget_options', {})) for key, value in widget_options.items(): default_widget_options[key] = value schema = colander.SchemaNode(colander.Mapping()) schema.add( colander.SchemaNode( colander.Sequence(), node_schema, widget=CleanSequenceWidget( **default_widget_options ), title=title, name='datas') ) def dictify(models): return {'datas': [node_schema.dictify(model) for model in models]} def objectify(datas): return [node_schema.objectify(data) for data in datas] schema.dictify = dictify schema.objectify = objectify return schema
class WorkshopConfigSchema(colander.Schema): header_img = get_file_dl_node(title=u'En-tête des sortie PDF') footer_img = get_file_dl_node( u'Image du pied de page des sorties PDF', u"Vient se placer au-dessus du texte du pied de page", ) footer = forms.textarea_node( title=u"Texte du pied de page des sorties PDF", missing=u"", ) actions = WorkshopInfo1Seq( title=u"Configuration des titres disponibles pour la sortie PDF", widget=CleanSequenceWidget( add_subitem_text_template=u"Ajouter une titre", orderable=True, ))