class IMultiFileSchema(model.Schema):
    """"""

    file_principale = field.NamedBlobFile(
        title=_("file_principale_label", default="File principale"),
        description=_(
            "file_principale_help",
            default="Inserisci il file principale di questo contenuto.",
        ),
        required=True,
    )

    formato_alternativo_1 = field.NamedBlobFile(
        title=_("formato_alternativo_1_label", default="Formato alternativo 1"),
        description=_(
            "formato_alternativo_1_help",
            default="Inserisci un eventuale formato alternativo del "
            "file principale.",
        ),
        required=False,
    )

    formato_alternativo_2 = field.NamedBlobFile(
        title=_("formato_alternativo_2_label", default="Formato alternativo 2"),
        description=_(
            "formato_alternativo_2_help",
            default="Inserisci un eventuale formato alternativo del "
            "file principale.",
        ),
        required=False,
    )
Example #2
0
class IAnalysisResultsEdit(model.Schema):
    uuid = schema.TextLine(
        title=_(u"UUID"),
        required=True,
        readonly=False,
    )

    sample_no = schema.TextLine(
        title=_(u"Sample number"),
        required=False,
        readonly=False,
    )

    result = schema.Choice(
        title=_(u"Result"),
        required=False,
        vocabulary=u"gene.tumour.vocabulary.analysis_result",
    )

    result_info = schema.TextLine(
        title=_(u"Result information"),
        required=False,
    )

    quality_file = field.NamedBlobFile(
        title=_(u"Quality control document"),
        required=False,
    )

    result_file = field.NamedBlobFile(
        title=_(u"Result detail"),
        required=False,
    )
Example #3
0
class IVideo(model.Schema):

    form.omitted('image')
    image = namedfile.NamedBlobImage(
        title=_(u"Cover Image"),
        description=u"",
        required=False,
    )

    # main file will always be converted to mp4
    form.widget(video_file=StreamNamedFileFieldWidget)
    model.primary('video_file')
    video_file = namedfile.NamedBlobFile(title=_(u"Video File"),
                                         description=u"",
                                         required=False,
                                         constraint=valid_video)

    form.omitted(IAddForm, 'video_file_ogv')
    form.omitted(IEditForm, 'video_file_ogv')
    form.widget(video_file_ogv=StreamNamedFileFieldWidget)
    video_file_ogv = namedfile.NamedBlobFile(required=False, )

    form.omitted(IAddForm, 'video_file_webm')
    form.omitted(IEditForm, 'video_file_webm')
    form.widget(video_file_webm=StreamNamedFileFieldWidget)
    video_file_webm = namedfile.NamedBlobFile(required=False, )

    youtube_url = schema.TextLine(
        title=_(u"Youtube URL"),
        description=_(u"Alternatively, you can provide a youtube video url. "
                      u"If this is specified, video file will be ignored."),
        required=False)

    @invariant
    def validate_videos(data):
        if not data.video_file and not data.youtube_url:
            raise Invalid("Must specify either a video file or youtube url")

    width = schema.Int(title=_(u"Width"), default=640)

    height = schema.Int(title=_(u"Height"), default=320)

    subtitle_file = namedfile.NamedBlobFile(
        title=_(u"Subtitle file"),
        description=_(u"Provide a file in srt format"),
        required=False)

    form.omitted('metadata')
    metadata = schema.Text(required=False)

    transcript = RichText(title=_(u"Transcript"),
                          default_mime_type='text/html',
                          output_mime_type='text/html',
                          allowed_mime_types=('text/html', 'text/plain'),
                          default=u"",
                          required=False)
Example #4
0
class INamedBlobFileField(interfaces.INamedBlobFileField):

    default = field.NamedBlobFile(
        title=interfaces.INamedBlobFileField['default'].title,
        description=interfaces.INamedBlobFileField['default'].description,
        required=False)

    missing_value = field.NamedBlobFile(
        title=interfaces.INamedBlobFileField['missing_value'].title,
        description=interfaces.INamedBlobFileField['missing_value'].
        description,
        required=False)
class IDataset(model.Schema):
    """Marker interface for Dataset"""

    # TODO: aggiungere tassonomia e vocabolario rilevante fornito nelle linee guida  # noqa
    temi = schema.Choice(
        title=_("temi", default="Temi"),
        vocabulary="design.plone.contenttypes.temi_dataset",
        required=True,
    )

    # TODO: identificativo dataset

    distribuzione = BlocksField(
        title=_("distribuzione", default="Distribuzione"), required=True
    )

    licenza = schema.TextLine(title=_("licenza", default="Licenza"), required=True)

    dataset = field.NamedBlobFile(title=_("dataset", default="Dataset"), required=True)

    titolare = schema.TextLine(title=_("titolare", default="Titolare"), required=True)

    frequenza_aggiornamento = schema.TextLine(
        title=_("frequenza_aggiornamento", default="Frequenza di aggiornamento"),
        required=True,
    )
Example #6
0
class IDocumentSchema(model.Schema):
    """Document Schema Interface."""

    model.fieldset(
        u'common',
        label=_(u'fieldset_common', u'Common'),
        fields=[
            u'title',
            u'file',
        ],
    )

    dexteritytextindexer.searchable('title')
    form.order_before(title='IDocumentMetadata.description')
    title = schema.TextLine(title=_(u'label_title', default=u'Title'),
                            required=False)

    model.primary('file')
    form.order_after(file='IDocumentMetadata.document_author')
    file = field.NamedBlobFile(
        title=_(u'label_file', default='File'),
        description=_(u'help_file', default=''),
        required=False,
    )

    @invariant
    def title_or_file_required(data):
        if not data.title and not data.file:
            raise Invalid(
                _(u'error_title_or_file_required',
                  default=u'Either the title or the file is '
                  'required.'))
Example #7
0
class IOGMail(form.Schema):
    """Opengever specific behavior,
    which add a title Field to the form.
    """

    form.fieldset(
        u'common',
        label=base_mf(u'fieldset_common', u'Common'),
        fields=[u'title', 'original_message', 'message_source'])

    form.order_before(title='message')
    dexteritytextindexer.searchable('title')
    title = schema.TextLine(
        title=dossier_mf(u'label_title', default=u'Title'),
        required=False,
    )

    form.mode(original_message=DISPLAY_MODE)
    form.read_permission(original_message='cmf.ManagePortal')
    form.write_permission(original_message='cmf.ManagePortal')
    original_message = field.NamedBlobFile(
        title=_(u'label_original_message',
                default=u'Raw *.msg message before conversion'),
        required=False,
    )

    form.mode(message_source=DISPLAY_MODE)
    form.read_permission(message_source='cmf.ManagePortal')
    form.write_permission(message_source='cmf.ManagePortal')
    message_source = schema.Choice(
        title=_('label_message_source',
                default='Message source'),
        vocabulary=get_message_source_vocabulary(),
        required=False,
    )
