예제 #1
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,
    )
예제 #2
0
class ICustomScript(IAction):
    """Executes a Python script for form data"""
    form.read_permission(ProxyRole=MODIFY_PORTAL_CONTENT)
    form.write_permission(ProxyRole=EDIT_PYTHON_PERMISSION)
    ProxyRole = Choice(
        title=_(u'label_script_proxy', default=u'Proxy role'),
        description=_(u'help_script_proxy',
                      default=u'Role under which to run the script.'),
        default=u'none',
        required=True,
        vocabulary=getProxyRoleChoices,
    )
    form.read_permission(ScriptBody=MODIFY_PORTAL_CONTENT)
    form.write_permission(ScriptBody=EDIT_PYTHON_PERMISSION)
    ScriptBody = Text(
        title=_(u'label_script_body', default=u'Script body'),
        description=_(u'help_script_body', default=u'Write your script here.'),
        default=DEFAULT_SCRIPT,
        required=False,
        missing_value=u'',
    )
        class IDummy(form.Schema):

            form.omitted('foo')
            form.omitted('bar')
            form.widget(foo='some.dummy.Widget')
            form.widget(baz='other.Widget')
            form.mode(bar='hidden')
            form.mode(foo='display')
            form.order_before(baz='title')
            form.order_after(baz='qux')
            form.order_after(qux='bar')
            form.order_before(foo='body')
            form.read_permission(foo='zope2.View', bar='zope2.View')
            form.read_permission(baz='random.Permission')
            form.write_permission(foo='cmf.ModifyPortalContent')
            form.write_permission(baz='another.Permission')

            foo = zope.schema.TextLine(title=u"Foo")
            bar = zope.schema.TextLine(title=u"Bar")
            baz = zope.schema.TextLine(title=u"Baz")
            qux = zope.schema.TextLine(title=u"Qux")
예제 #4
0
class IActionExtender(form.Schema):
    form.fieldset(u'overrides', label=_('Overrides'), fields=['execCondition'])
    form.read_permission(execCondition=MODIFY_PORTAL_CONTENT)
    form.write_permission(execCondition=EDIT_TALES_PERMISSION)
    execCondition = TextLine(
        title=_(u'label_execcondition_text', default=u'Execution Condition'),
        description=(_(u'help_execcondition_text', default=u''
                       u'A TALES expression that will be evaluated to determine whether '
                       u'or not to execute this action. Leave empty if unneeded, and '
                       u'the action will be executed. Your expression should evaluate '
                       u'as a boolean; return True if you wish the action to execute. '
                       u'PLEASE NOTE: errors in the evaluation of this expression will '
                       u'cause an error on form display.')
                     ),
        default=u'',
        constraint=isTALES,
        required=False,
    )
