예제 #1
0
class ICategorization(model.Schema):
    # categorization fieldset
    model.fieldset(
        'categorization',
        label=_PMF(u'label_schema_categorization', default=u'Categorization'),
        fields=['subjects', 'language'],
    )

    subjects = schema.Tuple(
        title=_PMF(u'label_tags', default=u'Tags'),
        description=_PMF(
            u'help_tags',
            default=
            u'Tags are commonly used for ad-hoc organization of content.'),
        value_type=schema.TextLine(),
        required=False,
        missing_value=(),
    )
    form.widget(subjects=TextLinesFieldWidget)

    language = schema.Choice(
        title=_PMF(u'label_language', default=u'Language'),
        vocabulary='plone.app.vocabularies.AvailableContentLanguages',
        required=False,
        missing_value='',
    )

    form.omitted('subjects', 'language')
    form.no_omit(IEditForm, 'subjects', 'language')
    form.no_omit(IAddForm, 'subjects', 'language')
예제 #2
0
class IAudio(form.Schema):
    """ Audio: only audio files are permitted """

    fieldset('audio',
             label=_(u'Tab audio'),
             fields=['title', 'description', 'file']
             )

    dexteritytextindexer.searchable('title')
    title = schema.TextLine(
        title=_PMF(u'label_title', default=u'Title'),
        required=True
    )

    dexteritytextindexer.searchable('description')
    description = schema.Text(
        title=_PMF(u'label_description', default=u'Summary'),
        description=_PMF(
            u'help_description',
            default=u'Used in item listings and search results.'
        ),
        required=False,
        missing_value=u'',
    )

    file = NamedBlobFile(
        title=_(u"Please upload a media file"),
        description=_(u"Only audio files are permitted."),
        required=True,
    )
예제 #3
0
class IPublicationOffer(model.Schema):

    form.widget('fieldset_opt', FieldsetFieldWidget)
    fieldset_opt = schema.Text(
        default=_(u'Dates'),
        required=False,
    )

    effective = schema.Datetime(
        title=_PMF(u'label_effective_date', u'Publishing Date'),
        description=_(
            u'help_effective_date',
            default=u"The date the item will be published."),
        required=False
    )

    expired = schema.Datetime(
        title=_PMF(u'label_expiration_date', u'Expiration Date'),
        description=_(
            u'help_expiration_date',
            default=u"The date that the item will expire."),
        required=False,
        defaultFactory=expiresDefaultValue,
    )

    form.omitted('effective')
    form.no_omit(IEditForm, 'expired')
    form.no_omit(IAddForm, 'expired')
예제 #4
0
class IFile(form.Schema):
    """ File: Per adjuntar els fitxers públics i/o privats
        A la part pública només fitxers PDF """

    fieldset('file',
             label=_(u'Tab file'),
             fields=['title', 'description', 'visiblefile', 'hiddenfile'])

    dexteritytextindexer.searchable('title')
    title = schema.TextLine(title=_PMF(u'label_title', default=u'Title'),
                            required=True)

    dexteritytextindexer.searchable('description')
    description = schema.Text(
        title=_PMF(u'label_description', default=u'Summary'),
        description=_PMF(u'help_description',
                         default=u'Used in item listings and search results.'),
        required=False,
        missing_value=u'',
    )

    visiblefile = NamedBlobFile(
        title=_(u"Please upload a public file"),
        description=_(u"Published file description"),
        required=False,
    )

    hiddenfile = NamedBlobFile(
        title=_(u"Please upload a reserved file"),
        description=_(u"Reserved file description"),
        required=False,
    )
class IBasic(model.Schema):

    # default fieldset
    title = schema.TextLine(
        title=_PMF(u'label_title', default=u'Title'),
        required=True
    )

    description = schema.Text(
        title=_PMF(u'label_description', default=u'Summary'),
        description=_PMF(
            u'help_description',
            default=u'Used in item listings and search results.'
        ),
        min_length=5,
        max_length=100,
        required=True,
        missing_value=u'',
    )

    directives.order_before(description='*')
    directives.order_before(title='*')

    directives.omitted('title', 'description')
    directives.no_omit(IEditForm, 'title', 'description')
    directives.no_omit(IAddForm, 'title', 'description')