Example #8
0
class IAttachFile(model.Schema):

    attach = namedfile.NamedBlobFile(
        title=_(u'label_attachfile', default=u'attach file below content body'),
        description=_(u'help_attachfile', default=u''),
        required=False,
    )
Example #9
0
class IPdfFile(model.Schema):
    """ Marker interfce and Dexterity Python Schema for Promotion
    """
    # directives.omitted('title')
    title = schema.TextLine(
        title=_(u'Title'),
        # description=u"",
        required=False,
        defaultFactory=request_title,
    )

    description = schema.Text(
        title=_(u'Description'),
        # description=u"",
        required=False)

    file = namedfile.NamedBlobFile(
        title=_(u'File'),
        required=True,
        constraint=isValidFileType,
        # primary=True,
    )
    model.primary('file')

    directives.omitted('thumbfile')
    thumbfile = namedfile.NamedBlobImage(
        title=_(u'ImageThumb'),
        required=False,
    )
Example #10
0
class IAudio(model.Schema):

    # main file will always be converted to mp4
    form.widget(audio_file=StreamNamedFileFieldWidget)
    model.primary('audio_file')
    audio_file = namedfile.NamedBlobFile(
        title=_(u"Audio File"),
        description=u"",
        required=True,
        constraint=valid_audio
    )

    form.omitted('metadata')
    metadata = schema.Text(
        required=False
    )

    transcript = RichText(
        title=_(u"Transcript"),
        default_mime_type='text/html',
        output_mime_type='text/html',
        allowed_mime_types=('text/html', 'text/plain'),
        default=u"",
        required=False
    )
Example #11
0
class IDynamicAnalysisSpec(model.Schema):
    """Dynamic Analysis Specification
    """

    specs_file = namedfile.NamedBlobFile(
        title=_(u"Specification File"),
        description=_(u"Only Excel files supported"),
        required=True)

    @invariant
    def validate_sepecs_file(data):
        """Checks the Excel file contains the required header columns
        """
        fd = StringIO(data.specs_file.data)
        try:
            xls = load_workbook(fd)
        except (InvalidFileException, TypeError):
            raise Invalid(_(
                "Invalid specifications file detected. "
                "Please upload an Excel spreadsheet with at least "
                "the following columns defined: '{}'"
                .format(", ".join(REQUIRED_COLUMNS))))
        try:
            header = map(lambda c: c.value, xls.worksheets[0].rows[0])
        except IndexError:
            raise Invalid(
                _("First sheet does not contain a valid column definition"))
        for col in REQUIRED_COLUMNS:
            if col not in header:
                raise Invalid(_("Column '{}' is missing".format(col)))
Example #12
0
class IWorkbookForm(interface.Interface):
    """
    A form for importing content from one or more spreadsheets.
    """

    workbook = namedfile.NamedBlobFile(
        title=u'Workbook File to Import',
        description=u'Upload a spreadsheet file to import')
Example #13
0
class ITrack(model.Schema):
    """Marker interfce and Dexterity Python Schema for Track"""

    audiofile = namedfile.NamedBlobFile(
        title=_("Audio"),
        description=_("mp3, oga, ogg, wav"),
        required=True,
    )
Example #14
0
class IFileField(model.Schema):
    """We need to override the default file field so that we can interpret an
    empty string as NOT_CHANGED.
    """

    file = namedfile.NamedBlobFile(
        title=u'File',
        description=u'',
        required=False,
    )
Example #15
0
class IMappaSimulazione(model.Schema):
    """ Marker interface and Dexterity Python Schema for MappaSimulazione
    """
    # If you want, you can load a xml model created TTW here
    # and customize it in Python:

    # model.load('mappa_simulazione.xml')

    # directives.widget(level=RadioFieldWidget)
    # level = schema.Choice(
    #     title=_(u'Sponsoring Level'),
    #     vocabulary=LevelVocabulary,
    #     required=True
    # )

    # text = RichText(
    #     title=_(u'Text'),
    #     required=False
    # )

    # url = schema.URI(
    #     title=_(u'Link'),
    #     required=False
    # )

    # fieldset('Images', fields=['logo', 'advertisement'])
    # logo = namedfile.NamedBlobImage(
    #     title=_(u'Logo'),
    #     required=False,
    # )

    start = schema.Date(
        title=u'First day of the conference',
        required=False,
        default=date(2019, 10, 21),
    )

    end = schema.Date(
        title=u'First day of the conference',
        required=False,
        default=date(2019, 10, 21),
    )

    file_simulazione = namedfile.NamedBlobFile(
        title=_(u'File di simulazione (file SWMM5)'),
        required=True,
    )

    directives.read_permission(notes='cmf.ManagePortal')
    directives.write_permission(notes='cmf.ManagePortal')
    notes = RichText(
        title=_(u'Secret Notes (only for site-admins)'),
        required=False
    )
Example #16
0
class IFileAttachment(form.Schema):
    """
       Marker/Form interface for File Attachment
    """
   
    # -*- Your Zope schema definitions here ... -*-

    file = namedfile.NamedBlobFile(
        title=_(u"File Attachment"),
        description=u"",
        required=False,
    )
Example #17
0
class IECH0147ImportFormSchema(Schema):

    message = namedfile.NamedBlobFile(
        title=_(u'label_message', default=u'File'),
        description=_(u'help_message',
                      default=u'A ZIP file containing an eCH-147 message.'),
        required=True,
    )

    directives.widget('responsible', KeywordFieldWidget, async=True)
    responsible = schema.Choice(
        title=_(u'label_reponsible', default=u'Responsible'),
        description=_(u'help_responsible',
                      default=u'Responsible for dossiers created by eCH-0147 '
                      'import.'),
        source=AllUsersSourceBinder(),
        required=True,
    )
Example #18
0
class IVideo(Schema):
    """ The IVideo interface"""

    title = schema.TextLine(
        title=_(u"Title"),
        required=False,
    )

    description = schema.Text(
        title=_(u"Description"),
        required=False,
        missing_value=u'',
    )

    youtube_embed_url = schema.TextLine(
        title=_(u"Youtube embed URL"),
        description=
        _(u"Sie können entweder eine Youtube video URL oder eine Playlist hinzufügen"  # noqa
          ),
        required=True,
    )

    youtube_image = namedfile.NamedBlobImage(
        title=u'Youtube Preview Image',
        required=False,
    )

    dexteritytextindexer.searchable('transcript_description')
    transcript_description = schema.Text(
        title=_(u"Transkript Beschreibung"),
        required=False,
    )

    dexteritytextindexer.searchable('transcript_title')
    transcript_title = schema.TextLine(
        title=_(u"Transkript Titel"),
        required=False,
    )

    transcript_file = namedfile.NamedBlobFile(
        title=_(u'Transkript Datei'),
        required=False,
    )
