Beispiel #1
0
class ITimeSeriesChart(IBaseChart, ITimeSeriesCollection):
    """Chart content item; container for sequences"""

    form.order_after(auto_crop='frequency')
    auto_crop = schema.Bool(
        title=u'Auto-crop to completed data?',
        description=u'If data contains sequential null values (incomplete '
                    u'or no data calculable) on the right-hand of a '
                    u'time-series plot, should that right-hand side '
                    u'be cropped to only show the latest meaningful '
                    u'data?  The default is to crop automatically.',
        default=True,
        )

    form.order_after(force_crop='auto_crop')
    force_crop = schema.Bool(
        title=u'Forced crop of data?',
        description=u'If data points are available before a specified '
                    u'start date or after a specified end-date, should '
                    u'those points be excluded from the visualization?',
        default=False,
        )

    form.omitted('label_overrides')
    label_overrides = schema.Dict(
        key_type=schema.Date(),
        value_type=schema.BytesLine(),
        required=False,
        )

    def series():
        """
class IDossierTemplateSchema(form.Schema):
    """Schema interface for dossier template types.

    Use this type of dossier to create a reusable template structures.
    """

    form.fieldset(
        u'common',
        label=base_mf(u'fieldset_common', default=u'Common'),
        fields=[
            u'title_help',
            u'predefined_keywords',
            u'restrict_keywords',
        ],
    )

    title_help = schema.TextLine(
        title=_(u'label_title_help', default=u'Title help'),
        description=_(u'help_title_help',
                      default=u'Recommendation for the title. Will be '
                      u'displayed as a help text if you create '
                      u'a dossier from template'),
        required=False,
    )

    form.order_after(predefined_keywords='IDossierTemplate.keywords')
    predefined_keywords = schema.Bool(
        title=_(u'label_predefined_keywords', default=u'Predefined Keywords'),
        description=_(u'description_predefined_keywords',
                      default=u'The defined keywords will be preselected for '
                      u'new dossies from template.'),
        required=False,
        missing_value=True,
        default=True,
    )

    form.order_after(restrict_keywords='predefined_keywords')
    restrict_keywords = schema.Bool(
        title=_(u'label_restrict_keywords', default=u'Restrict Keywords'),
        description=_(
            u'description_restrict_keywords',
            default=u'The user can choose only from the defined keywords '
            u'in a new dossier from template. It also prevents '
            u'the user for creating new keywords'),
        required=False,
        missing_value=False,
        default=False,
    )
Beispiel #3
0
class IRichDescription(form.Schema):
    """Simple behaviour for content types with a HTML description.
    Replaces the standard description field with a rich text version.
    """
    description = schema.Text(
        title=_(u"Summary"),
        description=_(u'A short summary of the content.'),
        required=False)
    form.widget(description=WysiwygFieldWidget)
    form.order_after(description="title")
Beispiel #4
0
class IOpenLinkInNewWindow(form.Schema):
    """Add open in new window field to link content
    """

    form.order_after(open_link_in_new_window='remoteUrl')
    open_link_in_new_window = schema.Bool(
        title=_(u"open_link_in_new_window"),
        description=_(u"help_open_link_in_new_window"),
        required=False,
        default=False
    )
        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")
Beispiel #6
0
class ISector(form.Schema, IUser, IBasic):
    """Sector object.

    A sector is a national organisation for a specific type of
    industry.
    """

    form.order_before(title="*")
    dexterity.write_permission(title="euphorie.content.ManageCountry")

    form.order_after(login="******")
    dexterity.write_permission(login="******")

    form.order_before(password="******")

    form.order_after(locked="password")
    dexterity.write_permission(locked="euphorie.content.ManageCountry")

    contact_name = schema.TextLine(title=_("label_contact_name",
                                           default=u"Contact name"),
                                   required=True)

    form.order_after(contact_email="contact_name")

    logo = filefield.NamedBlobImage(
        title=_("label_logo", default=u"Logo"),
        description=_(
            "help_image_upload",
            default=u"Upload an image. Make sure your image is of format "
            u"png, jpg or gif and does not contain any special "
            u"characters."),
        required=False)

    main_colour = colour.Colour(title=_("label_main_colour",
                                        default=u"Main colour"),
                                required=False)

    support_colour = colour.Colour(title=_("label_support_colour",
                                           default=u"Support colour"),
                                   required=False)
Beispiel #7
0
class IPage(form.Schema, IRichDescription, IBasic):
    """A basic page.
    """
    description = HtmlText(
        title=_("label_module_description", u"Description"),
        description=_("help_module_description",
                      default=u"Include any relevant information that may be "
                      u"helpful for the end-user."),
        required=True)
    form.widget(description=WysiwygFieldWidget)
    form.order_after(description="title")

    body = HtmlText(title=_("label_body", u"Page content"), required=True)
    form.widget(body=WysiwygFieldWidget)
Beispiel #8
0
class ISolution(form.Schema):
    """A standard solution for a risk.

    Risk questions can have standard solutions that can be applied in
    most environments.
    """

    description = schema.Text(
        title=_("label_module_description", u"Description"),
        description=_("help_module_description",
                      default=u"Include any relevant information that may be "
                      u"helpful for the end-user."),
        required=True)
    form.order_after(description="title")

    action_plan = schema.Text(
        title=_("label_measure_action_plan",
                default=u"General approach (to eliminate or reduce the risk)"),
        description=_(
            "help_measure_action_plan",
            default=u"Describe your general approach to eliminate or (if "
            u"the risk is not avoidable) reduce the risk."),
        required=True)

    prevention_plan = schema.Text(
        title=_("label_measure_prevention_plan",
                default=u"Specific action(s) required to implement this "
                u"approach"),
        description=_(
            "help_measure_prevention_plan",
            default=u"Describe the specific action(s) required to "
            u"implement this approach (to eliminate or to reduce the risk)."),
        required=False)

    requirements = schema.Text(
        title=_("label_measure_requirements",
                default=u"Level of expertise and/or requirements needed"),
        description=_(
            "help_measure_requirements",
            default=u'Describe the level of expertise needed to implement '
            u'the measure, for instance "common sense (no OSH knowledge '
            u'required)", "no specific OSH expertise, but minimum OSH '
            u'knowledge or training and/or consultation of OSH guidance '
            u'required", or "OSH expert". You can also describe here '
            u'any other additional requirement (if any).'),
        required=False)
 class IBar(IFoo):
     form.order_after(foo='bar')
     bar = zope.schema.TextLine()
Beispiel #10
0
class IChartDisplay(form.Schema):
    """
    Display configuration for chart settings (as a whole).
    """

    width = schema.Int(
        title=_(u'Width'),
        description=_(u'Display width of chart, including Y-axis labels, '
                      u'grid, and legend (if applicable) in units '
                      u'configured.'),
        default=100,
        )

    width_units = schema.Choice(
        title=_(u'Units of width'),
        vocabulary=WIDTH_UNITS,
        default='%',
        )

    height = schema.Int(
        title=_(u'Height'),
        description=_(u'Display height of chart in units configured '
                      u'(either as percentage of width, or in pixels).'),
        default=50,
        )

    height_units = schema.Choice(
        title=_(u'Units of height'),
        vocabulary=HEIGHT_UNITS,
        default='2:1',
        )

    show_goal = schema.Bool(
        title=_(u'Show goal-line?'),
        description=_(u'If defined, show (constant horizontal) goal line?'),
        default=False,
        )

    form.widget(goal_color=ColorpickerFieldWidget)
    goal_color = schema.TextLine(
        title=_(u'Goal-line color'),
        description=_(u'If omitted, color will be selected from defaults.'),
        required=False,
        default=u'Auto',
        )

    form.order_after(chart_type='description')
    chart_type = schema.Choice(
        title=_(u'Chart type'),
        description=_(u'Type of chart to display.'),
        vocabulary=VOCAB_PLOT_TYPES,
        default=u'line',
        )

    legend_placement = schema.Choice(
        title=_(u'Legend placement'),
        description=_(
            u'Where to place legend in relationship to the grid.'
            u'Note: the legend is disabled for less than two '
            u'series/line unless the tabular legend is selected.'
            ),
        vocabulary=SimpleVocabulary((
            SimpleTerm(value=None, token=str(None), title=u'Legend disabled'),
            SimpleTerm(value='outside', title=_(u'Outside grid')),
            SimpleTerm(value='inside', title=_(u'Inside grid')),
            SimpleTerm(value='tabular', title=_(
                u'Tabular legend with data, below plot')),
            )),
        required=False,
        default='outside',
        )

    legend_location = schema.Choice(
        title=_(u'Legend location'),
        description=_(u'Select a directional position for legend. '
                      u'This setting is ignored if either the tabular '
                      u'legend placement is selected or if the '
                      u'legend is hidden (for less than two series).'),
        vocabulary=SimpleVocabulary((
            SimpleTerm(value='nw', title=_(u'Top left')),
            SimpleTerm(value='n', title=_(u'Top')),
            SimpleTerm(value='ne', title=_(u'Top right')),
            SimpleTerm(value='e', title=_(u'Right')),
            SimpleTerm(value='se', title=_(u'Bottom right')),
            SimpleTerm(value='s', title=_(u'Bottom')),
            SimpleTerm(value='sw', title=_(u'Bottom left')),
            SimpleTerm(value='w', title=_(u'Left')),
            )),
        required=False,
        default='e',  # right hand side
        )

    x_label = schema.TextLine(
        title=_(u'X axis label'),
        default=u'',
        required=False,
        )

    y_label = schema.TextLine(
        title=_(u'Y axis label'),
        default=u'',
        required=False,
        )

    form.widget(chart_styles=TextAreaFieldWidget)
    chart_styles = schema.Bytes(
        title=_(u'Chart styles'),
        description=_(u'CSS stylesheet rules for chart (optional).'),
        required=False,
        )

    point_labels = schema.Choice(
        title=u'Show point labels?',
        description=u'Show labels above data-point markers?  '
                    u'This may be overridden on individual lines/series.',
        default='show',
        vocabulary=SimpleVocabulary([
                SimpleTerm('show', title=u'Show labels'),
                SimpleTerm('omit', title=u'Omit labels'),
            ])
        )
Beispiel #11
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)
Beispiel #12
0
class IISAWPublication(form.Schema):
    short_title = TextLine(title=_(u'Short Title'))
    form.order_after(short_title='IBibliographicItem.title')

    tag_line = TextLine(title=_(u'Tag Line'), required=False)
    form.order_after(tag_line='IBibliographicItem.description')

    authors = Tuple(
        title=_(u'Authors'),
        description=_(u'Enter username or plain-text name, one per line'),
        value_type=TextLine(),
        required=False,
        missing_value=(),
    )
    form.order_before(authors='IBibliographicItem.citation_detail')

    editors = Tuple(
        title=_(u'Editors'),
        description=_(u'Enter username or plain-text name, one per line'),
        value_type=TextLine(),
        required=False,
        missing_value=(),
    )
    form.order_before(editors='IBibliographicItem.citation_detail')

    contributors = Tuple(
        title=_(u'Contributors'),
        description=_(u'Enter username or plain-text name, one per line'),
        value_type=TextLine(),
        required=False,
        missing_value=(),
    )
    form.order_before(contributors='IBibliographicItem.citation_detail')

    alt_bib_uri = URI(title=_(u'Alternate Bibliographic URI'), required=False)
    form.order_after(alt_bib_uri='IBibliographicItem.bibliographic_uri')

    publisher = TextLine(title=_(u'Publisher'), required=False)
    form.order_after(publisher='IBibliographicItem.alternate_uri')

    publisher_uri = URI(title=_(u'Publisher URI'), required=False)
    form.order_after(publisher_uri='publisher')

    review_uri = URI(title=_(u'Review URI'), required=False)
    form.order_after(review_uri='publisher_uri')

    isbn = TextLine(title=_(u'ISBN'), required=False)
    form.order_after(isbn='review_uri')

    issn = TextLine(title=_(u'ISSN'), required=False)
    form.order_after(issn='isbn')

    doi = TextLine(title=_(u'DOI'), required=False)
    form.order_after(doi='issn')

    text = RichText(
        title=_(u'Body'),
        default_mime_type='text/html',
        allowed_mime_types=('text/html', ),
        output_mime_type='text/x-safe-html',
        required=False,
    )
    form.order_after(text='doi')

    date_of_publication = TextLine(
        title=_(u'Publication Date'),
        description=_(u'Enter the date on which this publication was issued'),
        required=False)
    form.order_after(date_of_publication='text')

    loc_subjects = List(title=_(u'LOC Subjects'),
                        value_type=DictRow(title=u'Subject',
                                           schema=ILOCSubject),
                        required=False)
    form.widget(loc_subjects=DataGridFieldFactory)
    form.order_after(loc_subjects='*')
Beispiel #13
0
class IModule(form.Schema, IRichDescription, IBasic):
    """Survey Module.

    A module is (hierarchical) grouping in a survey.
    """
    description = HtmlText(
        title=_("label_module_description", u"Description"),
        description=_("help_module_description",
                      default=u"Include any relevant information that may be "
                      u"helpful for the end-user."),
        required=False)
    form.widget(description=WysiwygFieldWidget)
    form.order_after(description="title")

    optional = schema.Bool(
        title=_("label_module_optional", default=u"This module is optional"),
        description=_("help_module_optional",
                      default=u"Allows the end-user to skip this module and "
                      u"everything inside it."),
        required=False,
        default=False)

    depends("question", "optional", "on")
    question = ConditionalTextLine(
        title=_("label_module_question", default=u"Question"),
        description=_(
            "help_module_question",
            default=u"The question to ask the end-user if this module is "
            u"optional. It must be formulated so that it is answerable "
            u"with YES (the end-user will have to tick a box) or NO"),
        required=True)

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

    solution_direction = HtmlText(
        title=_("label_solution_direction", default=u"Solution"),
        description=_(
            "help_solution_direction",
            default=u"This information will appear in the Action plan step "
            u"and should include an overview of general solution(s) "
            u"related to this module."),
        required=False)
    form.widget(solution_direction=WysiwygFieldWidget)

    form.fieldset(
        "additional_content",
        label=_("header_additional_content", default=u"Additional content"),
        description=_(
            "intro_additional_content",
            default=u"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=u"Content file"),
        description=_(
            "help_content_upload",
            default=u"Upload a file that contains additional information, "
            u"like a PDF, Word document or spreadsheet. Optionally provide "
            u"a descriptive caption for your file."),
        required=False)
    file1_caption = schema.TextLine(title=_("label_file_caption",
                                            default=u"Content caption"),
                                    required=False)

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

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

    file4 = filefield.NamedBlobFile(
        title=_("label_file", default=u"Content file"),
        description=_(
            "help_content_upload",
            default=u"Upload a file that contains additional information, "
            u"like a PDF, Word document or spreadsheet. Optionally provide "
            u"a descriptive caption for your file."),
        required=False)
    file4_caption = schema.TextLine(title=_("label_file_caption",
                                            default=u"Content caption"),
                                    required=False)
Beispiel #14
0
class IRisk(form.Schema, IRichDescription, IBasic):
    """A possible risk that can be present in an organisation.
    """

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

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

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

    existing_measures = TextLinesWithBreaks(
        title=_("label_existing_measures", default=u"Existing measures"),
        description=_(
            "help_existing_measures",
            default=u"Use this field to define (common) existing measures."
            u" Separate measures with a line break (Enter). The user will be "
            u"able to deselect those measures that are not applicable to their"
            u" situation."),
        required=False)
    form.widget(existing_measures="euphorie.content.risk.TextLines8Rows")
    form.order_after(existing_measures="description")

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

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

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

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

    depends("risk_always_present", "type", "==", "risk")
    risk_always_present = schema.Bool(
        title=_("label_risk_always_present",
                default=u"Risk is always present"),
        description=_(
            "description_risk_always_present",
            default=u'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=u"Evaluation method"),
        description=_(
            "help_evaluation_method",
            default=u"Select 'estimated' if calcuation is not necessary "
            u"or not possible."),
        vocabulary=SimpleVocabulary([
            SimpleTerm(u"direct",
                       title=_("evalmethod_direct", default=u"Estimated")),
            SimpleTerm(u"calculated",
                       title=_("evalmethod_calculated",
                               default=u"Calculated")),
            SimpleTerm(u"fixed",
                       title=_("evalmethod_fixed",
                               default=u"Skip evaluation")),
        ]),
        default=u"calculated",
        required=False)

    depends("fixed_priority", "type", "==", "risk")
    depends("fixed_priority", "evaluation_method", "==", "fixed")
    fixed_priority = schema.Choice(title=_("report_timeline_priority",
                                           default=u"Priority"),
                                   vocabulary=SimpleVocabulary([
                                       SimpleTerm("low",
                                                  title=_("priority_low",
                                                          default=u"Low")),
                                       SimpleTerm("medium",
                                                  title=_("priority_medium",
                                                          default=u"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=u"Default priority"),
        description=_(
            "help_default_priority",
            default=u"You can help the end-user by selecting a default "
            u"priority. He/she can still change the priority."),
        vocabulary=SimpleVocabulary([
            SimpleTerm("none", title=_("no_default", default=u"No default")),
            SimpleTerm("low", title=_("priority_low", default=u"Low")),
            SimpleTerm("medium", title=_("priority_medium",
                                         default=u"Medium")),
            SimpleTerm("high", title=_("priority_high", default="High")),
        ]),
        required=False,
        default="low")

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

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

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

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

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

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

    form.fieldset(
        "additional_content",
        label=_("header_additional_content", default=u"Additional content"),
        description=_(
            "intro_additional_content",
            default=u"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=u"Content file"),
        description=_(
            "help_content_upload",
            default=u"Upload a file that contains additional information, "
            u"like a PDF, Word document or spreadsheet. Optionally provide "
            u"a descriptive caption for your file."),
        required=False)
    file1_caption = schema.TextLine(title=_("label_file_caption",
                                            default=u"Content caption"),
                                    required=False)

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

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

    file4 = filefield.NamedBlobFile(
        title=_("label_file", default=u"Content file"),
        description=_(
            "help_content_upload",
            default=u"Upload a file that contains additional information, "
            u"like a PDF, Word document or spreadsheet. Optionally provide "
            u"a descriptive caption for your file."),
        required=False)
    file4_caption = schema.TextLine(title=_("label_file_caption",
                                            default=u"Content caption"),
                                    required=False)
Beispiel #15
0
class IFormSeries(form.Schema, IPeriodicSeries):
    """
    A time-series container of related periodic forms, may contain
    shared metadata about that group of forms.
    """

    form.fieldset('Display',
                  label=u"Form display metadata",
                  fields=['contact', 'logo', 'form_css'])

    form.fieldset('Review', label=u"Review information", fields=['notes'])

    title = schema.TextLine(
        title=_(u'Title'),
        description=_(u'Series title or heading; displayed on forms.'),
        required=True,
    )

    subhead = schema.TextLine(
        title=_(u'Sub-heading'),
        description=_(u'Second-level title/heading for form display.'),
        required=False,
    )

    description = schema.Text(
        title=u'Description',
        description=_(u'Series description; may be displayed on forms.'),
        required=False,
    )

    contact = RichText(
        title=_(u'Contact'),
        description=_(u'Project manager or coordinator contact information.'),
        required=False,
    )

    series_info = RichText(
        title=_(u'Series info'),
        description=_(
            u'Series information for display on series summary page.'),
        required=False,
    )

    logo = NamedImage(
        title=_(u'Logo'),
        description=_(u'Optionally upload a logo image for display on the '
                      u'form.  If present, overrides any logo from form '
                      u'definitions on the display of contained forms'),
        required=False,
    )

    form.widget(form_css=TextAreaFieldWidget)
    form_css = schema.Bytes(
        title=_(u'Form styles'),
        description=_(u'Additional CSS stylesheet rules for forms contained '
                      u'within this series (optional).'),
        required=False,
    )

    dexterity.read_permission(notes='cmf.ReviewPortalContent')
    dexterity.write_permission(notes='cmf.ReviewPortalContent')
    notes = schema.Text(
        title=_(u'Notes'),
        description=_(u'Administrative, review notes about series.'),
        required=False,
    )

    form.order_after(frequency='description')
    form.order_after(start='frequency')
    form.order_after(end='start')
    form.order_after(active_weekdays='end')

    @invariant
    def validate_start_end(obj):
        if not (obj.start is None or obj.end is None) and obj.start > obj.end:
            raise Invalid(_(u"Start date cannot be after end date."))