예제 #6
0
class IPublication(model.Schema):
    # dates fieldset
    model.fieldset(
        'dates',
        label=_PMF(u'label_schema_dates', default=u'Dates'),
        fields=['effective', 'expires'],
    )

    effective = schema.Datetime(
        title=_PMF(u'label_effective_date', u'Publishing Date'),
        description=_PMF(
            u'help_effective_date',
            default=u"If this date is in the future, the content will "
            "not show up in listings and searches until this date."),
        required=False)

    expires = schema.Datetime(
        title=_PMF(u'label_expiration_date', u'Expiration Date'),
        description=_PMF(
            u'help_expiration_date',
            default=u"When this date is reached, the content will no"
            "longer be visible in listings and searches."),
        required=False)

    form.omitted('effective', 'expires')
    form.no_omit(IEditForm, 'effective', 'expires')
    form.no_omit(IAddForm, 'effective', 'expires')
예제 #7
0
class ITaskContent(model.Schema):
    """ Interface for task content type """

    title = schema.TextLine(title=_PMF(u'label_title', default=u'Title'),
                            required=True)

    parents_assigned_groups = LocalRolesField(
        title=_(u"Parents assigned groups"),
        required=False,
        value_type=schema.Choice(vocabulary=u'collective.task.AssignedGroups'))
    # must change widget to hide it, because default widget (orderedselect) doesn't have hidden widget template
    directives.widget('parents_assigned_groups',
                      SelectFieldWidget,
                      multiple='multiple',
                      size=10)
    directives.mode(parents_assigned_groups='hidden')

    parents_enquirers = LocalRolesField(
        title=_(u"Parents enquirers"),
        required=False,
        value_type=schema.Choice(vocabulary=u'collective.task.Enquirer'))
    # must change widget to hide it, because default widget (orderedselect) doesn't have hidden widget template
    directives.widget('parents_enquirers',
                      SelectFieldWidget,
                      multiple='multiple',
                      size=10)
    directives.mode(parents_enquirers='hidden')
class IOwnership(model.Schema):

    # ownership fieldset
    model.fieldset(
        'ownership',
        label=_PMF(
            'label_schema_ownership',
            default=u'Ownership'
        ),
        fields=['creators', 'contributors', 'rights'],
    )

    creators = schema.Tuple(
        title=_PMF(u'label_creators', u'Creators'),
        description=_PMF(
            u'help_creators',
            default=u"Persons responsible for creating the content of "
                    u"this item. Please enter a list of user names, one "
                    u"per line. The principal creator should come first."
        ),
        value_type=schema.TextLine(),
        required=False,
        missing_value=(),
    )
    directives.widget(
        'creators',
        AjaxSelectFieldWidget,
        vocabulary='plone.app.vocabularies.Users'
    )

    contributors = schema.Tuple(
        title=_PMF(u'label_contributors', u'Contributors'),
        description=_PMF(
            u'help_contributors',
            default=u"The names of people that have contributed "
                    u"to this item. Each contributor should "
                    u"be on a separate line."),
        value_type=schema.TextLine(),
        required=False,
        missing_value=(),
    )
    directives.widget(
        'contributors',
        AjaxSelectFieldWidget,
        vocabulary='plone.app.vocabularies.Users'
    )

    rights = schema.Text(
        title=_PMF(u'label_copyrights', default=u'Rights'),
        description=_PMF(
            u'help_copyrights',
            default=u'Copyright statement or other rights information on this '
                    u'item.'
        ),
        required=False,
    )

    directives.omitted('creators', 'contributors', 'rights')
    directives.no_omit(IEditForm, 'creators', 'contributors', 'rights')
    directives.no_omit(IAddForm, 'creators', 'contributors', 'rights')
예제 #9
0
class IBasic(model.Schema):
    # default fieldset
    title = schema.TextLine(title=_PMF(u'label_title', default=u'Title'),
                            required=True)

    description = schema.Text(
        title=_PMF(u'label_description', default=u'Description'),
        description=_PMF(u'help_description',
                         default=u'A short summary of the content.'),
        required=False,
        missing_value=u'',
    )

    form.order_before(description='*')
    form.order_before(title='*')

    form.omitted('title', 'description')
    form.no_omit(IEditForm, 'title', 'description')
    form.no_omit(IAddForm, 'title', 'description')
예제 #10
0
class IPaneSchema(Schema):

    title = schema.TextLine(
        title=_PMF(u'label_title', default=u'Title'),
        required=True
        )

    show_title = schema.Bool(
        title=_(u'label_show_title', default=u'Show title'),
        required=False,
        default=False,
        missing_value=False,
    )

    text = RichText(
        title=_(u'label_text', default=u'Text'),
        description=_(u'help_text', default=u''),
        required=False,
        )

    model.primary('image')
    image = NamedImage(
        title=_(u'label_image', default='Image'),
        required=True,
        )

    image_alt_text = schema.TextLine(
        title=_(u'label_image_alt_text', default=u'Image alt text'),
        required=False
        )

    form.widget(link=ReferenceWidgetFactory)
    link = schema.TextLine(
        title=_(u'label_link', default=u'Link'),
        description=_(u'help_link', default=u''),
        required=False,
        )

    external_url = schema.URI(
        title=_(u'label_external_url', default=u'External URL'),
        required=False,
    )

    @invariant
    def validate_links(data):
        """
        It is not allowed to add a link and an external url at the same time.
        """
        if data.link and data.external_url:
            raise Invalid(_(
                u'error_message_links',
                default=u'It\'s not possible to add a link and an '
                        u'external url at the same time')
            )