예제 #5
0
class IMailer(IAction):
    """A form action adapter that will e-mail form input."""
    #     default_method='getDefaultRecipientName',
    form.write_permission(recipient_name=EDIT_ADDRESSING_PERMISSION)
    form.read_permission(recipient_name=MODIFY_PORTAL_CONTENT)
    recipient_name = TextLine(
        title=_(u'label_formmailer_recipient_fullname',
                default=u"Recipient's full name"),
        description=_(
            u'help_formmailer_recipient_fullname',
            default=u'The full name of the recipient of the mailed form.'),
        default=u'',
        missing_value=u'',
        required=False,
    )
    #     default_method='getDefaultRecipient',
    #     validators=('isEmail',),
    #     TODO defaultFactory
    #     TODO IContextAwareDefaultFactory
    form.write_permission(recipient_email=EDIT_ADDRESSING_PERMISSION)
    form.read_permission(recipient_email=MODIFY_PORTAL_CONTENT)
    recipient_email = TextLine(
        title=_(u'label_formmailer_recipient_email',
                default=u"Recipient's e-mail address"),
        description=_(u'help_formmailer_recipient_email',
                      default=u'The recipients e-mail address.'),
        default=u'',
        missing_value=u'',
        required=False,
    )
    form.fieldset(u'addressing',
                  label=_('Addressing'),
                  fields=[
                      'to_field', 'cc_recipients', 'bcc_recipients',
                      'replyto_field'
                  ])
    form.write_permission(to_field=EDIT_ADVANCED_PERMISSION)
    form.read_permission(to_field=MODIFY_PORTAL_CONTENT)
    to_field = Choice(
        title=_(u'label_formmailer_to_extract',
                default=u'Extract Recipient From'),
        description=_(
            u'help_formmailer_to_extract',
            default=u''
            u'Choose a form field from which you wish to extract '
            u'input for the To header. If you choose anything other '
            u'than "None", this will override the "Recipient\'s e-mail address" '
            u'setting above. Be very cautious about allowing unguarded user '
            u'input for this purpose.'),
        required=False,
        vocabulary=fieldsFactory,
    )
    #     default_method='getDefaultCC',
    form.write_permission(cc_recipients=EDIT_ADDRESSING_PERMISSION)
    form.read_permission(cc_recipients=MODIFY_PORTAL_CONTENT)
    cc_recipients = Text(
        title=_(u'label_formmailer_cc_recipients', default=u'CC Recipients'),
        description=_(
            u'help_formmailer_cc_recipients',
            default=u'E-mail addresses which receive a carbon copy.'),
        default=u'',
        missing_value=u'',
        required=False,
    )
    #     default_method='getDefaultBCC',
    form.write_permission(bcc_recipients=EDIT_ADDRESSING_PERMISSION)
    form.read_permission(bcc_recipients=MODIFY_PORTAL_CONTENT)
    bcc_recipients = Text(
        title=_(u'label_formmailer_bcc_recipients', default=u'BCC Recipients'),
        description=_(
            u'help_formmailer_bcc_recipients',
            default=u'E-mail addresses which receive a blind carbon copy.'),
        default=u'',
        missing_value=u'',
        required=False,
    )
    form.write_permission(replyto_field=EDIT_ADVANCED_PERMISSION)
    form.read_permission(replyto_field=MODIFY_PORTAL_CONTENT)
    replyto_field = Choice(
        title=_(u'label_formmailer_replyto_extract',
                default=u'Extract Reply-To From'),
        description=_(
            u'help_formmailer_replyto_extract',
            default=u''
            u'Choose a form field from which you wish to extract '
            u'input for the Reply-To header. NOTE: You should '
            u'activate e-mail address verification for the designated '
            u'field.'),
        required=False,
        vocabulary=fieldsFactory,
    )
    form.fieldset(u'message',
                  label=PMF('Message'),
                  fields=[
                      'msg_subject', 'subject_field', 'body_pre', 'body_post',
                      'body_footer', 'showAll', 'showFields', 'includeEmpties'
                  ])
    form.read_permission(msg_subject=MODIFY_PORTAL_CONTENT)
    msg_subject = TextLine(
        title=_(u'label_formmailer_subject', default=u'Subject'),
        description=_(u'help_formmailer_subject',
                      default=u''
                      u'Subject line of message. This is used if you '
                      u'do not specify a subject field or if the field '
                      u'is empty.'),
        default=u'Form Submission',
        missing_value=u'',
        required=False,
    )
    form.write_permission(subject_field=EDIT_ADVANCED_PERMISSION)
    form.read_permission(subject_field=MODIFY_PORTAL_CONTENT)
    subject_field = Choice(
        title=_(u'label_formmailer_subject_extract',
                default=u'Extract Subject From'),
        description=_(u'help_formmailer_subject_extract',
                      default=u''
                      u'Choose a form field from which you wish to extract '
                      u'input for the mail subject line.'),
        required=False,
        vocabulary=fieldsFactory,
    )
    #     accessor='getBody_pre',
    form.read_permission(body_pre=MODIFY_PORTAL_CONTENT)
    body_pre = Text(
        title=_(u'label_formmailer_body_pre', default=u'Body (prepended)'),
        description=_(u'help_formmailer_body_pre',
                      default=u'Text prepended to fields listed in mail-body'),
        default=u'',
        missing_value=u'',
        required=False,
    )
    form.read_permission(body_post=MODIFY_PORTAL_CONTENT)
    body_post = Text(
        title=_(u'label_formmailer_body_post', default=u'Body (appended)'),
        description=_(u'help_formmailer_body_post',
                      default=u'Text appended to fields listed in mail-body'),
        default=u'',
        missing_value=u'',
        required=False,
    )
    form.read_permission(body_footer=MODIFY_PORTAL_CONTENT)
    body_footer = Text(
        title=_(u'label_formmailer_body_footer', default=u'Body (signature)'),
        description=_(u'help_formmailer_body_footer',
                      default=u'Text used as the footer at '
                      u'bottom, delimited from the body by a dashed line.'),
        default=u'',
        missing_value=u'',
        required=False,
    )
    form.read_permission(showAll=MODIFY_PORTAL_CONTENT)
    showAll = Bool(
        title=_(u'label_mailallfields_text', default=u'Include All Fields'),
        description=_(u'help_mailallfields_text',
                      default=u''
                      u'Check this to include input for all fields '
                      u'(except label and file fields). If you check '
                      u'this, the choices in the pick box below '
                      u'will be ignored.'),
        default=True,
        required=False,
    )
    form.read_permission(showFields=MODIFY_PORTAL_CONTENT)
    showFields = List(
        title=_(u'label_mailfields_text', default=u'Show Responses'),
        description=_(
            u'help_mailfields_text',
            default=
            u'Pick the fields whose inputs you\'d like to include in the e-mail.'
        ),
        unique=True,
        required=False,
        value_type=Choice(vocabulary=fieldsFactory),
    )
    form.read_permission(includeEmpties=MODIFY_PORTAL_CONTENT)
    includeEmpties = Bool(
        title=_(u'label_mailEmpties_text', default=u'Include Empties'),
        description=_(u'help_mailEmpties_text',
                      default=u''
                      u'Check this to include titles '
                      u'for fields that received no input. Uncheck '
                      u'to leave fields with no input out of the e-mail.'),
        default=True,
        required=False,
    )
    form.fieldset(u'template',
                  label=PMF('Template'),
                  fields=['body_pt', 'body_type'])
    #     ZPTField('body_pt',
    #     default_method='getMailBodyDefault',
    #     validators=('zptvalidator',),
    form.write_permission(body_pt=EDIT_TALES_PERMISSION)
    form.read_permission(body_pt=MODIFY_PORTAL_CONTENT)
    body_pt = Text(
        title=_(u'label_formmailer_body_pt', default=u'Mail-Body Template'),
        description=_(
            u'help_formmailer_body_pt',
            default=u''
            u'This is a Zope Page Template '
            u'used for rendering of the mail-body. You don\'t need to modify '
            u'it, but if you know TAL (Zope\'s Template Attribute Language) '
            u'you have the full power to customize your outgoing mails.'),
        default=MAIL_BODY_DEFAULT,
        missing_value=u'',
    )
    #     default_method='getMailBodyTypeDefault',
    form.write_permission(body_type=EDIT_ADVANCED_PERMISSION)
    form.read_permission(body_type=MODIFY_PORTAL_CONTENT)
    body_type = Choice(
        title=_(u'label_formmailer_body_type', default=u'Mail Format'),
        description=_(
            u'help_formmailer_body_type',
            default=u''
            u'Set the mime-type of the mail-body. '
            u'Change this setting only if you know exactly what you are doing. '
            u'Leave it blank for default behaviour.'),
        default=u'html',
        vocabulary=MIME_LIST,
    )
    form.fieldset(u'headers',
                  label=_('Headers'),
                  fields=['xinfo_headers', 'additional_headers'])
    form.widget(xinfo_headers=CheckBoxFieldWidget)
    #     default_method='getDefaultXInfo',
    form.write_permission(xinfo_headers=EDIT_ADVANCED_PERMISSION)
    form.read_permission(xinfo_headers=MODIFY_PORTAL_CONTENT)
    xinfo_headers = List(
        title=_(u'label_xinfo_headers_text', default=u'HTTP Headers'),
        description=_(u'help_xinfo_headers_text',
                      default=u''
                      u'Pick any items from the HTTP headers that '
                      u'you\'d like to insert as X- headers in the message.'),
        unique=True,
        required=False,
        default=[u'HTTP_X_FORWARDED_FOR', u'REMOTE_ADDR', u'PATH_INFO'],
        missing_value=[u'HTTP_X_FORWARDED_FOR', u'REMOTE_ADDR', u'PATH_INFO'],
        value_type=Choice(vocabulary=XINFO_HEADERS),
    )
    #     default_method='getDefaultAddHdrs',
    form.write_permission(additional_headers=EDIT_ADVANCED_PERMISSION)
    form.read_permission(additional_headers=MODIFY_PORTAL_CONTENT)
    additional_headers = List(
        title=_(u'label_formmailer_additional_headers',
                default=u'Additional Headers'),
        description=_(
            u'help_formmailer_additional_headers',
            default=
            u'Additional e-mail-header lines. Only use RFC822-compliant headers.'
        ),
        unique=True,
        required=False,
        value_type=TextLine(title=_(u'extra_header',
                                    default=u'${name} Header',
                                    mapping={u'name': u'HTTP'}), ),
    )
    #     if gpg is not None:
    #         formMailerAdapterSchema = formMailerAdapterSchema + Schema((
    #             StringField('gpg_keyid',
    #                 schemata='encryption',
    #                 accessor='getGPGKeyId',
    #                 mutator='setGPGKeyId',
    #                 write_permission=USE_ENCRYPTION_PERMISSION,
    #                 read_permission=ModifyPortalContent,
    #                 widget=StringWidget(
    #                     description=_(u'help_gpg_key_id', default=u"""
    #                         Give your key-id, e-mail address or
    #                         whatever works to match a public key from current keyring.
    #                         It will be used to encrypt the message body (not attachments).
    #                         Contact the site administrator if you need to
    #                         install a new public key.
    #                         Note that you will probably wish to change your message
    #                         template to plain text if you're using encryption.
    #                         TEST THIS FEATURE BEFORE GOING PUBLIC!
    #                        """),
    #                    label=_(u'label_gpg_key_id', default=u'Key-Id'),
    #                    ),
    #                ),
    #            ))
    form.fieldset(u'overrides',
                  label=_('Overrides'),
                  fields=[
                      'subjectOverride', 'senderOverride', 'recipientOverride',
                      'ccOverride', 'bccOverride'
                  ])
    form.write_permission(subjectOverride=EDIT_TALES_PERMISSION)
    form.read_permission(subjectOverride=MODIFY_PORTAL_CONTENT)
    subjectOverride = TextLine(
        title=_(u'label_subject_override_text', default=u'Subject Expression'),
        description=
        _(u'help_subject_override_text',
          default=u''
          u'A TALES expression that will be evaluated to override any value '
          u'otherwise entered for the e-mail subject header. '
          u'Leave empty if unneeded. Your expression should evaluate as a string. '
          u'PLEASE NOTE: errors in the evaluation of this expression will cause '
          u'an error on form display.'),
        required=False,
        default=u'',
        missing_value=u'',
        constraint=isTALES,
    )
    form.write_permission(senderOverride=EDIT_TALES_PERMISSION)
    form.read_permission(senderOverride=MODIFY_PORTAL_CONTENT)
    senderOverride = TextLine(
        title=_(u'label_sender_override_text', default=u'Sender Expression'),
        description=
        _(u'help_sender_override_text',
          default=u''
          u'A TALES expression that will be evaluated to override the "From" header. '
          u'Leave empty if unneeded. Your expression should evaluate as a string. '
          u'PLEASE NOTE: errors in the evaluation of this expression will cause '
          u'an error on form display.'),
        required=False,
        default=u'',
        missing_value=u'',
        constraint=isTALES,
    )
    form.write_permission(recipientOverride=EDIT_TALES_PERMISSION)
    form.read_permission(recipientOverride=MODIFY_PORTAL_CONTENT)
    recipientOverride = TextLine(
        title=_(u'label_recipient_override_text',
                default=u'Recipient Expression'),
        description=
        _(u'help_recipient_override_text',
          default=u''
          u'A TALES expression that will be evaluated to override any value '
          u'otherwise entered for the recipient e-mail address. You are strongly '
          u'cautioned against using unvalidated data from the request for this purpose. '
          u'Leave empty if unneeded. Your expression should evaluate as a string. '
          u'PLEASE NOTE: errors in the evaluation of this expression will cause '
          u'an error on form display.'),
        required=False,
        default=u'',
        missing_value=u'',
        constraint=isTALES,
    )
    form.write_permission(ccOverride=EDIT_TALES_PERMISSION)
    form.read_permission(ccOverride=MODIFY_PORTAL_CONTENT)
    ccOverride = TextLine(
        title=_(u'label_cc_override_text', default=u'CC Expression'),
        description=
        _(u'help_cc_override_text',
          default=u''
          u'A TALES expression that will be evaluated to override any value '
          u'otherwise entered for the CC list. You are strongly '
          u'cautioned against using unvalidated data from the request for this purpose. '
          u'Leave empty if unneeded. Your expression should evaluate as a sequence of strings. '
          u'PLEASE NOTE: errors in the evaluation of this expression will cause '
          u'an error on form display.'),
        required=False,
        default=u'',
        missing_value=u'',
        constraint=isTALES,
    )
    form.write_permission(bccOverride=EDIT_TALES_PERMISSION)
    form.read_permission(bccOverride=MODIFY_PORTAL_CONTENT)
    bccOverride = TextLine(
        title=_(u'label_bcc_override_text', default=u'BCC Expression'),
        description=
        _(u'help_bcc_override_text',
          default=u''
          u'A TALES expression that will be evaluated to override any value '
          u'otherwise entered for the BCC list. You are strongly '
          u'cautioned against using unvalidated data from the request for this purpose. '
          u'Leave empty if unneeded. Your expression should evaluate as a sequence of strings. '
          u'PLEASE NOTE: errors in the evaluation of this expression will cause '
          u'an error on form display.'),
        required=False,
        default=u'',
        missing_value=u'',
        constraint=isTALES,
    )