Example #19
0
class IAudio(model.Schema):
    """ The IAudio interface"""

    title = schema.TextLine(
        title=_(u"Titel"),
        description=u'Der Titel wird oberhalb des Audio-Players angezeigt.',
        required=False,
    )

    model.primary('file')
    file = namedfile.NamedBlobFile(
        title=_(u'label_file', default=u'Audio-Datei (.mp3)'),
        description=u'Die Audio-Datei muss das .mp3-Format haben.',
        required=True,
    )

    image = namedfile.NamedBlobImage(
        title=_(u'label_image', default=u'Bild'),
        description=u'Dieses Bild wird oberhalb des Audio-Players angezeigt.',
        required=False,
    )
Example #20
0
class IMaterial(model.Schema):
    title = schema.TextLine(
        title=_(u"Title"),
        required=True,
    )

    version = schema.TextLine(
        title=_(u"Version"),
        required=False,
    )

    price = schema.Int(
        title=_(u"Price"),
        required=True,
    )

    discountPrice = schema.Int(
        title=_(u"Discount Price"),
        required=False,
    )

    unit = schema.TextLine(
        title=_(u"Unit"),
        required=False,
    )

    code = schema.TextLine(
        title=_(u"Code"),
        required=False,
    )

    cover = namedfile.NamedBlobImage(
        title=_(u'Cover'),
        required=False,
    )

    copyright = namedfile.NamedBlobFile(
        title=_(u'Copyright'),
        required=False,
    )
Example #21
0
class IPrepare(model.Schema):

    title = schema.TextLine(
        title=_(u'Title'),
        required=True,
    )

    description = schema.Text(
        title=_(u'Agenda'),
        required=False,
    )

#    file = namedfile.NamedFile(
    file = namedfile.NamedBlobFile(
        title=_(u'Teaching material'),
        required=False,
    )

    """ 
    video = RichText(
        title=_(u'Course Video'),
        required=False,
    ) """

    embeded = schema.Text(
        title=_(u'Embeded Code'),
        required=False,
    )

    onCall = schema.Text(
        title=_(u'Roll Call, On Call'),
        required=False,
    )

    notOnCall = schema.Text(
        title=_(u'Roll Call, Not On Call'),
        required=False,
    )
class IBlobFile(model.Schema):
    file = field.NamedBlobFile(title=u'File')