예제 #11
0
class INoticePublication(model.Schema):

    directives.widget(effective=DateTimePickerWidgetFactory)
    effective = schema.Datetime(
        title=_PMF(u'label_effective_date', u'Publishing Date'),
        description=_PMF(
            u'help_effective_date',
            default=u"If this date is in the future, the content will "
            u"not show up in listings and searches until this date."),
        required=True,
        defaultFactory=start_date)

    directives.widget(expires=DateTimePickerWidgetFactory)
    expires = schema.Datetime(
        title=_PMF(u'label_expiration_date', u'Expiration Date'),
        description=_PMF(
            u'help_expiration_date',
            default=u"When this date is reached, the content will no"
            u"longer be visible in listings and searches."),
        required=True,
        defaultFactory=end_date)
class IPublication(model.Schema):
    # dates fieldset
    model.fieldset(
        'dates',
        label=_PMF(u'label_schema_dates', default=u'Dates'),
        fields=['effective', 'expires'],
    )

    effective = schema.Datetime(
        title=_PMF(u'label_effective_date', u'Publishing Date'),
        description=_PMF(
            u'help_effective_date',
            default=u"If this date is in the future, the content will "
                    u"not show up in listings and searches until this date."),
        required=False
    )
    directives.widget('effective', DatetimeFieldWidget)

    expires = schema.Datetime(
        title=_PMF(u'label_expiration_date', u'Expiration Date'),
        description=_PMF(
            u'help_expiration_date',
            default=u"When this date is reached, the content will no"
                    u"longer be visible in listings and searches."),
        required=False
    )
    directives.widget('expires', DatetimeFieldWidget)

    @invariant
    def validate_start_end(data):
        if data.effective and data.expires and data.effective > data.expires:
            raise EffectiveAfterExpires(
                _("error_expiration_must_be_after_effective_date",
                  default=u"Expiration date must be after publishing date.")
            )

    directives.omitted('effective', 'expires')
    directives.no_omit(IEditForm, 'effective', 'expires')
    directives.no_omit(IAddForm, 'effective', 'expires')
예제 #13
0
class IDocument(form.Schema):
    """ Document: Per marcar si són públics o privats """

    fieldset(
        'document',
        label=_(u'Tab document'),
        fields=['title', 'description', 'defaultContent', 'alternateContent'])

    dexteritytextindexer.searchable('title')
    title = schema.TextLine(title=_PMF(u'label_title', default=u'Title'),
                            required=True)

    dexteritytextindexer.searchable('title')
    description = schema.Text(
        title=_PMF(u'label_description', default=u'Summary'),
        description=_PMF(u'help_description',
                         default=u'Used in item listings and search results.'),
        required=False,
        missing_value=u'',
    )

    directives.widget(defaultContent=WysiwygFieldWidget)
    dexteritytextindexer.searchable('defaultContent')
    defaultContent = schema.Text(
        title=_(u"Contingut public"),
        description=_(u"Default content shown in the document view"),
        required=False,
    )

    directives.widget(alternateContent=WysiwygFieldWidget)
    dexteritytextindexer.searchable('alternateContent')
    alternateContent = schema.Text(
        title=_(u"Alternate description"),
        description=_(u"Content used to hide protected content"),
        required=False,
    )
