19 # import interfaces |
19 # import interfaces |
20 from hypatia.interfaces import ICatalog |
20 from hypatia.interfaces import ICatalog |
21 from pyams_form.interfaces.form import IFormLayer |
21 from pyams_form.interfaces.form import IFormLayer |
22 from pyams_i18n.interfaces import II18n |
22 from pyams_i18n.interfaces import II18n |
23 from pyams_sequence.interfaces import ISequentialIntIds, ISequentialIdInfo |
23 from pyams_sequence.interfaces import ISequentialIntIds, ISequentialIdInfo |
24 from pyams_sequence.schema import IInternalReference, IInternalReferencesList |
24 from pyams_sequence.schema import IInternalReferenceField, IInternalReferencesListField |
25 from pyams_sequence.widget.interfaces import IInternalReferenceWidget, IInternalReferencesListWidget |
25 from pyams_sequence.widget.interfaces import IInternalReferenceWidget, IInternalReferencesListWidget |
26 |
26 |
27 try: |
27 try: |
28 from pyams_workflow.interfaces import IWorkflowVersions, IWorkflowVersion, IWorkflowManagedContent |
28 from pyams_workflow.interfaces import IWorkflowVersions, IWorkflowVersion, IWorkflowManagedContent |
29 except ImportError: |
29 except ImportError: |
36 # import packages |
36 # import packages |
37 from hypatia.catalog import CatalogQuery |
37 from hypatia.catalog import CatalogQuery |
38 from hypatia.query import Eq, Any |
38 from hypatia.query import Eq, Any |
39 from pyams_catalog.query import CatalogResultSet |
39 from pyams_catalog.query import CatalogResultSet |
40 from pyams_form.widget import widgettemplate_config |
40 from pyams_form.widget import widgettemplate_config |
41 from pyams_sequence.utility import get_last_version |
41 from pyams_sequence.reference import get_last_version |
42 from pyams_utils.adapter import adapter_config |
42 from pyams_utils.adapter import adapter_config |
43 from pyams_utils.registry import get_utility |
43 from pyams_utils.registry import get_utility |
44 from z3c.form.browser.widget import HTMLInputWidget |
44 from z3c.form.browser.widget import HTMLInputWidget |
45 from z3c.form.converter import BaseDataConverter |
45 from z3c.form.converter import BaseDataConverter |
46 from z3c.form.widget import Widget, FieldWidget |
46 from z3c.form.widget import Widget, FieldWidget |
78 else: |
78 else: |
79 translate = self.request.localizer.translate |
79 translate = self.request.localizer.translate |
80 return json.dumps({self.value: translate(_("missing reference: {0}")).format(self.value)}) |
80 return json.dumps({self.value: translate(_("missing reference: {0}")).format(self.value)}) |
81 |
81 |
82 |
82 |
83 @adapter_config(context=(IInternalReference, IFormLayer), provides=IFieldWidget) |
83 @adapter_config(context=(IInternalReferenceField, IFormLayer), provides=IFieldWidget) |
84 def InternalReferenceFieldWidget(field, request): |
84 def InternalReferenceFieldWidget(field, request): |
85 """Internal reference field widget factory""" |
85 """Internal reference field widget factory""" |
86 return FieldWidget(field, InternalReferenceWidget(request)) |
86 return FieldWidget(field, InternalReferenceWidget(request)) |
87 |
87 |
88 |
88 |
89 # |
89 # |
90 # Internal references list widget |
90 # Internal references list widget |
91 # |
91 # |
92 |
92 |
93 @adapter_config(context=(IInternalReferencesList, IInternalReferencesListWidget), provides=IDataConverter) |
93 @adapter_config(context=(IInternalReferencesListField, IInternalReferencesListWidget), provides=IDataConverter) |
94 class InternalReferencesListDataConverter(BaseDataConverter): |
94 class InternalReferencesListDataConverter(BaseDataConverter): |
95 """Internal references list data converter""" |
95 """Internal references list data converter""" |
96 |
96 |
97 def toWidgetValue(self, value): |
97 def toWidgetValue(self, value): |
98 if not value: |
98 if not value: |
133 request=self.request), |
133 request=self.request), |
134 sequence.get_short_oid(oid_info.oid))}) |
134 sequence.get_short_oid(oid_info.oid))}) |
135 return json.dumps(results) |
135 return json.dumps(results) |
136 |
136 |
137 |
137 |
138 @adapter_config(context=(IInternalReferencesList, IFormLayer), provides=IFieldWidget) |
138 @adapter_config(context=(IInternalReferencesListField, IFormLayer), provides=IFieldWidget) |
139 def InternalReferencesListFieldWidget(field, request): |
139 def InternalReferencesListFieldWidget(field, request): |
140 """Internal references list field widget factory""" |
140 """Internal references list field widget factory""" |
141 return FieldWidget(field, InternalReferencesListWidget(request)) |
141 return FieldWidget(field, InternalReferencesListWidget(request)) |