J'écris ce code pour Dextérité dans Plone 4, le code est simple, cependant, il provoque une certaine erreur, ci-dessous nous voyons le code et ensuite une image de l'erreur, là, je explique ce que j'ai fait.Comment je fixe dans Dextérité Plone 4 erreur dans le schéma?
from plone.autoform import directives
from plone.namedfile import field as namedfile
from plone.supermodel import model
from z3c.form.browser.radio import RadioFieldWidget
from zope import schema
from zope.interface import invariant, Invalid
from zope.schema.vocabulary import SimpleVocabulary
from zope.schema.vocabulary import SimpleTerm
from datetime import datetime
from projetime.ged import _
VocabularyDocumentType = SimpleVocabulary(
[SimpleTerm(value=u'lawsuits', title=_(u'Lawsuits')),
SimpleTerm(value=u'contracts', title=_(u'Contracts')),
SimpleTerm(value=u'another', title=_(u'Another Docs'))]
)
def nowDateTime():
return datetime.today()
class IDigitalFile(model.Schema):
"""Dexterity-Schema
"""
directives.widget(documentType=RadioFieldWidget)
documentType = schema.Choice(
title=_(u"Document Type"),
vocabulary=VocabularyDocumentType,
required=True,
)
documentCod = schema.TextLine(
title=_(u"Document Cod."),
description=_(u"The Document Cod must be have xxxx/yyyy"),
required=False,
)
identification = schema.TextLine(
title=_(u"Identification"),
description=_(u"Enter your indetification"),
min_length = 11,
required=False,
)
subject = schema.TextLine(
title=_(u"Subject"),
required=True,
)
typeOf = schema.TextLine(
title=_(u"Type of Document"),
required=False,
)
file = namedfile.NamedBlobFile(
title=_(u"Digital Archive"),
required=True,
)
directives.mode(auto="hidden")
auto = schema.Bool(
title=_(u"Upload via Script?"),
required=True,
default=False,
)
@invariant
def DocumentTypeInvariant(data):
if data.documentType == 'lawsuits':
if not data.documentCod or not data.identification or not data.typeOf or not data.Description:
raise Invalid(_(u"You choose Lawsuits, all fields are required!"))
elif data.documentType == 'contracts':
if not data.documentCod or not data.identification or not data.Description:
raise Invalid(_(u"You choose Contracts, All fields with EXCEPTION of Type of Document are required"))
Quand je vais créer dans Plone l'objet appelé DigitalFile, je commence à remplir les champs, lorsque tous les champs sont remplis, je cette erreur avant de cliquer sur soumettre:
Comment Je le répare?
Je suppose que 'IDublinCore.description' Dans le code ci-dessus, il a été appelé par' data.Description' comme nous le faisons dans le modèle de page. Dans ce cas, je veux faire la description requise lorsque sélectionné «poursuites» ou «contrats». –
Vous avez toutes les données de formulaire dans Form-validator, mais vous avez un invariant, qui est collé au schéma que vous avez défini. 'data' dans l'invariant n'est pas la même chose que' data' dans le validateur de formulaire. Vous devez utiliser un validateur de formulaire. – Mathias
Ceci est nouveau pour moi, parce que je suis débutant en développement. Ces codes de 'edit/add form' seront placés dans un autre fichier de structure ou dans le même fichier que celui que j'écris dans' content/digitafile.py'? –