Example #23
0
class IRisk(model.Schema, IRichDescription, IBasic):
    """A possible risk that can be present in an organisation."""

    title = schema.TextLine(
        title=_("label_statement", default="Affirmative statement"),
        description=_(
            "help_statement",
            default="This is a short affirmative statement about a "
            "possible risk (e.g. The building is well maintained.)",
        ),
        required=True,
    )
    directives.widget(title="euphorie.content.risk.TextLines4Rows")
    directives.order_before(title="*")

    problem_description = schema.TextLine(
        title=_("label_problem_description", default="Negative statement"),
        description=_(
            "help_problem_description",
            default="This is the inverse of the affirmative "
            "statement (e.g. The building is not well maintained.)",
        ),
        required=True,
    )
    directives.widget(
        problem_description="euphorie.content.risk.TextLines4Rows")
    directives.order_after(problem_description="title")

    description = HtmlText(
        title=_("label_description", default="Description"),
        description=_(
            "help_risk_description",
            default="Describe the risk. Include any relevant information "
            "that may be helpful for the end-user.",
        ),
        required=True,
    )
    directives.widget(
        description="plone.app.z3cform.wysiwyg.WysiwygFieldWidget")
    directives.order_after(description="problem_description")

    existing_measures = TextLinesWithBreaks(
        title=_(
            "deprecated_label_existing_measures",
            default="Measures that are already in place (Only shown here for "
            "reference! Use the “Add Measure” button on the Risk for adding "
            "measures that are shown to the user during Identification.)",
        ),
        description=_(
            "help_existing_measures",
            default="Use this field to define (common) measures that the "
            "user might have already implemented. "
            "Separate measures with a line break (Enter). The user will be "
            "able to deselect those measures that are not applicable to their"
            "situation.",
        ),
        required=False,
    )
    directives.widget(existing_measures="euphorie.content.risk.TextLines8Rows")
    directives.order_after(existing_measures="description")

    legal_reference = HtmlText(
        title=_("label_legal_reference",
                default="Legal and policy references"),
        required=False,
    )
    directives.widget(
        legal_reference="plone.app.z3cform.wysiwyg.WysiwygFieldWidget")
    directives.order_after(legal_reference="description")

    model.fieldset(
        "identification",
        label=_("header_identification", default="Identification"),
        fields=["show_notapplicable"],
    )

    show_notapplicable = schema.Bool(
        title=_("label_show_notapplicable",
                default="Show `not applicable' option"),
        description=_(
            "help_show_notapplicable",
            default="Offer a `not applicable' option in addition "
            "to the standard yes/no options.",
        ),
        default=False,
    )

    type = schema.Choice(
        title=_("label_risk_type", default="Risk type"),
        description=_(
            "help_risk_type",
            default='"Priority risk" is one of the high risks in the '
            'sector. "Risk" is related to the workplace or to the work '
            'carried out. "Policy" refers to agreements, procedures, '
            "and management decisions.",
        ),
        vocabulary=SimpleVocabulary([
            SimpleTerm("top5",
                       title=_("risktype_top5", default="Priority risk")),
            SimpleTerm("risk", title=_("risktype_risk", default="Risk")),
            SimpleTerm("policy", title=_("risktype_policy", default="Policy")),
        ]),
        default="risk",
        required=True,
    )

    depends("risk_always_present", "type", "==", "risk")
    risk_always_present = schema.Bool(
        title=_("label_risk_always_present", default="Risk is always present"),
        description=_(
            "description_risk_always_present",
            default='If selected, the user will not be able to answer "Yes" or '
            '"No", since the risk is considered to be always present. The '
            "Evaluation and Action Plan will behave in the same way as for "
            "regular risks.",
        ),
        required=False,
        default=False,
    )

    depends("evaluation_method", "type", "==", "risk")
    evaluation_method = schema.Choice(
        title=_("label_evaluation_method", default="Evaluation method"),
        description=_(
            "help_evaluation_method",
            default="Select 'estimated' if calcuation is not necessary "
            "or not possible.",
        ),
        vocabulary=SimpleVocabulary([
            SimpleTerm("direct",
                       title=_("evalmethod_direct", default="Estimated")),
            SimpleTerm(
                "calculated",
                title=_("evalmethod_calculated", default="Calculated"),
            ),
            SimpleTerm("fixed",
                       title=_("evalmethod_fixed", default="Skip evaluation")),
        ]),
        default="calculated",
        required=False,
    )

    depends("fixed_priority", "type", "==", "risk")
    depends("fixed_priority", "evaluation_method", "==", "fixed")
    fixed_priority = schema.Choice(
        title=_("report_timeline_priority", default="Priority"),
        vocabulary=SimpleVocabulary([
            SimpleTerm("low", title=_("priority_low", default="Low")),
            SimpleTerm("medium", title=_("priority_medium", default="Medium")),
            SimpleTerm("high", title=_("priority_high", default="High")),
        ]),
        required=False,
        default="low",
    )

    depends("default_priority", "type", "==", "risk")
    depends("default_priority", "evaluation_method", "==", "direct")
    default_priority = schema.Choice(
        title=_("label_default_priority", default="Default priority"),
        description=_(
            "help_default_priority",
            default="You can help the end-user by selecting a default "
            "priority. He/she can still change the priority.",
        ),
        vocabulary=SimpleVocabulary([
            SimpleTerm("none", title=_("no_default", default="No default")),
            SimpleTerm("low", title=_("priority_low", default="Low")),
            SimpleTerm("medium", title=_("priority_medium", default="Medium")),
            SimpleTerm("high", title=_("priority_high", default="High")),
        ]),
        required=False,
        default="low",
    )

    model.fieldset(
        "main_image",
        label=_("header_main_image", default="Main image"),
        description=_(
            "intro_main_image",
            default="The main image will get a more prominent position "
            "in the client than the other images.",
        ),
        fields=["image", "caption"],
    )

    image = filefield.NamedBlobImage(
        title=_("label_image", default="Image file"),
        description=_(
            "help_image_upload",
            default="Upload an image. Make sure your image is of format "
            "png, jpg or gif and does not contain any special "
            "characters. The minimum size is 1000 (width) x 430 (height) pixels.",
        ),
        required=False,
    )
    caption = schema.TextLine(title=_("label_caption",
                                      default="Image caption"),
                              required=False)

    model.fieldset(
        "secondary_images",
        label=_("header_secondary_images", default="Secondary images"),
        fields=[
            "image2", "caption2", "image3", "caption3", "image4", "caption4"
        ],
    )

    image2 = filefield.NamedBlobImage(
        title=_("label_image", default="Image file"),
        description=_(
            "help_image_upload",
            default="Upload an image. Make sure your image is of format "
            "png, jpg or gif and does not contain any special "
            "characters. The minimum size is 1000 (width) x 430 (height) pixels.",
        ),
        required=False,
    )
    caption2 = schema.TextLine(title=_("label_caption",
                                       default="Image caption"),
                               required=False)

    image3 = filefield.NamedBlobImage(
        title=_("label_image", default="Image file"),
        description=_(
            "help_image_upload",
            default="Upload an image. Make sure your image is of format "
            "png, jpg or gif and does not contain any special "
            "characters. The minimum size is 1000 (width) x 430 (height) pixels.",
        ),
        required=False,
    )
    caption3 = schema.TextLine(title=_("label_caption",
                                       default="Image caption"),
                               required=False)

    image4 = filefield.NamedBlobImage(
        title=_("label_image", default="Image file"),
        description=_(
            "help_image_upload",
            default="Upload an image. Make sure your image is of format "
            "png, jpg or gif and does not contain any special "
            "characters. The minimum size is 1000 (width) x 430 (height) pixels.",
        ),
        required=False,
    )
    caption4 = schema.TextLine(title=_("label_caption",
                                       default="Image caption"),
                               required=False)

    model.fieldset(
        "additional_content",
        label=_("header_additional_content", default="Additional content"),
        description=_(
            "intro_additional_content",
            default="Attach any additional content you consider helpful "
            "for the user",
        ),
        fields=[
            "file1",
            "file1_caption",
            "file2",
            "file2_caption",
            "file3",
            "file3_caption",
            "file4",
            "file4_caption",
        ],
    )

    file1 = filefield.NamedBlobFile(
        title=_("label_file", default="Content file"),
        description=_(
            "help_content_upload",
            default="Upload a file that contains additional information, "
            "like a PDF, Word document or spreadsheet. Optionally provide "
            "a descriptive caption for your file.",
        ),
        required=False,
    )
    file1_caption = schema.TextLine(title=_("label_file_caption",
                                            default="Content caption"),
                                    required=False)

    file2 = filefield.NamedBlobFile(
        title=_("label_file", default="Content file"),
        description=_(
            "help_content_upload",
            default="Upload a file that contains additional information, "
            "like a PDF, Word document or spreadsheet. Optionally provide "
            "a descriptive caption for your file.",
        ),
        required=False,
    )
    file2_caption = schema.TextLine(title=_("label_file_caption",
                                            default="Content caption"),
                                    required=False)

    file3 = filefield.NamedBlobFile(
        title=_("label_file", default="Content file"),
        description=_(
            "help_content_upload",
            default="Upload a file that contains additional information, "
            "like a PDF, Word document or spreadsheet. Optionally provide "
            "a descriptive caption for your file.",
        ),
        required=False,
    )
    file3_caption = schema.TextLine(title=_("label_file_caption",
                                            default="Content caption"),
                                    required=False)

    file4 = filefield.NamedBlobFile(
        title=_("label_file", default="Content file"),
        description=_(
            "help_content_upload",
            default="Upload a file that contains additional information, "
            "like a PDF, Word document or spreadsheet. Optionally provide "
            "a descriptive caption for your file.",
        ),
        required=False,
    )
    file4_caption = schema.TextLine(title=_("label_file_caption",
                                            default="Content caption"),
                                    required=False)
