16 # import standard library |
16 # import standard library |
17 |
17 |
18 # import interfaces |
18 # import interfaces |
19 from pyams_skin.interfaces.viewlet import IWidgetTitleViewletManager |
19 from pyams_skin.interfaces.viewlet import IWidgetTitleViewletManager |
20 from pyams_skin.layer import IPyAMSLayer |
20 from pyams_skin.layer import IPyAMSLayer |
|
21 from pyams_thesaurus.interfaces import MANAGE_THESAURUS_CONTENT_PERMISSION |
21 from pyams_thesaurus.interfaces.term import IThesaurusTerm |
22 from pyams_thesaurus.interfaces.term import IThesaurusTerm |
22 from pyams_thesaurus.interfaces.thesaurus import IThesaurus |
23 from pyams_thesaurus.interfaces.thesaurus import IThesaurus |
|
24 from pyams_utils.interfaces import VIEW_PERMISSION |
23 from pyams_zmi.layer import IAdminLayer |
25 from pyams_zmi.layer import IAdminLayer |
24 from z3c.form.interfaces import IDataExtractedEvent, DISPLAY_MODE |
26 from z3c.form.interfaces import IDataExtractedEvent, DISPLAY_MODE |
25 |
27 |
26 # import packages |
28 # import packages |
27 from pyams_form.form import AJAXAddForm, AJAXEditForm |
29 from pyams_form.form import AJAXAddForm, AJAXEditForm |
40 |
42 |
41 from pyams_thesaurus import _ |
43 from pyams_thesaurus import _ |
42 |
44 |
43 |
45 |
44 @viewlet_config(name='thesaurus.term.adding', context=IThesaurus, view=ThesaurusTermsView, |
46 @viewlet_config(name='thesaurus.term.adding', context=IThesaurus, view=ThesaurusTermsView, |
45 layer=IAdminLayer, manager=IWidgetTitleViewletManager, permission='thesaurus.manage') |
47 layer=IAdminLayer, manager=IWidgetTitleViewletManager, permission=MANAGE_THESAURUS_CONTENT_PERMISSION) |
46 class ThesaurusTermAddAction(ToolbarAction): |
48 class ThesaurusTermAddAction(ToolbarAction): |
47 """Thesaurus term add action""" |
49 """Thesaurus term add action""" |
48 |
50 |
49 label = _("Add term") |
51 label = _("Add term") |
50 url = 'add-term.html' |
52 url = 'add-term.html' |
51 modal_target = True |
53 modal_target = True |
52 |
54 |
53 |
55 |
54 @pagelet_config(name='add-term.html', context=IThesaurus, layer=IPyAMSLayer, permission='thesaurus.manage') |
56 @pagelet_config(name='add-term.html', context=IThesaurus, layer=IPyAMSLayer, permission=MANAGE_THESAURUS_CONTENT_PERMISSION) |
55 class ThesaurusTermAddForm(AdminDialogAddForm): |
57 class ThesaurusTermAddForm(AdminDialogAddForm): |
56 """Thesaurus term add form""" |
58 """Thesaurus term add form""" |
57 |
59 |
58 @property |
60 @property |
59 def title(self): |
61 def title(self): |
104 if data.get('label') in event.form.context.terms: |
106 if data.get('label') in event.form.context.terms: |
105 event.form.widgets.errors += (Invalid(_("Specified label is already used!")), ) |
107 event.form.widgets.errors += (Invalid(_("Specified label is already used!")), ) |
106 |
108 |
107 |
109 |
108 @view_config(name='add-term.json', context=IThesaurus, request_type=IPyAMSLayer, |
110 @view_config(name='add-term.json', context=IThesaurus, request_type=IPyAMSLayer, |
109 permission='thesaurus.manage', renderer='json', xhr=True) |
111 permission=MANAGE_THESAURUS_CONTENT_PERMISSION, renderer='json', xhr=True) |
110 class ThesaurusTermAJAXAddForm(AJAXAddForm, ThesaurusTermAddForm): |
112 class ThesaurusTermAJAXAddForm(AJAXAddForm, ThesaurusTermAddForm): |
111 """Thesaurus term add form, AJAX view""" |
113 """Thesaurus term add form, AJAX view""" |
112 |
114 |
113 def get_ajax_output(self, changes): |
115 def get_ajax_output(self, changes): |
114 if changes.generic is None: |
116 if changes.generic is None: |
118 return {'status': 'callback', |
120 return {'status': 'callback', |
119 'callback': 'PyAMS_thesaurus.tree.findTerm', |
121 'callback': 'PyAMS_thesaurus.tree.findTerm', |
120 'options': {'term': label}} |
122 'options': {'term': label}} |
121 |
123 |
122 |
124 |
123 @pagelet_config(name='properties.html', context=IThesaurusTerm, layer=IPyAMSLayer, permission='view') |
125 @pagelet_config(name='properties.html', context=IThesaurusTerm, layer=IPyAMSLayer, permission=VIEW_PERMISSION) |
124 class ThesaurusTermEditForm(AdminDialogEditForm): |
126 class ThesaurusTermEditForm(AdminDialogEditForm): |
125 """Thesaurus term edit form""" |
127 """Thesaurus term edit form""" |
126 |
128 |
127 @property |
129 @property |
128 def title(self): |
130 def title(self): |
134 fields = field.Fields(IThesaurusTerm).select('label', 'alt', 'definition', 'note', 'generic', 'specifics', |
136 fields = field.Fields(IThesaurusTerm).select('label', 'alt', 'definition', 'note', 'generic', 'specifics', |
135 'associations', 'usage', 'used_for', 'extracts', 'extensions', |
137 'associations', 'usage', 'used_for', 'extracts', 'extensions', |
136 'status', 'level', 'created', 'modified') |
138 'status', 'level', 'created', 'modified') |
137 |
139 |
138 ajax_handler = 'properties.json' |
140 ajax_handler = 'properties.json' |
139 edit_permission = 'thesaurus.manage' |
141 edit_permission = MANAGE_THESAURUS_CONTENT_PERMISSION |
140 |
142 |
141 generic_changed = False |
143 generic_changed = False |
142 usage_changed = False |
144 usage_changed = False |
143 |
145 |
144 def updateWidgets(self, prefix=None): |
146 def updateWidgets(self, prefix=None): |
230 if (label != context.label) and (label in thesaurus.terms): |
232 if (label != context.label) and (label in thesaurus.terms): |
231 event.form.widgets.errors += (Invalid(_("Specified new label is already used!")), ) |
233 event.form.widgets.errors += (Invalid(_("Specified new label is already used!")), ) |
232 |
234 |
233 |
235 |
234 @pagelet_config(name='properties.json', context=IThesaurusTerm, request_type=IPyAMSLayer, |
236 @pagelet_config(name='properties.json', context=IThesaurusTerm, request_type=IPyAMSLayer, |
235 permission='thesaurus.manage', renderer='json', xhr=True) |
237 permission=MANAGE_THESAURUS_CONTENT_PERMISSION, renderer='json', xhr=True) |
236 class ThesaurusTermAJAXEditForm(AJAXEditForm, ThesaurusTermEditForm): |
238 class ThesaurusTermAJAXEditForm(AJAXEditForm, ThesaurusTermEditForm): |
237 """Thesaurus term edit form, AJAX view""" |
239 """Thesaurus term edit form, AJAX view""" |
238 |
240 |
239 def get_ajax_output(self, changes): |
241 def get_ajax_output(self, changes): |
240 if self.generic_changed: |
242 if self.generic_changed: |