예제 #6
0
class IClaim(model.Schema):
    """A claim to the Ombudsman."""

    kind = schema.Choice(
        title=_(u'Tipos de solicitação'),
        description=_(
            u'help_kind',
            default=u'Selecione o tipo de solicitação.',
        ),
        required=True,
        vocabulary=u'interlegis.portalmodelo.ombudsman.ClaimTypes')

    area = schema.Choice(
        title=_(u'Area'),
        description=_(
            u'help_area',
            default=u'Selecione a área para a qual a solicitação será enviada.',
        ),
        required=True,
        vocabulary=u'interlegis.portalmodelo.ombudsman.Areas')

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

    form.widget('description', rows=20)
    description = schema.Text(
        title=_(u'Details'),
        description=_(
            u'help_description',
            default=u'Por favor, informe detalhes adicionais.',
        ),
        required=True,
    )

    form.read_permission(
        email='interlegis.portalmodelo.ombudsman.ViewClaimPersonalInfo')
    name = schema.TextLine(
        title=_(u'Name'),
        description=_(u'help_name', default=u''),
        required=True,
    )

    form.read_permission(
        email='interlegis.portalmodelo.ombudsman.ViewClaimPersonalInfo')
    cpf = schema.TextLine(
        title=_(u'CPF'),
        description=_(u'help_CPF', default=u''),
        required=True,
    )

    form.read_permission(
        email='interlegis.portalmodelo.ombudsman.ViewClaimPersonalInfo')
    rg = schema.TextLine(
        title=_(u'RG'),
        description=_(u'help_rg', default=u''),
        required=False,
    )

    form.read_permission(
        email='interlegis.portalmodelo.ombudsman.ViewClaimPersonalInfo')
    email = schema.ASCIILine(
        title=_(u'Email'),
        description=_(
            u'help_email',
            default=
            u'Informe o email para onde serão enviadas informações sobre a solicitação.',
        ),
        required=True,
    )

    form.read_permission(
        email='interlegis.portalmodelo.ombudsman.ViewClaimPersonalInfo')
    address = schema.TextLine(
        title=_(u'Address'),
        description=_(u'help_address', default=u'Informe seu endereço.'),
        required=False,
    )

    form.read_permission(
        email='interlegis.portalmodelo.ombudsman.ViewClaimPersonalInfo')
    postal_code = schema.TextLine(
        title=_(u'Postal code'),
        description=_(u'help_postal_code', default=u''),
        required=False,
    )

    city = schema.TextLine(
        title=_(u'City'),
        description=_(u'help_city', default=u'Informe sua cidade.'),
        required=False,
    )

    state = schema.Choice(
        title=_(u'State'),
        description=_(u'help_state', default=u'Informe seu estado.'),
        required=False,
        vocabulary=u'brasil.estados',
    )

    form.order_after(captcha='state')
    form.mode(captcha='hidden')
    captcha = schema.TextLine(title=u"ReCaptcha", required=False)