Example #24
0
class ITumour(Interface):

    sample_no = schema.TextLine(
        title=_(u"Sample number"),
        required=True,
    )

    barcode = schema.TextLine(
        title=_(u"Barcode"),
        required=False,
    )

    name = schema.TextLine(
        title=_(u"Name"),
        required=True,
    )

    sex = schema.TextLine(
        title=_(u"Sex"),
        required=True,
    )

    age = schema.Int(
        title=_(u"Age"),
        min=0,
        max=200,
        required=True,
    )

    inspection_item = schema.TextLine(
        title=_(u"Inspection item"),
        required=True,
    )

    inspection_method = schema.TextLine(
        title=_(u"Inspection method"),
        required=True,
    )

    submission_hospital = schema.TextLine(
        title=_(u"Submission hospital"),
        required=False,
    )

    submission_department = schema.TextLine(
        title=_(u"Submission department"),
        required=False,
    )

    submission_doctor = schema.TextLine(
        title=_(u"Submission doctor"),
        required=False,
    )

    pathological_diagnosis = schema.TextLine(
        title=_(u"Pathological diagnosis"),
        required=False,
    )

    pathological_no = schema.TextLine(
        title=_(u"Pathological number"),
        required=False,
    )

    treatment_situation = schema.List(
        title=_(u"Treatment situation"),
        required=False,
        value_type=schema.Choice(
            title=_(u"Treatment"),
            vocabulary="gene.tumour.vocabulary.treatment_situation",
            required=True),
    )

    received_operator = schema.TextLine(
        title=_(u"Received operator"),
        required=False,
    )

    received_phone = schema.TextLine(
        title=_(u"Received phone"),
        required=False,
    )

    received_address = schema.TextLine(
        title=_(u"Received address"),
        required=False,
    )

    sample_type = schema.TextLine(
        title=_(u"Sample type"),
        required=True,
    )

    sampling_time = schema.Datetime(
        title=_(u"Sampling time"),
        constraint=validate_time,
        required=False,
    )

    received_time = schema.Datetime(
        title=_(u"Received time"),
        constraint=validate_time,
        required=False,
    )

    sample_size = schema.TextLine(
        title=_(u"Sample size "),
        required=False,
    )

    sample_note = schema.TextLine(
        title=_(u"Sample note"),
        required=False,
    )

    sample_source = schema.TextLine(
        title=_(u"Sample source"),
        required=False,
    )

    tcc_tcp = schema.Float(
        title=_(u"TCC/TCP"),
        description=_(u"Glass inspection"
                      u"(Percentage of tumor cells/tumor cells)"),
        required=False,
        min=0.0,
        max=1.00,
    )


    task_no = schema.TextLine(
        title=_(u"Task no"),
        required=False,
    )

    separation_time = schema.Datetime(
        title=_(u"Separation time"),
        constraint=validate_time,
        required=False,
    )

    separation_operator = schema.TextLine(
        title=_(u"Separation operator"),
        required=False,
    )

    plasma_location = schema.TextLine(
        title=_(u"Plasma location"),
        required=False,
    )

    separation_note = schema.TextLine(
        title=_(u"Plasma separation note"),
        required=False,
    )

    extraction_time = schema.Datetime(
        title=_(u"Extraction time"),
        constraint=validate_time,
        required=True,
    )

    na_extraction_type = schema.List(
        title=_(u"NA Extraction Type"),
        required=True,
        value_type=schema.Choice(
            title=_(u"NA type"),
            vocabulary="gene.tumour.vocabulary.na_types",
            required=True),
    )

    na_plasma_volume = schema.Float(
        title=_(u"NA plasma volume(ml)"),
        min=0.0,
        required=False,
    )

    na_concentration = schema.Float(
        title=_(u"NA concentration (NG/UL)"),
        min=0.0,
        required=False,
    )

    absorbance = schema.Float(
        title=_(u"Absorbance 260/280"),
        min=0.0,
        required=False,
    )

    na_kit_no = schema.TextLine(
        title=_(u"NA extraction kit lot number"),
        required=False,
    )

    na_operator = schema.TextLine(
        title=_(u"NA extracting operator"),
        required=False,
    )


    library_time = schema.Datetime(
        title=_(u"Library construction time"),
        constraint=validate_time,
        required=True,
    )

    library_barcode = schema.TextLine(
        title=_(u"Library barcode"),
        required=False,
    )

    library_concentration = schema.Float(
        title=_(u"Library concentration (NG/UL)"),
        min=0.0,
        required=False,
    )

    library_operator = schema.TextLine(
        title=_(u"Library construction operator"),
        required=False,
    )

    library_kit_no = schema.TextLine(
        title=_(u"Library kit lot number"),
        required=False,
    )

    library_location = schema.TextLine(
        title=_(u"Library location"),
        required=False,
    )

    capture_concentration = schema.Float(
        title=_(u"Post capture concentration (NG/UL)"),
        min=0.0,
        required=False,
    )

    template_time = schema.Datetime(
        title=_(u"Template preparation time"),
        constraint=validate_time,
        required=True,
    )

    template_operator = schema.TextLine(
        title=_(u"Template preparation operator"),
        required=False,
    )

    template_kit_no = schema.TextLine(
        title=_(u"Template kit lot number"),
        required=False,
    )

    ot_instrument_no = schema.TextLine(
        title=_(u"OT instrument number"),
        required=False,
    )

    es_instrument_no = schema.TextLine(
        title=_(u"ES instrument number"),
        required=False,
    )

    sequencing_time = schema.Datetime(
        title=_(u"Sequencing time"),
        constraint=validate_time,
        required=True,
    )

    sequencing_operator = schema.TextLine(
        title=_(u"Sequencing operator"),
        required=False,
    )

    sequencing_server = schema.TextLine(
        title=_(u"Sequencer number"),
        required=False,
    )

    sequencing_ip = schema.TextLine(
        title=_(u"Sequencing IP"),
        required=False,
    )

    sequencing_filename = schema.TextLine(
        title=_(u"Sequencing filename"),
        required=False,
    )


    result = schema.Choice(
        title=_(u"Result"),
        required=False,
        vocabulary=u"gene.tumour.vocabulary.analysis_result",
    )

    result_info = schema.TextLine(
        title=_(u"Result information"),
        required=False,
    )

    quality_file = field.NamedBlobFile(
        title=_(u"Quality control document"),
        required=False,
    )

    result_file = field.NamedBlobFile(
        title=_(u"Result detail"),
        required=False,
    )


    steps = schema.Choice(
        title=_(u"Steps"),
        required=True,
        default=u'step1',
        vocabulary=u"gene.tumour.vocabulary.progress_steps",
    )

    @invariant
    def steps_date_valid(obj):
        steps_date = [('sampling_time', 'received_time'),
                      ('separation_time', 'extraction_time'),
                      ('library_time',),
                      ('template_time', 'sequencing_time')]
        steps_date.reverse()
        for index, names in enumerate(steps_date):
            prev_date = []
            [prev_date.extend(item) for item in steps_date[index + 1:]]
            for after in names:
                after_value = getattr(obj, after, None)
                if after_value is not None:
                    for prev in prev_date:
                        prev_value = getattr(obj, prev, None)
                        if (prev_value is not None
                            and isinstance(prev_value, datetime.date)
                            and isinstance(after_value, datetime.date)
                            and prev_value > after_value):
                            raise Invalid(
                                _(u'After steps time must be greater than '
                                  u'or equal to the previous steps time'))