예제 #14
0
class IActa(form.Schema):
    """ ACTA """

    fieldset('acta',
             label=_(u'Tab acta'),
             fields=['title', 'horaInici', 'horaFi', 'llocConvocatoria',
                     'ordenDelDia', 'enllacVideo']
             )

    fieldset('assistents',
             label=_(u'Assistents'),
             fields=['membresConvocats', 'membresConvidats', 'llistaExcusats', 'llistaNoAssistens']
             )

    dexteritytextindexer.searchable('title')
    title = schema.TextLine(
        title=_PMF(u'label_title', default=u'Title'),
        required=True
    )

    horaInici = schema.Datetime(
        title=_(u"Session start time"),
        required=False,
    )

    horaFi = schema.Datetime(
        title=_(u"Session end time"),
        required=False,
    )

    llocConvocatoria = schema.TextLine(
        title=_(u"Session location"),
        required=False,
    )

    directives.widget(membresConvocats=WysiwygFieldWidget)
    dexteritytextindexer.searchable('membresConvocats')
    membresConvocats = schema.Text(
        title=_(u"Assistants"),
        description=_(u"Assistants help"),
        required=False,
    )

    directives.widget(membresConvidats=WysiwygFieldWidget)
    dexteritytextindexer.searchable('membresConvidats')
    membresConvidats = schema.Text(
        title=_(u"Invited members"),
        description=_(u"Invited members help"),
        required=False,
    )

    directives.widget(llistaExcusats=WysiwygFieldWidget)
    dexteritytextindexer.searchable('llistaExcusats')
    llistaExcusats = schema.Text(
        title=_(u"Excused members"),
        description=_(u"Excused members help"),
        required=False,
    )

    directives.widget(llistaNoAssistens=WysiwygFieldWidget)
    dexteritytextindexer.searchable('llistaNoAssistens')
    llistaNoAssistens = schema.Text(
        title=_(u"No assistents"),
        description=_(u"No assistents help"),
        required=False,
    )

    directives.widget(ordenDelDia=WysiwygFieldWidget)
    dexteritytextindexer.searchable('ordenDelDia')
    ordenDelDia = schema.Text(
        title=_(u"Session order"),
        description=_(u"Session order description"),
        required=False,
    )

    enllacVideo = schema.TextLine(
        title=_(u"Video link"),
        description=_(u"If you want to add a video file, not a url, there is a trick, you must add an Audio Type and leave this field empty."),
        required=False,
    )
예제 #15
0
def isEmail(value):
     prog = re.compile('^'+EMAIL_RE)
     result = prog.match(value)
     if result is None:
         raise Invalid(_PMF(u'is not a valid email address.'))
     return True
예제 #16
0
def isHTTP(value):
    if not value.startswith('http://') and not value.startswith('https://'):
        raise Invalid(_PMF(u'web address must start with http:// or https://'))
    return True
예제 #17
0
class IFoundationMember(Schema):
    """A foundation member"""

    fieldset('Contact',
             label=u'Contact',
             fields=[
                 'fname',
                 'lname',
                 'email',
                 'address',
                 'city',
                 'state',
                 'postalCode',
                 'country',
                 'organization',
             ])

    fieldset('Merit', label=u'Merit', fields=[
        'merit',
    ])

    fieldset('Survey', label=u'Survey', fields=[
        'orgsize',
        'ploneuse',
    ])

    fname = schema.TextLine(title=_PMF(u'First name', default=u'First name'),
                            required=True)

    lname = schema.TextLine(title=_PMF(u'Last name', default=u'Last name'),
                            required=True)

    read_permission(email='ploneorg.core.foundationmember.view')
    email = schema.TextLine(title=_PMF(u'Email', default=u'Email'),
                            required=True)

    read_permission(address='ploneorg.core.foundationmember.view')
    address = schema.TextLine(title=_PMF(u'Address', default=u'Address'),
                              required=True)

    city = schema.TextLine(title=_PMF(u'City', default=u'City'), required=True)

    read_permission(state='ploneorg.core.foundationmember.view')
    state = schema.TextLine(title=_PMF(u'State', default=u'State'),
                            required=True)

    read_permission(postalCode='ploneorg.core.foundationmember.view')
    postalCode = schema.TextLine(title=_PMF(u'Postal code',
                                            default=u'Postal code'),
                                 required=True)

    country = schema.Choice(title=_PMF(u'Country', default=u'Country'),
                            vocabulary=country_vocabulary,
                            required=True)

    organization = schema.TextLine(title=_PMF(u'Organization',
                                              default=u'Organization'),
                                   required=True)

    read_permission(merit='ploneorg.core.foundationmember.view')
    merit = RichText(
        title=_(u'Contributions'),
        description=_(u'Describe your contributions to the project.'),
        required=True)

    read_permission(orgsize='ploneorg.core.foundationmember.view')
    orgsize = schema.Int(
        title=_(u'Organization size'),
        description=_(
            u'Number of people in your organization. It\'s fine to estimate.'),
        required=False)

    read_permission(ploneuse='ploneorg.core.foundationmember.view')
    ploneuse = RichText(
        title=_(u'Plone use'),
        description=_(u'How is Plone used by your organization?'),
        required=False)