예제 #7
0
class IDocumentMetadata(form.Schema):
    """Schema behavior for common GEVER document metadata
    """

    form.fieldset(
        u'common',
        label=_(u'fieldset_common', u'Common'),
        fields=[
            u'description',
            u'keywords',
            u'foreign_reference',
            u'document_date',
            u'receipt_date',
            u'delivery_date',
            u'document_type',
            u'document_author',
            u'digitally_available',
            u'preserved_as_paper',
            u'thumbnail',
            u'preview',
            ],
        )

    form.fieldset(
        u'archive_file',
        label=_(u'fieldset_archive_file', u'Archive file'),
        fields=[u'archival_file']
    )

    dexteritytextindexer.searchable('description')
    description = schema.Text(
        title=_(u'label_description', default=u'Description'),
        required=False,
        missing_value=u'',
        )

    form.widget('keywords', KeywordFieldWidget, new_terms_as_unicode=True)
    keywords = schema.Tuple(
        title=_(u'label_keywords', default=u'Keywords'),
        description=_(u'help_keywords', default=u''),
        value_type=ChoicePlus(
            vocabulary='plone.app.vocabularies.Keywords'
        ),
        required=False,
        missing_value=(),
        default=(),
    )

    foreign_reference = schema.TextLine(
        title=_(u'label_foreign_reference', default='Foreign Reference'),
        description=_('help_foreign_reference', default=''),
        required=False,
        )

    # workaround because ftw.datepicker wasn't working
    form.widget(document_date=DatePickerFieldWidget)
    document_date = schema.Date(
        title=_(u'label_document_date', default='Document Date'),
        description=_(u'help_document_date', default=''),
        required=False,
        defaultFactory=document_date_default,
        )

    # workaround because ftw.datepicker wasn't working
    form.widget(receipt_date=DatePickerFieldWidget)
    receipt_date = schema.Date(
        title=_(u'label_receipt_date', default='Date of receipt'),
        description=_(u'help_receipt_date', default=''),
        required=False,
        )

    # workaround because ftw.datepicker wasn't working
    form.widget(delivery_date=DatePickerFieldWidget)
    delivery_date = schema.Date(
        title=_(u'label_delivery_date', default='Date of delivery'),
        description=_(u'help_delivery_date', default=''),
        required=False,
        )

    document_type = schema.Choice(
        title=_(u'label_document_type', default='Document Type'),
        source=wrap_vocabulary('opengever.document.document_types',
                    visible_terms_from_registry='opengever.document' +
                            '.interfaces.IDocumentType.document_types'),
        required=False,
        )

    dexteritytextindexer.searchable('document_author')
    document_author = schema.TextLine(
        title=_(u'label_author', default='Author'),
        description=_(u'help_author',
                      default="Surname firstname or a userid"
                      "(would be automatically resolved to fullname)"),
        required=False,
        )

    form.mode(digitally_available='hidden')
    digitally_available = schema.Bool(
        title=_(u'label_digitally_available', default='Digital Available'),
        required=False,
        )

    form.widget(preserved_as_paper=checkbox.SingleCheckBoxFieldWidget)
    preserved_as_paper = schema.Bool(
        title=_(u'label_preserved_as_paper', default='Preserved as paper'),
        description=_(u'help_preserved_as_paper', default=''),
        required=False,
        defaultFactory=preserved_as_paper_default,
        )

    form.read_permission(archival_file='opengever.document.ModifyArchivalFile')
    form.write_permission(archival_file='opengever.document.ModifyArchivalFile')
    archival_file = NamedBlobFile(
        title=_(u'label_archival_file', default='Archival File'),
        description=_(u'help_archival_file', default=''),
        required=False,
    )

    form.omitted('archival_file_state')
    archival_file_state = schema.Int(
        title=_(u'label_archival_file_state', default='Archival file state'),
        required=False,
    )

    form.omitted('thumbnail')
    thumbnail = NamedBlobFile(
        title=_(u'label_thumbnail', default='Thumbnail'),
        required=False,
        )

    form.omitted('preview')
    preview = NamedBlobFile(
        title=_(u'label_preview', default='Preview'),
        description=_(u'help_preview', default=''),
        required=False,
        )