Example #25
0
class IVideo(model.Schema):

    form.omitted('image')
    image = namedfile.NamedBlobImage(
        title=_(u"Cover Image"),
        description=u"",
        required=False,
    )

    # main file will always be converted to mp4
    form.widget(video_file=StreamNamedFileFieldWidget)
    model.primary('video_file')
    video_file = namedfile.NamedBlobFile(
        title=_(u"Video File"),
        description=u"",
        required=False,
        constraint=valid_video
    )

    if youtube:
        upload_video_to_youtube = schema.Bool(
            title=_(u'Upload to youtube'),
            description=_(u'Requires having youtube account connected. '
                          u'Videos that are private will remain unlisted on YouTube. '
                          u'Once published, video will be made public on YouTube. '),
            required=False,
            default=False)

    form.omitted(IAddForm, 'video_file_ogv')
    form.omitted(IEditForm, 'video_file_ogv')
    form.widget(video_file_ogv=StreamNamedFileFieldWidget)
    video_file_ogv = namedfile.NamedBlobFile(
        required=False,
    )

    form.omitted(IAddForm, 'video_file_webm')
    form.omitted(IEditForm, 'video_file_webm')
    form.widget(video_file_webm=StreamNamedFileFieldWidget)
    video_file_webm = namedfile.NamedBlobFile(
        required=False,
    )

    youtube_url = schema.TextLine(
        title=_(u"Youtube URL"),
        description=_(u"Alternatively, you can provide a youtube video url. "
                      u"If this is specified, video file will be ignored. "
                      u"If video was uploaded to youtube, this field will be filled "
                      u"with video url."),
        required=False
    )
    retrieve_thumb = schema.Bool(
        title=_(u'Retrieve original thumbnail from youtube'),
        description=_(u"If checked, try to download original thumbnail from "
                      u"youtube into this video."),
        required=False,
        default=False)

    @invariant
    def validate_videos(data):
        if not data.video_file and not data.youtube_url:
            raise Invalid("Must specify either a video file or youtube url")

    width = schema.Int(
        title=_(u"Width"),
        defaultFactory=getDefaultWidth
    )

    height = schema.Int(
        title=_(u"Height"),
        defaultFactory=getDefaultHeight
    )

    subtitle_file = namedfile.NamedBlobFile(
        title=_(u"Subtitle file"),
        description=_(u"Provide a file in srt format"),
        required=False
    )

    form.omitted('metadata')
    metadata = schema.Text(
        required=False
    )

    transcript = RichText(
        title=_(u"Transcript"),
        default_mime_type='text/html',
        output_mime_type='text/html',
        allowed_mime_types=('text/html', 'text/plain'),
        default=u"",
        required=False
    )
 class ISchemaWithNamedBlobFile(Interface):
     field = field.NamedBlobFile()
Example #27
0
class IDXTestDocumentSchema(model.Schema):

    # zope.schema fields
    test_ascii_field = schema.ASCII(required=False)
    test_asciiline_field = schema.ASCIILine(required=False)
    test_bool_field = schema.Bool(required=False)
    test_bytes_field = schema.Bytes(required=False)
    test_bytesline_field = schema.BytesLine(required=False)
    test_choice_field = schema.Choice(values=[u"foo", u"bar"], required=False)
    test_choice_field_with_vocabulary = schema.Choice(
        vocabulary=SimpleVocabulary([
            SimpleTerm(u"value1", "token1", u"title1"),
            SimpleTerm(u"value2", "token2", u"title2"),
        ]),
        required=False,
    )
    test_date_field = schema.Date(required=False)
    test_datetime_field = schema.Datetime(required=False)
    test_datetime_tz_field = schema.Datetime(
        required=False,
        defaultFactory=lambda: timezone("Europe/Zurich").localize(
            datetime(2017, 10, 31, 10, 0)),
    )
    test_decimal_field = schema.Decimal(required=False)
    test_dict_field = schema.Dict(required=False)
    test_float_field = schema.Float(required=False)
    test_frozenset_field = schema.FrozenSet(required=False)
    test_int_field = schema.Int(required=False)
    test_list_field = schema.List(required=False)
    test_list_field_with_choice_with_vocabulary = schema.List(
        value_type=schema.Choice(vocabulary=SimpleVocabulary([
            SimpleTerm(u"value1", "token1", u"title1"),
            SimpleTerm(u"value2", "token2", u"title2"),
            SimpleTerm(u"value3", "token3", u"title3"),
        ])),
        required=False,
    )
    test_set_field = schema.Set(required=False)
    test_text_field = schema.Text(required=False)
    test_textline_field = schema.TextLine(required=False)
    test_time_field = schema.Time(required=False)
    test_timedelta_field = schema.Timedelta(required=False)
    test_tuple_field = schema.Tuple(required=False)
    test_nested_list_field = schema.List(required=False,
                                         value_type=schema.Tuple())
    test_nested_dict_field = schema.Dict(required=False,
                                         key_type=schema.ASCIILine(),
                                         value_type=schema.Tuple())
    test_list_choice_with_context_vocabulary_field = schema.List(
        title=u"Field",
        value_type=schema.Choice(
            vocabulary="plone.restapi.testing.context_vocabulary"),
        required=False,
    )

    # plone.app.textfield
    test_richtext_field = RichText(
        required=False, allowed_mime_types=["text/html", "text/plain"])

    # plone.namedfile fields
    test_namedfile_field = namedfile.NamedFile(required=False)
    test_namedimage_field = namedfile.NamedImage(required=False)
    test_namedblobfile_field = namedfile.NamedBlobFile(required=False)
    test_namedblobimage_field = namedfile.NamedBlobImage(required=False)

    # z3c.relationfield
    test_relationchoice_field = RelationChoice(
        required=False, source=CatalogSource(id=["doc1", "doc2"]))
    test_relationlist_field = RelationList(
        required=False,
        value_type=RelationChoice(vocabulary="plone.app.vocabularies.Catalog"),
    )

    # Test fields for validation
    test_required_field = schema.TextLine(required=True)
    test_readonly_field = schema.TextLine(required=False, readonly=True)
    test_maxlength_field = schema.TextLine(required=False, max_length=10)
    test_constraint_field = schema.TextLine(required=False,
                                            constraint=lambda x: u"00" in x)
    test_datetime_min_field = schema.Datetime(required=False,
                                              min=datetime(2000, 1, 1))
    test_time_min_field = schema.Time(required=False, min=time(1))
    test_timedelta_min_field = schema.Timedelta(required=False,
                                                min=timedelta(100))
    test_list_value_type_field = schema.List(required=False,
                                             value_type=schema.Int())
    test_dict_key_type_field = schema.Dict(required=False,
                                           key_type=schema.Int())

    read_permission(test_read_permission_field="cmf.ManagePortal")
    test_read_permission_field = schema.TextLine(required=False)
    write_permission(test_write_permission_field="cmf.ManagePortal")
    test_write_permission_field = schema.TextLine(required=False)

    read_permission(test_read_permission_field="cmf.ManagePortal")
    test_read_permission_field = schema.TextLine(required=False)

    test_invariant_field1 = schema.TextLine(required=False)
    test_invariant_field2 = schema.TextLine(required=False)

    test_missing_value_field = schema.TextLine(required=False,
                                               missing_value=u"missing",
                                               default=u"default")

    test_missing_value_required_field = schema.TextLine(
        required=True, missing_value=u"missing", default=u"some value")

    @invariant
    def validate_same_value(data):
        if data.test_invariant_field1 != data.test_invariant_field2:
            raise Invalid(u"Must have same values")

    # Test fields with default values
    test_default_value_field = schema.TextLine(required=True,
                                               default=u"Default")

    @provider(IContextAwareDefaultFactory)
    def default_factory(context):
        return u"DefaultFactory"

    test_default_factory_field = schema.TextLine(
        required=True, defaultFactory=default_factory)
