Exemplo n.º 1
0
    def __call__(self, context):
        # Just an example list of content for our vocabulary,
        # this can be any static or dynamic data, a catalog result for example.
        items = [
            VocabItem(u'14', _(u'14 days')),
            VocabItem(u'30', _(u'30 days')),
            VocabItem(u'60', _(u'60 days')),
            VocabItem(u'90', _(u'90 days')),
            VocabItem(u'120', _(u'120 days')),
        ]

        # Fix context if you are using the vocabulary in DataGridField.
        # See https://github.com/collective/collective.z3cform.datagridfield/issues/31:  # NOQA: 501
        if not IDexterityContent.providedBy(context):
            req = getRequest()
            context = req.PARENTS[0]

        # create a list of SimpleTerm items:
        terms = []
        for item in items:
            terms.append(
                SimpleTerm(
                    value=item.token,
                    token=str(item.token),
                    title=item.value,
                )
            )
        # Create a SimpleVocabulary from the terms list and return it:
        return SimpleVocabulary(terms)
Exemplo n.º 2
0
 def validate_start_end(data):
     if data.start and data.end and data.start > data.end and not data.open_end:
         raise StartBeforeEnd(
             _(
                 "error_end_must_be_after_start_date",
                 default=u"End date must be after start date.",
             ))
    def test_vocab_renewal_periods(self):
        vocab_name = "collective.contract_management.RenewalPeriods"
        factory = getUtility(IVocabularyFactory, vocab_name)
        self.assertTrue(IVocabularyFactory.providedBy(factory))

        vocabulary = factory(self.portal)
        self.assertTrue(IVocabularyTokenized.providedBy(vocabulary))
        self.assertEqual(vocabulary.getTerm("3").title, _(u"3 months"))
    def test_vocab_reminder_types(self):
        vocab_name = "collective.contract_management.ReminderTypes"
        factory = getUtility(IVocabularyFactory, vocab_name)
        self.assertTrue(IVocabularyFactory.providedBy(factory))

        vocabulary = factory(self.portal)
        self.assertTrue(IVocabularyTokenized.providedBy(vocabulary))
        self.assertEqual(vocabulary.getTerm("14").title, _(u"14 days"))
Exemplo n.º 5
0
class IContract(model.Schema):
    """ Marker interface and Dexterity Python Schema for Contract
    """

    # You have to import the widget!
    directives.widget("start", DatetimeWidget, pattern_options={"time": False})
    start = schema.Datetime(
        title=_(u"Contract begin"),
        description=_(u""),
        # defaultFactory=get_default_begin,
        required=False,
    )

    directives.widget("end", DatetimeWidget, pattern_options={"time": False})
    end = schema.Datetime(
        title=_(u"Contract end"),
        description=_(u""),
        # defaultFactory=get_default_end,
        required=False,
    )

    directives.widget("notice_period",
                      DatetimeWidget,
                      pattern_options={"time": False})
    notice_period = schema.Datetime(
        title=_(u"Notice period"),
        description=_(u""),
        # defaultFactory=get_default_notice_period,
        required=False,
    )

    # Make sure to import: plone.app.vocabularies as vocabs
    reminder = schema.Choice(
        title=_(u"Reminder"),
        description=_(u"Reminder, in days before Notice period."),
        vocabulary=u"collective.contract_management.ReminderTypes",
        default=u"30",
        required=False,
    )

    renewal_period = schema.Choice(
        title=_(u"Renewal period"),
        description=_(
            u"Renewal time in month for the automatic renewal of the contract."
        ),
        vocabulary=u"collective.contract_management.RenewalPeriods",
        default=u"12",
        required=False,
    )

    contract_amount = schema.TextLine(
        title=_(u"Contract amount"),
        description=_(u"The amount of the whole contract."),
        required=False,
    )

    @invariant
    def validate_start_end(data):
        if data.start and data.end and data.start > data.end and not data.open_end:
            raise StartBeforeEnd(
                _(
                    "error_end_must_be_after_start_date",
                    default=u"End date must be after start date.",
                ))
Exemplo n.º 6
0
class StartBeforeEnd(Invalid):
    __doc__ = _("error_invalid_date", default=u"Invalid start or end date")