def test_only_objects_inside_the_maindossier_are_selectable(self): self.login(self.regular_user) self.document.title = 'Test open' self.subdocument.title = 'Test sub' self.inactive_document.title = 'Test inactive' [obj.reindexObject() for obj in (self.document, self.subdocument, self.inactive_document)] source_binder = DossierPathSourceBinder( portal_type=("opengever.document.document", "ftw.mail.mail"), navigation_tree_query={ 'object_provides': ['opengever.dossier.behaviors.dossier.IDossierMarker', 'opengever.document.document.IDocumentSchema', 'opengever.task.task.ITask', 'ftw.mail.mail.IMail']} ) source = source_binder(self.dossier) self.assertEqual(['Test open', 'Test sub'], [term.title for term in source.search('Test')]) source = source_binder(self.subdossier) self.assertEqual(['Test open', 'Test sub'], [term.title for term in source.search('Test')]) source = source_binder(self.inactive_dossier) self.assertEqual(['Test inactive'], [term.title for term in source.search('Test')])
class IResponse(Interface): transition = schema.Choice( title=_("label_transition", default="Transition"), description=_(u"help_transition", default=""), source=util.getTransitionVocab, required=False, ) text = schema.Text( title=_('label_response', default="Response"), description=_('help_response', default=""), required=False, ) date_of_completion = schema.Date( title=_(u"label_date_of_completion", default=u"Date of completion"), description=_(u"help_date_of_completion", default=u""), required=False, ) relatedItems = RelationList( title=_(u'label_related_items', default=u'Related Items'), default=[], value_type=RelationChoice( title=u"Related", source=DossierPathSourceBinder( portal_type=("opengever.document.document", "ftw.mail.mail"), ), ), required=False, )
class IResponse(Schema): text = schema.Text( title=_('label_response', default="Response"), required=False, ) relatedItems = RelationList( title=_(u'label_related_items', default=u'Related Items'), default=[], missing_value=[], value_type=RelationChoice( title=u"Related", source=DossierPathSourceBinder( portal_type=("opengever.document.document", "ftw.mail.mail"), navigation_tree_query={ 'object_provides': [ 'opengever.dossier.behaviors.dossier.IDossierMarker', 'opengever.document.document.IDocumentSchema', 'opengever.task.task.ITask', 'ftw.mail.mail.IMail', 'opengever.meeting.proposal.IProposal', ], }, ), ), required=False, )
class ISelectTaskTemplateFolder(model.Schema): tasktemplatefolder = schema.Choice( title=_('label_tasktemplatefolder', default=u'Tasktemplatefolder'), source='opengever.tasktemplates.active_tasktemplatefolders', required=True ) related_documents = RelationList( title=_(u'label_related_documents', default=u'Related documents'), default=[], missing_value=[], value_type=RelationChoice( title=u"Related", source=DossierPathSourceBinder( portal_type=("opengever.document.document", "ftw.mail.mail"), navigation_tree_query={ 'object_provides': ['opengever.dossier.behaviors.dossier.IDossierMarker', 'opengever.document.document.IDocumentSchema', 'opengever.task.task.ITask', 'ftw.mail.mail.IMail', ], }), ), required=False, )
class ITaskTransitionResponseFormSchema(Interface): """Schema-interface class for the task transition response form """ transition = schema.Choice( title=_("label_transition", default="Transition"), source=util.getTransitionVocab, required=False, ) text = schema.Text( title=_('label_response', default="Response"), required=False, ) date_of_completion = schema.Date( title=_(u"label_date_of_completion", default=u"Date of completion"), description=_(u"help_date_of_completion", default=u""), required=False, ) relatedItems = RelationList( title=_(u'label_related_items', default=u'Related Items'), default=[], missing_value=[], value_type=RelationChoice( title=u"Related", source=DossierPathSourceBinder( portal_type=("opengever.document.document", "ftw.mail.mail"), ), ), required=False, ) reminder_option = schema.Choice( title=_("label_reminder", default="Reminder"), description=_("help_reminder", default="Set a reminder to get notified based on " "the duedate"), source="opengever.task.reminder.TaskReminderOptionsVocabulary", required=False, defaultFactory=get_current_user_reminder) reminder_option_date = schema.Date(title=_(u"lable_reminder_choose_date", default=u"Choose remind date"), required=False, defaultFactory=get_remind_on_date) @invariant def reminder_option_date_validator(data): if data.reminder_option == ReminderOnDate.option_type and \ not data.reminder_option_date: raise Invalid( _(u'no_remind_date_error', default=u'Please choose a remind date'))
class ISubmitAdditionalDocument(model.Schema): proposal = RelationChoice( title=_(u'Proposal', default=u'Proposal'), source=DossierPathSourceBinder( filter_class=SubmittableProposalFilter, portal_type=("opengever.meeting.proposal"), navigation_tree_query={ 'object_provides': [ 'opengever.dossier.behaviors.dossier.IDossierMarker', 'opengever.meeting.proposal.IProposal' ], }), required=True)
class IProposal(model.Schema): """Proposal Proxy Object Schema Interface""" dexteritytextindexer.searchable('title') title = schema.TextLine(title=_(u"label_title", default=u"Title"), required=True, max_length=256, defaultFactory=default_title) relatedItems = RelationList( title=_(u'label_attachments', default=u'Attachments'), default=[], missing_value=[], value_type=RelationChoice( title=u"Related", source=DossierPathSourceBinder( portal_type=("opengever.document.document", "ftw.mail.mail"), navigation_tree_query={ 'object_provides': [ 'opengever.dossier.behaviors.dossier.IDossierMarker', 'opengever.document.document.IDocumentSchema', 'opengever.task.task.ITask', 'opengever.meeting.proposal.IProposal', 'ftw.mail.mail.IMail', ], }), ), required=False, ) mode(predecessor_proposal='hidden') predecessor_proposal = RelationChoice( title=u'Predecessor proposal', default=None, missing_value=None, required=False, source=SolrObjPathSourceBinder( portal_type='opengever.meeting.proposal')) omitted('date_of_submission') date_of_submission = schema.Date( description=_('label_date_of_submission', default='Date of submission'), default=None, missing_value=None, required=False, )
class ISubmittedProposal(IBaseProposal): excerpts = RelationList( title=_(u'label_excerpts', default=u'Excerpts'), default=[], missing_value=[], value_type=RelationChoice( title=u'Excerpt', source=DossierPathSourceBinder( portal_type=('opengever.document.document', ), navigation_tree_query={ 'object_provides': [ 'opengever.dossier.behaviors.dossier.IDossierMarker', 'opengever.document.document.IDocumentSchema' ], }), ), required=False)
class IProposal(IBaseProposal): """Proposal Proxy Object Schema Interface""" committee_oguid = schema.Choice( title=_('label_committee', default=u'Committee'), source='opengever.meeting.ActiveCommitteeVocabulary', required=True) relatedItems = RelationList( title=_(u'label_attachments', default=u'Attachments'), default=[], missing_value=[], value_type=RelationChoice( title=u"Related", source=DossierPathSourceBinder( portal_type=("opengever.document.document", "ftw.mail.mail"), navigation_tree_query={ 'review_state': { 'not': 'document-state-shadow' }, 'object_provides': [ 'opengever.dossier.behaviors.dossier.IDossierMarker', 'opengever.document.document.IDocumentSchema', 'opengever.task.task.ITask', 'opengever.meeting.proposal.IProposal', 'ftw.mail.mail.IMail', ], }), ), required=False, ) mode(predecessor_proposal='hidden') predecessor_proposal = RelationChoice( title=_(u'predecessor_proposal_label', default=u'Predecessor proposal'), default=None, missing_value=None, required=False, source=SolrObjPathSourceBinder( portal_type='opengever.meeting.proposal'))
class IProposal(form.Schema): """Proposal Proxy Object Schema Interface""" relatedItems = RelationList( title=_(u'label_attachments', default=u'Attachments'), default=[], missing_value=[], value_type=RelationChoice( title=u"Related", source=DossierPathSourceBinder( portal_type=("opengever.document.document", "ftw.mail.mail"), navigation_tree_query={ 'object_provides': [ 'opengever.dossier.behaviors.dossier.IDossierMarker', 'opengever.document.document.IDocumentSchema', 'opengever.task.task.ITask', 'ftw.mail.mail.IMail', ], }), ), required=False, )
class IManualJournalEntry(model.Schema): """Provide a z3c.form.Schema to enter a manual journal entry.""" category = schema.Choice( title=_(u'label_category', default=u'Category'), vocabulary='opengever.journal.manual_entry_categories', required=True, ) comment = schema.Text( title=_(u'label_comment', default=u'Comment'), required=False, ) contacts = schema.List( title=_(u'label_contacts', default=u'Contacts'), value_type=schema.Choice( source=ContactsSourceBinder()), required=False, ) related_documents = RelationList( title=_(u'label_related_documents', default=u'Related Documents'), default=[], missing_value=[], value_type=RelationChoice( title=u"Related", source=DossierPathSourceBinder( portal_type=("opengever.document.document", "ftw.mail.mail"), navigation_tree_query={ 'object_provides': ['opengever.dossier.behaviors.dossier.IDossierMarker', 'opengever.document.document.IDocumentSchema', 'opengever.task.task.ITask', 'ftw.mail.mail.IMail'] }), ), required=False, )
class ISubmitAdditionalDocuments(model.Schema): """Meeting model schema interface.""" additionalDocuments = RelationList( title=_(u'label_attachments', default=u'Attachments'), default=[], missing_value=[], value_type=RelationChoice( title=u"Related", source=DossierPathSourceBinder( portal_type=("opengever.document.document", "ftw.mail.mail"), navigation_tree_query={ 'object_provides': [ 'opengever.dossier.behaviors.dossier.IDossierMarker', 'opengever.document.document.IDocumentSchema', 'opengever.task.task.ITask', 'ftw.mail.mail.IMail', ], }), ), required=True, )
class ISubmittedProposal(IProposal): dexteritytextindexer.searchable('considerations') considerations = schema.Text( title=_('label_considerations', default=u"Considerations"), required=False, ) excerpts = RelationList( title=_(u'label_excerpts', default=u'Excerpts'), default=[], missing_value=[], value_type=RelationChoice( title=u'Excerpt', source=DossierPathSourceBinder( portal_type=('opengever.document.document', ), navigation_tree_query={ 'object_provides': [ 'opengever.dossier.behaviors.dossier.IDossierMarker', 'opengever.document.document.IDocumentSchema' ], }), ), required=False)
def test_only_objects_inside_the_maindossier_are_selectable(self): dossier_1 = create(Builder('dossier')) sub = create(Builder('dossier').within(dossier_1)) dossier_2 = create(Builder('dossier')) create(Builder('document').titled(u'Test 1').within(dossier_1)) create(Builder('document').titled(u'Test 2').within(dossier_2)) source_binder = DossierPathSourceBinder( portal_type=("opengever.document.document", "ftw.mail.mail"), navigation_tree_query={ 'object_provides': [ 'opengever.dossier.behaviors.dossier.IDossierMarker', 'opengever.document.document.IDocumentSchema', 'opengever.task.task.ITask', 'ftw.mail.mail.IMail' ] }) source = source_binder(dossier_1) self.assertEqual(['Test 1'], [term.title for term in source.search('Test')]) source = source_binder(sub) self.assertEqual(['Test 1'], [term.title for term in source.search('Test')])
class ISendDocumentSchema(Interface): """The Send Document Form Schema.""" intern_receiver = schema.Tuple( title=_('intern_receiver', default="Intern receiver"), description=_('help_intern_receiver', default="Live Search: search for users and contacts"), value_type=schema.Choice( title=_(u"mails"), source=AllEmailContactsAndUsersSourceBinder()), required=False, missing_value=(), # important! default=(), ) extern_receiver = schema.List( title=_('extern_receiver', default="Extern receiver"), description=_('help_extern_receiver', default="email addresses of the receivers. " "Enter manually the addresses, one per each line."), value_type=schema.TextLine(title=_('receiver'), ), required=False, ) subject = schema.TextLine( title=_(u'label_subject', default=u'Subject'), required=True, ) message = schema.Text( title=_(u'label_message', default=u'Message'), required=True, ) documents = RelationList( title=_(u'label_documents', default=u'Attachments'), default=[], missing_value=[], value_type=RelationChoice( title=u"Documents", source=DossierPathSourceBinder( portal_type=("opengever.document.document", "ftw.mail.mail"), navigation_tree_query={ 'object_provides': ['opengever.dossier.behaviors.dossier.IDossierMarker', 'opengever.task.task.ITask', 'opengever.document.document.IDocumentSchema', 'ftw.mail.mail.IMail', ]}), ), required=False, ) documents_as_links = schema.Bool( title=_(u'label_documents_as_link', default=u'Send documents only als links'), required=True, ) file_copy_in_dossier = schema.Bool( title=_(u'label_file_copy_in_dossier', default=u'File a copy of the sent mail in dossier'), required=True, default=True, ) @invariant def validateHasEmail(self): """Check if minium one e-mail-address is given.""" if len(self.intern_receiver) == 0 and not self.extern_receiver: raise NoMail(_(u'You have to select a intern \ or enter a extern mail-addres'))
class IProposal(model.Schema): """Proposal Proxy Object Schema Interface""" dexteritytextindexer.searchable('title') title = schema.TextLine(title=_(u"label_title", default=u"Title"), required=True, max_length=256, defaultFactory=default_title) dexteritytextindexer.searchable('legal_basis') legal_basis = schema.Text( title=_('label_legal_basis', default=u"Legal basis"), required=False, ) dexteritytextindexer.searchable('initial_position') initial_position = schema.Text( title=_('label_initial_position', default=u"Initial position"), required=False, ) dexteritytextindexer.searchable('proposed_action') proposed_action = schema.Text( title=_('label_proposed_action', default=u"Proposed action"), required=False, ) dexteritytextindexer.searchable('decision_draft') decision_draft = schema.Text( title=_('label_decision_draft', default=u"Decision draft"), required=False, ) dexteritytextindexer.searchable('publish_in') publish_in = schema.Text( title=_('label_publish_in', default=u"Publish in"), required=False, ) dexteritytextindexer.searchable('disclose_to') disclose_to = schema.Text( title=_('label_disclose_to', default=u"Disclose to"), required=False, ) dexteritytextindexer.searchable('copy_for_attention') copy_for_attention = schema.Text( title=_('label_copy_for_attention', default=u"Copy for attention"), required=False, ) relatedItems = RelationList( title=_(u'label_attachments', default=u'Attachments'), default=[], missing_value=[], value_type=RelationChoice( title=u"Related", source=DossierPathSourceBinder( portal_type=("opengever.document.document", "ftw.mail.mail"), navigation_tree_query={ 'object_provides': [ 'opengever.dossier.behaviors.dossier.IDossierMarker', 'opengever.document.document.IDocumentSchema', 'opengever.task.task.ITask', 'ftw.mail.mail.IMail', ], }), ), required=False, ) mode(predecessor_proposal='hidden') predecessor_proposal = RelationChoice( title=u'Predecessor proposal', default=None, missing_value=None, required=False, source=ObjPathSourceBinder(portal_type='opengever.meeting.proposal')) omitted('date_of_submission') date_of_submission = schema.Date( description=_('label_date_of_submission', default='Date of submission'), default=None, missing_value=None, required=False, )
class ITask(model.Schema): """Define the task schema.""" model.fieldset( u'common', label=_(u'fieldset_common', default=u'Common'), fields=[ u'title', u'issuer', u'task_type', u'responsible_client', u'responsible', u'deadline', u'text', u'relatedItems', ], ) model.fieldset( u'additional', label=_(u'fieldset_additional', u'Additional'), fields=[ u'expectedStartOfWork', u'expectedDuration', u'expectedCost', u'effectiveDuration', u'effectiveCost', u'date_of_completion', ], ) dexteritytextindexer.searchable('title') title = schema.TextLine( title=_(u"label_title", default=u"Title"), description=_('help_title', default=u""), required=True, max_length=256, ) form.widget('issuer', KeywordFieldWidget, async=True) issuer = schema.Choice( title=_(u"label_issuer", default=u"Issuer"), source=UsersContactsInboxesSourceBinder(), required=True, ) form.widget(task_type='z3c.form.browser.radio.RadioFieldWidget') task_type = schema.Choice( title=_(u'label_task_type', default=u'Task Type'), description=_('help_task_type', default=u''), required=True, readonly=False, default=None, missing_value=None, source=util.getTaskTypeVocabulary, ) form.mode(responsible_client='hidden') responsible_client = schema.Choice( title=_( u'label_resonsible_client', default=u'Responsible Client', ), description=_( u'help_responsible_client', default=u'', ), vocabulary='opengever.ogds.base.OrgUnitsVocabularyFactory', required=True, ) form.widget('responsible', KeywordFieldWidget, async=True) responsible = schema.Choice( title=_(u"label_responsible", default=u"Responsible"), description=_(u"help_responsible", default=""), source=AllUsersInboxesAndTeamsSourceBinder(include_teams=True), required=True, ) form.widget(deadline=DatePickerFieldWidget) deadline = schema.Date( title=_(u"label_deadline", default=u"Deadline"), description=_(u"help_deadline", default=u""), required=True, defaultFactory=deadline_default, ) form.widget(date_of_completion=DatePickerFieldWidget) form.mode(IAddForm, date_of_completion=HIDDEN_MODE) date_of_completion = schema.Date( title=_(u"label_date_of_completion", default=u"Date of completion"), description=_(u"help_date_of_completion", default=u""), required=False, ) dexteritytextindexer.searchable('text') model.primary('text') text = schema.Text( title=_(u"label_text", default=u"Text"), description=_(u"help_text", default=u""), required=False, ) relatedItems = RelationList( title=_(u'label_related_items', default=u'Related Items'), default=[], missing_value=[], value_type=RelationChoice( title=u"Related", source=DossierPathSourceBinder( portal_type=("opengever.document.document", "ftw.mail.mail"), navigation_tree_query={ 'object_provides': [ 'opengever.dossier.behaviors.dossier.IDossierMarker', 'opengever.document.document.IDocumentSchema', 'opengever.task.task.ITask', 'ftw.mail.mail.IMail', 'opengever.meeting.proposal.IProposal', ], }, ), ), required=False, ) form.widget(expectedStartOfWork=DatePickerFieldWidget) expectedStartOfWork = schema.Date( title=_(u"label_expectedStartOfWork", default="Start with work"), required=False, ) expectedDuration = schema.Float( title=_( u"label_expectedDuration", default="Expected duration", ), description=_(u"help_expectedDuration", default="Duration in h"), required=False, ) expectedCost = schema.Float( title=_(u"label_expectedCost", default="expected cost"), description=_(u"help_expectedCost", default="Cost in CHF"), required=False, ) effectiveDuration = schema.Float( title=_(u"label_effectiveDuration", default="effective duration"), description=_(u"help_effectiveDuration", default="Duration in h"), required=False, ) effectiveCost = schema.Float( title=_(u"label_effectiveCost", default="effective cost"), description=_(u"help_effectiveCost", default="Cost in CHF"), required=False, ) form.omitted('predecessor') predecessor = schema.TextLine(title=_(u'label_predecessor', default=u'Predecessor'), required=False)
class ITask(form.Schema): form.fieldset( u'common', label=_(u'fieldset_common', default=u'Common'), fields=[ u'title', u'issuer', u'task_type', u'responsible_client', u'responsible', u'deadline', u'text', u'relatedItems', ], ) form.fieldset( u'additional', label=_(u'fieldset_additional', u'Additional'), fields=[ u'expectedStartOfWork', u'expectedDuration', u'expectedCost', u'effectiveDuration', u'effectiveCost', u'date_of_completion', ], ) dexteritytextindexer.searchable('title') title = schema.TextLine( title=_(u"label_title", default=u"Title"), description=_('help_title', default=u""), required=True, ) form.widget(issuer=AutocompleteFieldWidget) issuer = schema.Choice( title=_(u"label_issuer", default=u"Issuer"), description=_('help_issuer', default=u""), vocabulary=u'opengever.ogds.base.ContactsAndUsersVocabulary', required=True, ) form.widget(task_type='z3c.form.browser.radio.RadioFieldWidget') task_type = schema.Choice( title=_(u'label_task_type', default=u'Task Type'), description=_('help_task_type', default=u''), required=True, readonly=False, default=None, missing_value=None, source=util.getTaskTypeVocabulary, ) responsible_client = schema.Choice( title=_(u'label_resonsible_client', default=u'Responsible Client'), description=_(u'help_responsible_client', default=u''), vocabulary='opengever.ogds.base.ClientsVocabulary', required=True) form.widget(responsible=AutocompleteFieldWidget) responsible = schema.Choice( title=_(u"label_responsible", default=u"Responsible"), description=_(u"help_responsible", default=""), vocabulary=u'opengever.ogds.base.UsersAndInboxesVocabulary', required=True, ) form.widget(deadline=DatePickerFieldWidget) deadline = schema.Date( title=_(u"label_deadline", default=u"Deadline"), description=_(u"help_deadline", default=u""), required=True, ) form.widget(deadline=DatePickerFieldWidget) date_of_completion = schema.Date( title=_(u"label_date_of_completion", default=u"Date of completion"), description=_(u"help_date_of_completion", default=u""), required=False, ) dexteritytextindexer.searchable('text') form.primary('text') text = schema.Text( title=_(u"label_text", default=u"Text"), description=_(u"help_text", default=u""), required=False, ) relatedItems = RelationList( title=_(u'label_related_items', default=u'Related Items'), default=[], missing_value=[], value_type=RelationChoice( title=u"Related", source=DossierPathSourceBinder( portal_type=("opengever.document.document", "ftw.mail.mail"), navigation_tree_query={ 'object_provides': [ 'opengever.dossier.behaviors.dossier.IDossierMarker', 'opengever.document.document.IDocumentSchema', 'opengever.task.task.ITask', 'ftw.mail.mail.IMail', ], }), ), required=False, ) form.widget(deadline=DatePickerFieldWidget) expectedStartOfWork = schema.Date( title=_(u"label_expectedStartOfWork", default="Start with work"), description=_(u"help_expectedStartOfWork", default=""), required=False, ) expectedDuration = schema.Float( title=_( u"label_expectedDuration", default="Expected duration", ), description=_(u"help_expectedDuration", default="Duration in h"), required=False, ) expectedCost = schema.Float( title=_(u"label_expectedCost", default="expected cost"), description=_(u"help_expectedCost", default="Cost in CHF"), required=False, ) effectiveDuration = schema.Float( title=_(u"label_effectiveDuration", default="effective duration"), description=_(u"help_effectiveDuration", default="Duration in h"), required=False, ) effectiveCost = schema.Float( title=_(u"label_effectiveCost", default="effective cost"), description=_(u"help_effectiveCost", default="Cost in CHF"), required=False, ) form.omitted('predecessor') predecessor = schema.TextLine(title=_(u'label_predecessor', default=u'Predecessor'), description=_(u'help_predecessor', default=u''), required=False)
class ITask(model.Schema): """Define the task schema.""" model.fieldset( u'common', label=_(u'fieldset_common', default=u'Common'), fields=[ u'title', u'issuer', u'task_type', u'responsible_client', u'responsible', u'is_private', u'revoke_permissions', u'deadline', u'text', u'relatedItems', ], ) model.fieldset( u'additional', label=_(u'fieldset_additional', u'Additional'), fields=[ u'expectedStartOfWork', u'expectedDuration', u'expectedCost', u'effectiveDuration', u'effectiveCost', u'date_of_completion', ], ) dexteritytextindexer.searchable('title') title = schema.TextLine( title=_(u"label_title", default=u"Title"), description=_('help_title', default=u""), required=True, max_length=256, ) form.widget('issuer', KeywordFieldWidget, async=True) issuer = schema.Choice( title=_(u"label_issuer", default=u"Issuer"), source=UsersContactsInboxesSourceBinder(), required=True, ) form.widget(task_type='z3c.form.browser.radio.RadioFieldWidget') task_type = schema.Choice( title=_(u'label_task_type', default=u'Task Type'), description=_('help_task_type', default=u''), required=True, readonly=False, default=None, missing_value=None, source=util.getTaskTypeVocabulary, ) form.mode(responsible_client='hidden') responsible_client = schema.Choice( title=_( u'label_resonsible_client', default=u'Responsible Client', ), description=_( u'help_responsible_client', default=u'', ), vocabulary='opengever.ogds.base.OrgUnitsVocabularyFactory', required=True, ) form.widget('responsible', KeywordFieldWidget, async=True) responsible = schema.Choice( title=_(u"label_responsible", default=u"Responsible"), description=_(u"help_responsible", default=""), source=AllUsersInboxesAndTeamsSourceBinder(include_teams=True), required=True, ) form.widget(deadline=DatePickerFieldWidget) is_private = schema.Bool( title=_(u"label_is_private", default=u"Private task"), description=_(u"help_is_private", default="Deactivates the inbox-group permission."), default=False, ) form.mode(IEditForm, is_private=HIDDEN_MODE) revoke_permissions = schema.Bool( title=_(u"label_revoke_permissions", default=u"Revoke permissions."), description=_(u"help_revoke_permissions", default="Revoke permissions when closing or reassigning task."), default=True, required=False, ) deadline = schema.Date( title=_(u"label_deadline", default=u"Deadline"), description=_(u"help_deadline", default=u""), required=True, defaultFactory=deadline_default, ) form.widget(date_of_completion=DatePickerFieldWidget) form.mode(IAddForm, date_of_completion=HIDDEN_MODE) date_of_completion = schema.Date( title=_(u"label_date_of_completion", default=u"Date of completion"), description=_(u"help_date_of_completion", default=u""), required=False, ) dexteritytextindexer.searchable('text') text = schema.Text( title=_(u"label_text", default=u"Text"), description=_(u"help_text", default=u""), required=False, ) relatedItems = RelationList( title=_(u'label_related_items', default=u'Related Items'), default=[], missing_value=[], value_type=RelationChoice( title=u"Related", source=DossierPathSourceBinder( portal_type=("opengever.document.document", "ftw.mail.mail"), navigation_tree_query={ 'review_state': {'not': 'document-state-shadow'}, 'object_provides': [ 'opengever.dossier.behaviors.dossier.IDossierMarker', 'opengever.document.document.IDocumentSchema', 'opengever.task.task.ITask', 'ftw.mail.mail.IMail', 'opengever.meeting.proposal.IProposal', ], }, ), ), required=False, ) form.widget(expectedStartOfWork=DatePickerFieldWidget) expectedStartOfWork = schema.Date( title=_(u"label_expectedStartOfWork", default="Start with work"), required=False, ) expectedDuration = schema.Float( title=_(u"label_expectedDuration", default="Expected duration", ), description=_(u"help_expectedDuration", default="Duration in h"), required=False, ) expectedCost = schema.Float( title=_(u"label_expectedCost", default="expected cost"), description=_(u"help_expectedCost", default="Cost in CHF"), required=False, ) effectiveDuration = schema.Float( title=_(u"label_effectiveDuration", default="effective duration"), description=_(u"help_effectiveDuration", default="Duration in h"), required=False, ) effectiveCost = schema.Float( title=_(u"label_effectiveCost", default="effective cost"), description=_(u"help_effectiveCost", default="Cost in CHF"), required=False, ) form.omitted('predecessor') predecessor = schema.TextLine( title=_(u'label_predecessor', default=u'Predecessor'), required=False) @invariant def private_task_is_not_changed_when_disabled(data): if not is_private_task_feature_enabled() and data.is_private: # Because the z3c.form.validator.Data object has implemented a # getattr fallback, which fetches the value from the context, we # need to check if the is_private value was part of the input-data. if 'is_private' in data._Data_data___: raise Invalid(_(u'error_private_task_feature_is_disabled', default=u'The private task feature is disabled')) @invariant def revoke_permissions_is_not_changed_when_disabled(data): if not is_optional_task_permissions_revoking_enabled(): # Because the z3c.form.validator.Data object has implemented a # getattr fallback, which fetches the value from the context, we # need to check if the revoke_permissions value was part of the input-data. if 'revoke_permissions' in data._Data_data___ and not data.revoke_permissions: raise Invalid(_(u'error_revoke_permissions_feature_is_disabled', default=u'The revoke permissions feature is disabled'))