Example #28
0
class INoteSchemaPrimary(form.Schema):
    form.primary('blob')
    blob = field.NamedBlobFile(
        title=u'blobfile',
        required=False,
    )
Example #29
0
class IOdtFile(model.Schema):
    odtFile = namedfile.NamedBlobFile(
        title=(u'Odt file'),
        description=(u'Conver ms office to odt ffile'),
        required=False,
    )
Example #30
0
class IPatrimoine(model.Schema):
    """Marker interface for Patrimoine"""

    # model.load("patrimoine.xml")

    numero_inventaire = schema.TextLine(title=(u"Numéro d'inventaire"),
                                        required=False)
    informations = RichText(title=(u"Informations"), required=False)

    contenus_lies = RelationList(
        title=u"Contenus liés",
        default=[],
        value_type=RelationChoice(
            title=(u"Relation Choice"),
            source=CatalogSource(portal_type=("Folder", "patrimoine")),
        ),
        required=False,
    )

    fichier_pdf = namedfile.NamedBlobFile(title=(u"Fichier PDF"),
                                          required=False,
                                          constraint=fileSize)

    fieldset(
        "Publication",
        fields=[
            "auteur",
            "lieu",
            "editeur",
            "date",
            "nombre_de_pages",
            "format_1",
            "illustre",
        ],
    )
    auteur = schema.TextLine(title=(u"Auteur"), required=False)
    lieu = schema.TextLine(title=(u"Lieu"), required=False)
    editeur = schema.TextLine(title=(u"Éditeur"), required=False)

    form.widget("date", TextDateFieldWidget)
    date = schema.TextLine(title=(u"Date"), required=False)

    nombre_de_pages = schema.TextLine(title=(u"Nombre de pages"),
                                      required=False)
    format_1 = schema.TextLine(title=(u"Format"), required=False)

    illustre = schema.Bool(title=(u"Illustré"), required=False)
    # form.widget(illustre=RadioFieldWidget)

    fieldset(
        "Carte postale",
        fields=["nom_de_rue", "couleur"],
    )
    nom_de_rue = schema.TextLine(title=(u"Nom de rue"), required=False)
    couleur = schema.Choice(
        title=(u"Couleur"),
        required=False,
        vocabulary="library.core.vocabularies.colors_vocabulary",
    )

    fieldset(
        "Registre",
        fields=[
            "nom_prenom_1",
            "nom_du_conjoint_1",
            "evenement_date_1",
            "date_evenement_1",
            "nom_prenom_2",
            "nom_du_conjoint_2",
            "evenement_date_2",
            "date_evenement_2",
            "nom_prenom_3",
            "nom_du_conjoint_3",
            "evenement_date_3",
            "date_evenement_3",
            "nom_prenom_4",
            "nom_du_conjoint_4",
            "evenement_date_4",
            "date_evenement_4",
        ],
    )

    nom_prenom_1 = schema.TextLine(title=(u"Nom prénom 1"), required=False)
    nom_du_conjoint_1 = schema.TextLine(title=(u"Nom du conjoint 1"),
                                        required=False)
    evenement_date_1 = schema.Choice(
        title=(u"Evénement lié à la date 1"),
        required=False,
        vocabulary="library.core.vocabularies.eventsdate_vocabulary",
    )
    date_evenement_1 = schema.TextLine(title=(u"Date événement 1"),
                                       description="(jj/mm/aaaa)",
                                       required=False)

    nom_prenom_2 = schema.TextLine(title=(u"Nom prénom 2"), required=False)
    nom_du_conjoint_2 = schema.TextLine(title=(u"Nom du conjoint 2"),
                                        required=False)
    evenement_date_2 = schema.Choice(
        title=(u"Evénement lié à la date 2"),
        required=False,
        vocabulary="library.core.vocabularies.eventsdate_vocabulary",
    )
    date_evenement_2 = schema.TextLine(title=(u"Date événement 2"),
                                       description="(jj/mm/aaaa)",
                                       required=False)

    nom_prenom_3 = schema.TextLine(title=(u"Nom prénom 3"), required=False)
    nom_du_conjoint_3 = schema.TextLine(title=(u"Nom du conjoint 3"),
                                        required=False)
    evenement_date_3 = schema.Choice(
        title=(u"Evénement lié à la date 3"),
        required=False,
        vocabulary="library.core.vocabularies.eventsdate_vocabulary",
    )
    date_evenement_3 = schema.TextLine(title=(u"Date événement 3"),
                                       description="(jj/mm/aaaa)",
                                       required=False)

    nom_prenom_4 = schema.TextLine(title=(u"Nom prénom 4"), required=False)
    nom_du_conjoint_4 = schema.TextLine(title=(u"Nom du conjoint 4"),
                                        required=False)
    evenement_date_4 = schema.Choice(
        title=(u"Evénement lié à la date 4"),
        required=False,
        vocabulary="library.core.vocabularies.eventsdate_vocabulary",
    )
    date_evenement_4 = schema.TextLine(title=(u"Date événement 4"),
                                       description="(jj/mm/aaaa)",
                                       required=False)

    fieldset("Média", fields=["auteur_du_media", "duree", "couleur_du_media"])

    auteur_du_media = schema.TextLine(title=(u"Auteur du média"),
                                      required=False)
    duree = schema.TextLine(title=(u"Durée"), required=False)
    couleur_du_media = schema.Choice(
        title=(u"Couleur du média"),
        required=False,
        vocabulary="library.core.vocabularies.colors_vocabulary",
    )

    fieldset(
        "Bien et PPPW",
        fields=[
            "group_identification",
            "nature_du_bien",
            "lieu_dit",
            "appellation_courante",
            "primary_category",
            "secondary_category",
            "autre",
            "group_localisation",
            "provinces",
            "municipal_entity",
            "group_owner",
            "owner_datas",
            "owner_name",
            "owner_address",
            "owner_zip_code",
            "owner_entity",
            "owner_email",
            "owner_phone",
            "group_item_status",
            "item_status",
            "group_item_description",
            "descriptif",
            "dimensions",
            "materiaux",
            "inscription_datation",
            "urban_context",
            "public_visibility",
            "direct_reachability",
            "group_item_conservation",
            "item_state",
            "noted_degradation",
            "reallocation_project",
            "group_item_history",
            "fonction_passee_et_actuelle",
            "group_item_notes_and_comments",
            "remarques_commentaires",
        ],
    )
    # 1. Identification de l'élément
    form.widget("group_identification", TextTitleFieldWidget)
    group_identification = schema.TextLine(
        title=(u"Identification de l’élément"), required=False)
    nature_du_bien = schema.TextLine(title=(u"Nature du bien"), required=False)
    lieu_dit = schema.TextLine(title=(u"Lieu dit"), required=False)
    appellation_courante = schema.TextLine(title=(u"Appellation courante"),
                                           required=False)
    form.widget("primary_category", TextTitleFieldWidget)
    primary_category = schema.TextLine(
        title=(u"Catégorie principale"),
        description=
        (u'La catégorie principale est renseignée sous l\'onglet "Catégorisation"'
         ),
        required=False,
    )
    form.widget("secondary_category", TextTitleFieldWidget)
    secondary_category = schema.TextLine(
        title=(u"Catégorie secondaire"),
        description=
        (u'La catégorie secondaire est renseignée sous l\'onglet "Catégorisation"'
         ),
        required=False,
    )
    autre = schema.Text(title=(u"Autre..."), required=False)
    # 2. Localisation de l'élément
    form.widget("group_localisation", TextTitleFieldWidget)
    group_localisation = schema.TextLine(title=(u"Localisation de l’élément"),
                                         required=False)

    provinces = schema.Choice(
        title=("Province"),
        required=False,
        vocabulary="library.core.vocabularies.provinces_vocabulary",
        default=None,
    )
    municipal_entity = schema.Choice(
        title=(u"Entité"),
        required=False,
        vocabulary="library.core.vocabularies.municipalentities_vocabulary",
        default=None,
    )

    # 3. Données relatives au propriétaire
    form.widget("group_owner", TextTitleFieldWidget)
    group_owner = schema.TextLine(title=(u"Données relatives au propriétaire"),
                                  required=False)

    form.read_permission(owner_datas="cmf.ModifyPortalContent")
    form.widget("owner_datas", RadioFieldWidget)
    owner_datas = schema.Choice(
        title=(u"Type de propriété"),
        required=False,
        values=["Privé", "Publique", "Statut inconnu"],
        default=None,
    )

    form.read_permission(owner_name="cmf.ModifyPortalContent")
    owner_name = schema.TextLine(title=(u"Nom-Prénom / Nom de l’organisme"),
                                 required=False)

    form.read_permission(owner_address="cmf.ModifyPortalContent")
    owner_address = schema.TextLine(title=(u"Adresse"), required=False)

    form.read_permission(owner_zip_code="cmf.ModifyPortalContent")
    owner_zip_code = schema.TextLine(title=(u"Code postal"), required=False)

    form.read_permission(owner_entity="cmf.ModifyPortalContent")
    owner_entity = schema.TextLine(title=(u"Entité/Commune"), required=False)

    form.read_permission(owner_email="cmf.ModifyPortalContent")
    owner_email = schema.TextLine(title=(u"Adresse e-mail"), required=False)

    form.read_permission(owner_phone="cmf.ModifyPortalContent")
    owner_phone = schema.TextLine(title=(u"Téléphone / Gsm"), required=False)

    # 4. Statut de l’élément
    form.widget("group_item_status", TextTitleFieldWidget)
    group_item_status = schema.TextLine(title=(u"Statut de l’élément"),
                                        required=False)

    form.widget(item_status=MultiSelect2FieldWidget)
    item_status = schema.List(
        title=(u"Statuts"),
        value_type=schema.Choice(
            title=(u"District(s) concerned"),
            values=[
                u"Monument",
                u"Site",
                u"Ensemble architectural",
                u"Zone de protection",
                safe_unicode(u"IPIC (repris à l'inventaire régional)"),
            ],
        ),
        required=False,
    )

    # 5. Description de l’élément

    form.widget("group_item_description", TextTitleFieldWidget)
    group_item_description = schema.TextLine(
        title=(u"Description de l’élément"), required=False)
    descriptif = schema.Text(title=(u"Descriptif"), required=False)
    dimensions = schema.TextLine(title=(u"Dimensions"), required=False)
    materiaux = schema.TextLine(title=(u"Matériaux"), required=False)
    inscription_datation = schema.Text(title=(u"Inscription(s) - Datation"),
                                       required=False)
    urban_context = schema.Text(title=(u"Contexte urbanistique et abords"),
                                required=False)
    form.widget("public_visibility", RadioFieldWidget)
    public_visibility = schema.Bool(
        title=(u"Visibilité depuis le domaine public"), required=False)
    form.widget("direct_reachability", RadioFieldWidget)
    direct_reachability = schema.Bool(title=(u"Accessibilité directe"),
                                      required=False)

    # 6. Etat de conservation de l’élément

    form.widget("group_item_conservation", TextTitleFieldWidget)
    group_item_conservation = schema.TextLine(
        title=(u"Etat de conservation de l’élément"), required=False)

    # quid id=etat.
    form.widget("owner_datas", RadioFieldWidget)
    item_state = schema.Choice(
        title=(u"Etat général de l’élément"),
        required=False,
        values=["Bon", "Moyen", "Mauvais"],
        default=None,
    )
    noted_degradation = schema.Text(title=(u"Dégradation constatée"),
                                    required=False)
    form.widget("reallocation_project", RadioFieldWidget)
    reallocation_project = schema.Bool(
        title=(u"Projet de conservation/ Réaffectation en cours"),
        required=False)

    # 7. Historique/Anecdotes
    form.widget("group_item_history", TextTitleFieldWidget)
    group_item_history = schema.TextLine(title=(u"Historique/Anecdotes"),
                                         required=False)
    fonction_passee_et_actuelle = schema.Text(
        title=(u"Fonction(s) passée(s) et actuelle(s)"), required=False)

    # 8. Remarques
    form.widget("group_item_notes_and_comments", TextTitleFieldWidget)
    group_item_notes_and_comments = schema.TextLine(title=(u"Remarques"),
                                                    required=False)
    remarques_commentaires = schema.Text(title=(u"Remarques et commentaires"),
                                         required=False)