diff --git a/themis/fields/__init__.py b/themis/fields/__init__.py index 1d8f9e0..90f29e8 100644 --- a/themis/fields/__init__.py +++ b/themis/fields/__init__.py @@ -26,6 +26,7 @@ from themis.fields.interfaces import IDateOnly from themis.fields.interfaces import IRadioChoice from themis.fields.interfaces import ISubjects, ILegisSession, IList from themis.fields.interfaces import IRelatedDoc +from themis.fields.interfaces import IMailRefId from themis.fields.vocabs import SubjectsSource from themis.fields.vocabs import LegislativeSessionsSource @@ -352,3 +353,8 @@ class RelatedDoc(Relation): clone.vocabulary = self.vocabulary(object) return clone + +class MailRefId(Field): + implements(IMailRefId) + + diff --git a/themis/fields/editors.py b/themis/fields/editors.py index d3abd8a..cad3f68 100644 --- a/themis/fields/editors.py +++ b/themis/fields/editors.py @@ -13,6 +13,7 @@ from themis.fields import Deputy, Deputies from themis.fields import Ministry, Ministries from themis.fields import DeputyOrMinistry, DeputiesOrMinistries from themis.fields import RelatedDoc +from themis.fields import MailRefId from plone.schemaeditor.fields import FieldFactory @interface.implementer(editor_ifaces.IFieldEditFormSchema) @@ -44,3 +45,5 @@ DateOnlyFactory = FieldFactory(DateOnly, u'Date') RadioChoiceFactory = FieldFactory(RadioChoice, u'Choice (radio)', values=[]) RelatedDocFactory = FieldFactory(RelatedDoc, u'Related Document') + +MailRefIdFactory = FieldFactory(MailRefId, u'Mail Reference') diff --git a/themis/fields/editors.zcml b/themis/fields/editors.zcml index 159af36..1a15aff 100644 --- a/themis/fields/editors.zcml +++ b/themis/fields/editors.zcml @@ -77,4 +77,9 @@ component=".editors.RelatedDocFactory" /> + + diff --git a/themis/fields/handlers.py b/themis/fields/handlers.py index 28a1fc9..1b83b8b 100644 --- a/themis/fields/handlers.py +++ b/themis/fields/handlers.py @@ -22,6 +22,7 @@ if HAVE_SUPERMODEL: from themis.fields import Contact, Contacts from themis.fields import LegisSession from themis.fields import RelatedDoc + from themis.fields import MailRefId class CommissionHandler_(BaseHandler): pass @@ -98,4 +99,9 @@ if HAVE_SUPERMODEL: RelatedDocHandler = RelatedDocHandler_(RelatedDoc) + class MailRefIdHandler_(BaseHandler): + pass + + MailRefIdHandler = MailRefIdHandler_(MailRefId) + diff --git a/themis/fields/handlers.zcml b/themis/fields/handlers.zcml index 7cef426..c7375ff 100644 --- a/themis/fields/handlers.zcml +++ b/themis/fields/handlers.zcml @@ -79,4 +79,9 @@ name="themis.fields.RelatedDoc" /> + + diff --git a/themis/fields/interfaces.py b/themis/fields/interfaces.py index 6295f2f..68cf7ea 100644 --- a/themis/fields/interfaces.py +++ b/themis/fields/interfaces.py @@ -93,3 +93,15 @@ class IRelatedDoc(IRelation): title=IField['missing_value'].title, description=IField['missing_value'].description, required=False) + + +class IMailRefId(IField): + default = schema.Text( + description=IField['default'].description, + required=False) + + missing_value = schema.Text( + title=IField['missing_value'].title, + description=IField['missing_value'].description, + required=False) + diff --git a/themis/fields/widgets.py b/themis/fields/widgets.py index 7882273..c76bd30 100644 --- a/themis/fields/widgets.py +++ b/themis/fields/widgets.py @@ -19,6 +19,7 @@ from themis.fields.interfaces import IMinistry, IMinistries from themis.fields.interfaces import IDeputyOrMinistry, IDeputiesOrMinistries from themis.fields.interfaces import IOrderedSelectAndAddWidget from themis.fields.interfaces import IRelatedDoc +from themis.fields.interfaces import IMailRefId from plone.formwidget.autocomplete.interfaces import IAutocompleteWidget from plone.formwidget.autocomplete.widget import AutocompleteSelectionWidget @@ -27,6 +28,7 @@ from plone.formwidget.autocomplete import AutocompleteFieldWidget from z3c.form.browser.orderedselect import OrderedSelectWidget from z3c.form.browser.checkbox import CheckBoxWidget from z3c.form.browser.select import SelectWidget +from z3c.form.browser.text import TextWidget from z3c.form.browser.radio import RadioWidget from plone.formwidget.contenttree.widget import ContentTreeWidget @@ -189,3 +191,10 @@ def RelatedDocFieldWidget(field, request): '''IFieldWidget factory for RadioChoiceWidget''' return FieldWidget(field, ContentTreeWidget(request)) +@adapter(IMailRefId, IFormLayer) +@implementer(IFieldWidget) +def MailRefIdFieldWidget(field, request): + """IFieldWidget factory for MailRefId""" + return FieldWidget(field, TextWidget(request)) + + diff --git a/themis/fields/widgets.zcml b/themis/fields/widgets.zcml index ffd411c..83d7ac1 100644 --- a/themis/fields/widgets.zcml +++ b/themis/fields/widgets.zcml @@ -30,6 +30,7 @@ +