예제 #18
0
class IProject(model.Schema):
    """Project schema, field ordering."""

    dexteritytextindexer.searchable('description_rich')
    description_rich = RichText(
        title=_PMF(u'label_description', default=u'Summary'),
        required=False,
    )

    dexteritytextindexer.searchable('reference_number')
    reference_number = schema.Int(
        title=_(u"Reference number"),
        # description=_(u"Unique identification"),
        required=False,
        default=0,
    )

    categories = schema.List(
        title=_(u'Categories'),
        # description=_(u"Choose categories."),
        required=False,
        value_type=schema.Choice(
            source='imio.project.core.content.project.categories_vocabulary'),
        defaultFactory=default_categories,
    )
    directives.widget('categories',
                      AjaxChosenMultiFieldWidget,
                      populate_select=True)

    priority = schema.Choice(
        title=_(u'Priority'),
        # description=_(u"Choose a priority."),
        vocabulary=u'imio.project.core.content.project.priority_vocabulary',
    )

    budget = schema.List(
        title=_(u'Budget'),
        # description=_(u"Enter budget details.  If you have comments about budget, "
        #               "use the field here above."),
        required=False,
        value_type=DictRow(title=_("Budget"),
                           schema=IBudgetSchema,
                           required=False),
    )
    directives.widget('budget',
                      BudgetInfosDataGridFieldFactory,
                      display_table_css_class='listing nosort')

    budget_comments = RichText(
        title=_(u"Budget comments"),
        # description=_(u"Write here comments you have about budget."),
        required=False,
        allowed_mime_types=('text/html', ),
    )

    manager = LocalRolesField(
        title=_(u"Manager"),
        # description=_(u"Choose principals that will manage this project."),
        value_type=schema.Choice(
            vocabulary='imio.project.core.content.project.manager_vocabulary'),
        required=True,
        min_length=1,
    )
    directives.widget('manager',
                      AjaxChosenMultiFieldWidget,
                      populate_select=True)

    visible_for = LocalRolesField(
        title=_(u"Visible for"),
        # description=_(u"Choose principals that can see this project."),
        required=False,
        value_type=schema.Choice(
            vocabulary=
            'imio.project.core.content.project.visible_for_vocabulary'),
    )

    extra_concerned_people = schema.Text(
        title=_(u"Extra concerned people"),
        # description=_(u"Specify here concerned people that do not have access "
        #               "to the application, this will just be informational."),
        required=False,
    )

    result_indicator = schema.List(
        title=_(u'Result indicator'),
        description=_(u"Enter one indicator by row. Value is a number. "
                      "Label must precise the signification of this number."),
        required=False,
        value_type=DictRow(title=_("Result indicator"),
                           schema=IResultIndicatorSchema,
                           required=False),
    )
    directives.widget('result_indicator',
                      DataGridFieldFactory,
                      display_table_css_class='listing nosort')

    planned_begin_date = schema.Date(
        title=_(u'Planned begin date'),
        # description=_(u"Enter the planned begin date."),
        required=False,
        #        defaultFactory=datetime.date.today,
    )
    directives.widget(planned_begin_date=DateFieldWidget)

    effective_begin_date = schema.Date(
        title=_(u'Effective begin date'),
        # description=_(u"Enter the effective begin date."),
        required=False,
        #        defaultFactory=datetime.date.today,
    )
    directives.widget(effective_begin_date=DateFieldWidget)

    planned_end_date = schema.Date(
        title=_(u'Planned end date'),
        # description=_(u"Enter the planned end date."),
        required=False,
        #        defaultFactory=datetime.date.today,
    )
    directives.widget(planned_end_date=DateFieldWidget)

    effective_end_date = schema.Date(
        title=_(u'Effective end date'),
        # description=_(u"Enter the effective end date."),
        required=False,
        #        defaultFactory=datetime.date.today,
    )
    directives.widget(effective_end_date=DateFieldWidget)

    progress = schema.Int(
        title=_(u"Progress"),
        description=_(u"Progress estimation in %."),
        required=False,
        default=0,
    )

    observation = RichText(
        title=_(u"Observation"),
        # description=_(u"Prior determination"),
        required=False,
        allowed_mime_types=('text/html', ),
    )

    comments = RichText(
        title=_(u"Comments"),
        # description=_(u"Various comments"),
        required=False,
        allowed_mime_types=('text/html', ),
    )

    plan = schema.List(
        title=_(u'Plan'),
        # description=_(u"Choose plan."),
        required=False,
        value_type=schema.Choice(
            source='imio.project.core.content.project.plan_vocabulary'),
        defaultFactory=default_plan,
    )
    directives.widget('plan', AjaxChosenMultiFieldWidget, populate_select=True)