src/pyams_thesaurus/zmi/term.py
changeset 19 6cb6acc05cc3
parent 5 86ddb444d0a9
child 24 e1a86d99c7d4
equal deleted inserted replaced
18:23ac4c21b235 19:6cb6acc05cc3
    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: