예제 #1
0
class IRole(Interface):
    """Role interface

    A role is a set of permissions; by assigning the role to a principal,
    these permissions are also granted to the principal.
    """

    # pylint: disable=invalid-name
    id = TextLine(title="Unique ID",
                  required=True)

    title = TextLine(title="Title",
                     required=True)

    description = Text(title="Description",
                       required=False)

    permissions = Set(title="Permissions",
                      description="ID of role's permissions",
                      value_type=TextLine(),
                      required=False)

    managers = Set(title="Managers",
                   description="List of principal IDs allowed to manage this role. "
                               "If it's a role, use 'role:role_id' syntax...",
                   value_type=TextLine(),
                   required=False)
예제 #2
0
class IEventIfEventTimingRelay(IEventIfEventLogic):
    """ event interface of object """
    eventInpObjs_trigger = Set(
        title = _("trigger event <-"),
        value_type = Choice(
            title = _("objects"),
            vocabulary="AllEventInstances"),
        default = set([]),
        readonly = False,
        required = True)
    eventInpObjs_reset = Set(
        title = _("reset event <-"),
        value_type = Choice(
            title = _("objects"),
            vocabulary="AllEventInstances"),
        default = set([]),
        readonly = False,
        required = True)
    eventOutObjs_delayed = Set(
        title = _("delayed event ->"),
        value_type = Choice(
            title = _("objects"),
            vocabulary="AllEventInstances"),
        default = set([]),
        readonly = False,
        required = True)
    def eventInp_trigger(eventMsg):
        """ start the timer """
    def eventInp_reset(eventMsg):
        """ reset the timer """
    def eventOut_1sec():
        """ sends one-second event """
예제 #3
0
class IEventIfEventTimer(IEventIfEventLogic):
    """ event interface of object """
    eventInpObjs_start = Set(
        title = _("start event <-"),
        value_type = Choice(
            title = _("objects"),
            vocabulary="AllEventInstances"),
        default = set([]),
        readonly = False,
        required = True)
    eventInpObjs_stop = Set(
        title = _("stop event <-"),
        value_type = Choice(
            title = _("objects"),
            vocabulary="AllEventInstances"),
        default = set([]),
        readonly = False,
        required = True)
    eventOutObjs_pulse = Set(
        title = _("pulse event ->"),
        value_type = Choice(
            title = _("objects"),
            vocabulary="AllEventInstances"),
        default = set([]),
        readonly = False,
        required = True)
    def eventInp_start(eventMsg):
        """ start the timer """
    def eventInp_stop(eventMsg):
        """ stop the timer """
    def eventOut_pulse():
        """ sends pulse event """
예제 #4
0
class IMembershipDigestList(IMembershipList):
    digest_subscribers = Set()  # addresses of subscribers who rec'v digests
    nondigest_subscribers = Set()  # addresses of non-digest subscribers

    def is_digest_subscriber(subscriber):
        """
        Returns True or False based on whether or not the provided
        subscriber identifier represents a subscriber who receives in
        digest mode.
        """

    def has_digest_subscribers():
        """
예제 #5
0
    def testCorrectValueType(self):
        # TODO: We should not allow for a None value type.
        Set(value_type=None)

        # do not allow arbitrary value types
        self.assertRaises(ValueError, Set, value_type=object())
        self.assertRaises(ValueError, Set, value_type=Field)

        # however, allow anything that implements IField
        Set(value_type=Field())

        class FakeField(object):
            implements(IField)

        Set(value_type=FakeField())
예제 #6
0
class ICourse(Interface):
    code = TextLine(title=u"Course code", required=True)
    runBy = Set(title=u"Run by",
                value_type=Choice(
                    title=u"Department",
                    vocabulary="vocab_of_IDepartment",
                ))
    prerequisites = Set(title=u"Prerequisite courses",
                        value_type=Choice(
                            title=u"Course",
                            vocabulary="vocab_of_ICourse",
                        ))
    credits = Int(title=u"Credits", )
    assessment = List(title=u"Assessment",
                      value_type=Int(title=u"Assessment", ))
예제 #7
0
class IExtranetMember(Interface):

    mnr = TextLine(
        title=_(u"Mitgliedsnummer"),
        description=_(
            u"Benutzername für den Mitbenutzer (Mitgliedsnummer-lfd.Nr.)"),
        required=True)

    rollen = Set(title=_(u"Berechtigung"),
                 description=_(u"Berechtigung"),
                 value_type=Choice(source=vocab_berechtigungen),
                 required=False)

    passwort = Password(
        title=_(u"Passwort"),
        description=_(u"Bitte tragen Sie hier das Passwort ein."),
        min_length=5,
        max_length=8,
        required=True)

    confirm = Password(
        title=_(u"Bestätigung"),
        description=_(u"Bitte bestätigen Sie das eingegebene Passwort."),
        min_length=5,
        max_length=8,
        required=True)

    @invariant
    def arePasswordsEqual(user):
        if user.passwort != user.confirm:
            raise Invalid(
                u"Das Passwort und die Wiederholung sind nicht gleich.")

    def getBaseUser():
        """Return the User Representation
예제 #8
0
    def testValidateRequiredAltMissingValue(self):
        missing = object()
        field = Set(required=True, missing_value=missing)
        field.validate(set())
        field.validate(set())

        self.assertRaises(RequiredMissing, field.validate, missing)
예제 #9
0
 def test_widget_set_not_orderable(self):
     from plone.app.widgets.dx import SelectWidget
     widget = SelectWidget(self.request)
     # A set is not orderable
     widget.field = Set(
         __name__='selectfield',
         value_type=Choice(values=['one', 'two', 'three'])
     )
     widget.terms = widget.field.value_type.vocabulary
     self.assertEqual(
         {
             'multiple': True,
             'name': None,
             'pattern_options': {
                 'multiple': True, 'separator': ';'},
             'pattern': 'select2',
             'value': (),
             'items': [
                 ('one', 'one'),
                 ('two', 'two'),
                 ('three', 'three')
             ]
         },
         widget._base_args(),
     )
예제 #10
0
class IBugNominationForm(Interface):
    """The browser form for nominating bugs for series."""

    nominatable_series = Set(
        title=_("Series that can be nominated"), required=True,
        value_type=Choice(vocabulary="BugNominatableSeries"),
        constraint=can_be_nominated_for_series)
예제 #11
0
class IHasCustomLanguageCodes(Interface):
    """A context that can have custom language codes attached.

    Implemented by `Product` and `SourcePackage`.
    """
    custom_language_codes = Set(
        title=_("Custom language codes"),
        description=_("Translations for these language codes are re-routed."),
        value_type=Object(schema=ICustomLanguageCode),
        required=False,
        readonly=False)

    has_custom_language_codes = Bool(
        title=_("There are custom language codes in this context."),
        readonly=True,
        required=True)

    def getCustomLanguageCode(language_code):
        """Retrieve `CustomLanguageCode` for `language_code`.

        :return: a `CustomLanguageCode`, or None.
        """

    def createCustomLanguageCode(language_code, language):
        """Create `CustomLanguageCode`.

        :return: the new `CustomLanguageCode` object.
        """

    def removeCustomLanguageCode(language_code):
        """Remove `CustomLanguageCode`.
예제 #12
0
class IReservedNames(Interface):
    """A sequence of names that are reserved for that container"""

    reservedNames = Set(
        title=_(u'Reserved Names'),
        description=_(u'Names that are not allowed for addable content'),
        required=True,
    )
예제 #13
0
class IMembershipList(ISubscriptionList):
    allowed_senders = Set()  #email addresses of all allowed senders
    allowed_senders_data = Dict()  #full dictionary of emails and userid for

    #allowed senders and their subscription status

    def is_allowed_sender(allowed_sender):
        """ 
예제 #14
0
class IAdmUtilUserManagement(ISupernode, IAuthentication):
    """
    major component for user registration and management
    """
    timezone = Choice(
        title=_("Time Zone"),
        description=_("Time Zone used to display your calendar"),
        values=pytz.common_timezones,
        required = False)
    email = EmailValid(
        title = _(u"Email address"),
        required=False
        )
    notifierChannels = Set(
        title = _("Notifier channels"),
        value_type = Choice(
            title = _("notifier channel"),
            vocabulary="notifierChannels"),
        default = set([]),
        readonly = False,
        required = True)
    notifierLevel = Choice(
        title=_("Notifier level"),
        description=_("minimum notification level"),
        default=u"warning",
        required = True,
        vocabulary = "notifierLevels")

    shortEmail = EmailValid(
        title = _(u"Short email address"),
        required=False
        )
    shortNotifierChannels = Set(
        title = _("Short notifier channels"),
        value_type = Choice(
            title = _("notifier channel"),
            vocabulary="notifierChannels"),
        default = set([]),
        readonly = False,
        required = True)
    shortNotifierLevel = Choice(
        title=_("Short notifier level"),
        description=_("minimum notification level for short messages"),
        default=u"error",
        required = True,
        vocabulary = "notifierLevels")
예제 #15
0
class ISDMExperiment(IExperiment):

    form.widget('functions', FunctionsFieldWidget)
    functions = List(
        title=u'Algorithm',
        value_type=Choice(vocabulary='sdm_functions_source'),
        default=None,
        required=True,
    )

    form.widget('species_occurrence_dataset',
                DatasetFieldWidget,
                genre=['DataGenreSpeciesOccurrence'],
                errmsg=u"Please select at least 1 occurrence dataset.",
                vizclass=u'bccvl-occurrence-viz')
    species_occurrence_dataset = TextLine(
        title=u'Species Occurrence Datasets',
        default=None,
        required=True,
    )

    form.widget('species_absence_dataset',
                DatasetFieldWidget,
                genre=['DataGenreSpeciesAbsence'],
                errmsg=u"Please select at least 1 emmission scenario.",
                vizclass=u'bccvl-absence-viz')
    species_absence_dataset = TextLine(
        title=u'Species Absence Datasets',
        default=None,
        required=False,
    )

    species_pseudo_absence_points = Bool(
        title=u"Pseudo absence points",
        description=u"Enable generation of random pseudo absence "
        u"points across area defined in environmental data",
        default=False,
        required=False)

    species_number_pseudo_absence_points = Int(
        title=u"Number of pseudo absence points",
        description=u"The number of random pseudo absence points to generate",
        default=10000,
        required=False)

    form.widget('environmental_datasets',
                DatasetDictFieldWidget,
                multiple='multiple',
                genre=['DataGenreCC', 'DataGenreE'],
                filters=['text', 'source', 'layer', 'resolution'],
                errmsg=u"Please select at least 1 layer.")
    environmental_datasets = Dict(
        title=u'Climate & Environmental Datasets',
        key_type=TextLine(),
        value_type=Set(value_type=TextLine()),
        required=True,
    )
예제 #16
0
class ICategoryAssignment(Interface):

    portal_type = Choice(title=_(u"Portal Type"),
                         required=True,
                         vocabulary="plone.contentratings.portal_types")
    assigned_categories = Set(
        title=_(u"Categories"),
        value_type=Choice(title=_(u"Category"),
                          vocabulary="plone.contentratings.categories"),
        required=False)
예제 #17
0
class IEventSchema(Interface):

    """Schema for event views.
    """

    title = TextLine(
        title=_(u'Title'),
        required=False,
        missing_value=u'',
        max_length=100)

    contact_name = TextLine(
        title=_(u'Contact Name'),
        required=False,
        missing_value=u'',
        max_length=100)

    location = TextLine(
        title=_(u'Location'),
        required=False,
        missing_value=u'',
        max_length=100)

    contact_email = EmailLine(
        title=_(u'Contact Email'),
        required=False)

    categories = Set(
        title=_(u'Category'),
        required=False,
        missing_value=set(),
        value_type=Choice(vocabulary="cmf.calendar.AvailableEventTypes"))

    contact_phone = TextLine(
        title=_(u'Contact Phone'),
        required=False,
        missing_value=u'',
        max_length=100)

    event_url = URI(
        title=_(u'URL'),
        required=False,
        missing_value=u'',
        max_length=100)

    start_date = Datetime(
        title=_(u'From'),)

    stop_date = Datetime(
        title=_(u'To'),)

    description = Text(
        title=_(u'Description'),
        required=False,
        missing_value=u'')
예제 #18
0
class IStaff(IPerson):
    department = Choice(
        title=u"Department",
        vocabulary="vocab_of_IDepartment",
    )
    teaches = Set(title=u"Teaches",
                  value_type=Choice(
                      title=u"Course",
                      vocabulary="vocab_of_ICourse",
                  ))
    salary = Int(title=u"Name", )
예제 #19
0
class IVCGECondition(Interface):
    """ Interface utilizada para descrever os elementos configuraveis
        desta condicao.
    """

    skos = Set(title=_(u'VCGE'),
               description=_(u'Termos a serem procurados. Deixe em branco '
                             u'para selecionar conteúdos sem nenhum termo VCGE '
                             u'aplicado.'),
               required=False,
               value_type=Choice(vocabulary=VOCAB))
예제 #20
0
class IDemoContent(Interface):

    now = Datetime(title=u"Now", readonly=True)

    startDate = Date(title=u"Start Date")
    endDate = Date(title=u"End Date")

    startDatetime = Datetime(title=u"Start Datetime")
    endDatetime = Datetime(title=u"End Datetime")

    severalDates = Set(title=u"Several dates", value_type=Date(title=u"Date"))
예제 #21
0
class ISubjectCondition(Interface):
    '''Interface for the configurable aspects of a Tag condition.
       This is also used to create add and edit forms, below.
    '''

    subject = Set(title=_(u'Tags'),
                  description=_(u'Tags to check for. Leave it blank '
                                u'to check for contents without any '
                                u'tag set'),
                  required=False,
                  value_type=Choice(vocabulary=VOCAB))
예제 #22
0
class IEventIfHostVMwareEsx(IEventIfEventHost):
    """ event interface of object """
    eventInpObjs_inward_relaying_shutdown = Set(
        title=_("inward relaying shutdown <-"),
        value_type=Choice(title=_("objects"), vocabulary="AllEventInstances"),
        default=set([]),
        readonly=False,
        required=True)

    def eventInp_inward_relaying_shutdown(eventMsg):
        """
예제 #23
0
class IEventIfAdmUtilTicker(IEventIfSupernode):
    """ event interface of object """
    eventOutObjs_1sec = Set(title=_("1sec. event ->"),
                            value_type=Choice(title=_("objects"),
                                              vocabulary="AllEventInstances"),
                            default=set([]),
                            readonly=False,
                            required=True)

    def eventOut_1sec(self):
        """ sends one-second event """
예제 #24
0
class IEventIfEventHost(IEventIfSupernode):
    """ event interface of object """

    eventInpObjs_shutdown = Set(title=_("shutdown event <-"),
                                value_type=Choice(
                                    title=_("objects"),
                                    vocabulary="AllEventInstances"),
                                default=set([]),
                                readonly=False,
                                required=True)

    eventOutObjs_nagiosError = Set(title=_("nagiosError ->"),
                                   value_type=Choice(
                                       title=_("objects"),
                                       vocabulary="AllEventInstances"),
                                   default=set([]),
                                   readonly=False,
                                   required=False)

    def eventInp_shutdown(eventMsg):
        """ start the shutdown of the host """
예제 #25
0
    def testValidateRequired(self):
        field = Set(title=u'Set field',
                    description=u'',
                    readonly=False,
                    required=True)
        field.validate(set())
        field.validate(set((1, 2)))
        field.validate(set((3, )))
        field.validate(set())
        field.validate(set((1, 2)))
        field.validate(set((3, )))

        self.assertRaises(RequiredMissing, field.validate, None)
예제 #26
0
class INegotiator(Interface):
    """Local negotiator utility manager interface."""

    policy = Choice(
        title=_("Language lookup policy"),
        description=_("Defines how the language lookup is working."),
        values=LANGUAGE_POLICIES,
        default='session --> browser --> server',
        required=True)

    server_language = Choice(
        title=_("Server language"),
        description=_("The language used for server policy."),
        vocabulary=BASE_LANGUAGES_VOCABULARY_NAME,
        default='en',
        required=True)

    offered_languages = Set(
        title=_("Offered languages"),
        description=_("A list of offered languages. Can be used to "
                      "user select languages which are offered in "
                      "a skin."
                      ""),
        value_type=Choice(vocabulary=BASE_LANGUAGES_VOCABULARY_NAME),
        default={'en'},
        required=True)

    cache_enabled = Bool(
        title=_("Language caching enabled"),
        description=_("Language caching enabled (per request)"),
        required=True,
        default=False)

    @invariant
    def check_policy(self):
        """Check against invalid policy"""
        if self.policy not in LANGUAGE_POLICIES:
            raise Invalid(_("Unsupported language policy"))

    def get_language(self, request):
        """Return the matching language to use.

        If 'lang' parameter is defined into request, this lang is returned.
        Otherwise, returned language is based on browser settings, user's session or
        server's language, depending on negotiator's settings.

        If no match is found, None is returned.
        """

    def clear_cache(self, request):
        """Clear cached language value"""
예제 #27
0
 def test_widget_set_not_orderable(self):
     from plone.app.widgets.dx import AjaxSelectWidget
     widget = AjaxSelectWidget(self.request)
     # A set is not orderable
     widget.field = Set(__name__='selectfield')
     self.assertEqual(
         {
             'name': None,
             'value': u'',
             'pattern': 'select2',
             'pattern_options': {'separator': ';'},
         },
         widget._base_args(),
     )
예제 #28
0
class ISearchQuestionsForm(Interface):
    """Schema for the search question form."""

    search_text = TextLine(title=_('Search text'), required=False)

    sort = Choice(title=_('Sort order'),
                  required=True,
                  vocabulary=QuestionSort,
                  default=QuestionSort.RELEVANCY)

    status = Set(title=_('Status'),
                 required=False,
                 value_type=Choice(vocabulary=QuestionStatus),
                 default=set(QUESTION_STATUS_DEFAULT_SEARCH))
예제 #29
0
class FeaturedProjectForm(Interface):
    """Form that requires the user to choose a pillar to feature."""

    add = Choice(
        title=_("Add project"),
        description=_(
            "Choose a project to feature on the Launchpad home page."),
        required=False, vocabulary='DistributionOrProductOrProjectGroup')

    remove = Set(
        title=u'Remove projects',
        description=_(
            'Select projects that you would like to remove from the list.'),
        required=False,
        value_type=Choice(vocabulary="FeaturedProject"))
예제 #30
0
class IStudent(IPerson):
    major = Choice(
        title=u"Department",
        vocabulary="vocab_of_IDepartment",
    )
    supervisedBy = List(title=u"Supervised by",
                        value_type=Choice(
                            title=u"Member of staff",
                            vocabulary="vocab_of_IStaff",
                        ))
    takes = Set(title=u"Takes",
                value_type=Choice(
                    title=u"Course",
                    vocabulary="vocab_of_ICourse",
                ))