src/pyams_thesaurus/zmi/thesaurus.py
changeset 5 86ddb444d0a9
parent 3 5c1931a42176
child 9 cef1c49d26b0
equal deleted inserted replaced
4:5dc0c1fa6af6 5:86ddb444d0a9
     7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
     7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
    10 # FOR A PARTICULAR PURPOSE.
    10 # FOR A PARTICULAR PURPOSE.
    11 #
    11 #
       
    12 from pyams_utils.request import check_request
    12 
    13 
    13 __docformat__ = 'restructuredtext'
    14 __docformat__ = 'restructuredtext'
    14 
    15 
    15 
    16 
    16 # import standard library
    17 # import standard library
    36 # import packages
    37 # import packages
    37 from pyams_form.form import AJAXAddForm, AJAXEditForm
    38 from pyams_form.form import AJAXAddForm, AJAXEditForm
    38 from pyams_form.schema import CloseButton
    39 from pyams_form.schema import CloseButton
    39 from pyams_pagelet.pagelet import pagelet_config
    40 from pyams_pagelet.pagelet import pagelet_config
    40 from pyams_skin.layer import IPyAMSLayer
    41 from pyams_skin.layer import IPyAMSLayer
    41 from pyams_skin.page import InnerPage
    42 from pyams_skin.page import InnerPage, DefaultPageHeaderAdapter
    42 from pyams_skin.table import DefaultElementEditorAdapter
    43 from pyams_skin.table import DefaultElementEditorAdapter
    43 from pyams_skin.viewlet.menu import MenuItem
    44 from pyams_skin.viewlet.menu import MenuItem
    44 from pyams_skin.viewlet.toolbar import ToolbarMenuItem
    45 from pyams_skin.viewlet.toolbar import ToolbarMenuItem
    45 from pyams_template.template import template_config
    46 from pyams_template.template import template_config
    46 from pyams_thesaurus.loader.config import ThesaurusUpdaterConfiguration, ThesaurusExporterConfiguration
    47 from pyams_thesaurus.loader.config import ThesaurusUpdaterConfiguration, ThesaurusExporterConfiguration
    47 from pyams_thesaurus.thesaurus import Thesaurus
    48 from pyams_thesaurus.thesaurus import Thesaurus
    48 from pyams_thesaurus.zmi.extract import ThesaurusExtractsTable
    49 from pyams_thesaurus.zmi.extract import ThesaurusExtractsTable
    49 from pyams_utils.adapter import adapter_config, ContextRequestAdapter, ContextRequestViewAdapter
    50 from pyams_utils.adapter import adapter_config, ContextRequestAdapter
    50 from pyams_utils.registry import query_utility, get_utility
    51 from pyams_utils.registry import query_utility, get_utility
    51 from pyams_utils.traversing import get_parent
    52 from pyams_utils.traversing import get_parent
    52 from pyams_utils.url import absolute_url
    53 from pyams_utils.url import absolute_url
    53 from pyams_viewlet.manager import viewletmanager_config
    54 from pyams_viewlet.manager import viewletmanager_config
    54 from pyams_viewlet.viewlet import viewlet_config
    55 from pyams_viewlet.viewlet import viewlet_config
   144     @property
   145     @property
   145     def url(self):
   146     def url(self):
   146         return resource_url(self.context, self.request, 'admin.html#{0}'.format(self.view_name))
   147         return resource_url(self.context, self.request, 'admin.html#{0}'.format(self.view_name))
   147 
   148 
   148 
   149 
   149 class ThesaurusHeaderAdapter(ContextRequestViewAdapter):
   150 @adapter_config(context=(IThesaurus, IAdminLayer, Interface), provides=IPageHeader)
       
   151 class ThesaurusHeaderAdapter(DefaultPageHeaderAdapter):
   150     """Thesaurus views header adapter"""
   152     """Thesaurus views header adapter"""
   151 
   153 
   152     @property
   154     @property
   153     def back_url(self):
   155     def back_url(self):
   154         site = get_parent(self.context, ISite)
   156         site = get_parent(self.context, ISite)
   155         return absolute_url(site, self.request, 'admin.html#utilities.html')
   157         return absolute_url(site, self.request, 'admin.html#utilities.html')
   156 
   158 
   157     back_target = None
   159     back_target = None
   158     icon_class = 'fa fa-fw fa-language'
   160     icon_class = 'fa fa-fw fa-language'
   159     title = _("Thesaurus management")
   161 
       
   162     @property
       
   163     def title(self):
       
   164         request = check_request()
       
   165         translate = request.localizer.translate
       
   166         return translate(_("Thesaurus « {0} »")).format(self.context.name)
   160 
   167 
   161 
   168 
   162 @viewlet_config(name='properties.menu', layer=IAdminLayer, context=IThesaurus, manager=ISiteManagementMenu,
   169 @viewlet_config(name='properties.menu', layer=IAdminLayer, context=IThesaurus, manager=ISiteManagementMenu,
   163                 permission='system.view', weight=1)
   170                 permission='system.view', weight=1)
   164 @viewletmanager_config(name='properties.menu', layer=IAdminLayer, context=IThesaurus, provides=IPropertiesMenu)
   171 @viewletmanager_config(name='properties.menu', layer=IAdminLayer, context=IThesaurus, provides=IPropertiesMenu)
   199              permission='system.manage', renderer='json', xhr=True)
   206              permission='system.manage', renderer='json', xhr=True)
   200 class ThesaurusPropertiesAJAXEditForm(AJAXEditForm, ThesaurusPropertiesEditForm):
   207 class ThesaurusPropertiesAJAXEditForm(AJAXEditForm, ThesaurusPropertiesEditForm):
   201     """Thesaurus properties edit form, AJAX view"""
   208     """Thesaurus properties edit form, AJAX view"""
   202 
   209 
   203 
   210 
   204 @adapter_config(context=(IThesaurus, IAdminLayer, ThesaurusPropertiesEditForm), provides=IPageHeader)
       
   205 class ThesaurusPropertiesEditFormHeaderAdapter(ThesaurusHeaderAdapter):
       
   206 
       
   207     subtitle = _("Thesaurus properties")
       
   208 
       
   209 
       
   210 #
   211 #
   211 # Thesaurus terms views
   212 # Thesaurus terms views
   212 #
   213 #
   213 
   214 
   214 @viewlet_config(name='terms.menu', context=IThesaurus, layer=IAdminLayer, manager=ISiteManagementMenu,
   215 @viewlet_config(name='terms.menu', context=IThesaurus, layer=IAdminLayer, manager=ISiteManagementMenu,
   244                       key=lambda x: x.label)
   245                       key=lambda x: x.label)
   245 
   246 
   246     @property
   247     @property
   247     def search_query_params(self):
   248     def search_query_params(self):
   248         return json.dumps({'thesaurus_name': self.context.name})
   249         return json.dumps({'thesaurus_name': self.context.name})
   249 
       
   250 
       
   251 @adapter_config(context=(IThesaurus, IPyAMSLayer, ThesaurusTermsView), provides=IPageHeader)
       
   252 class ThesaurusTermsHeaderAdapter(ThesaurusHeaderAdapter):
       
   253 
       
   254     subtitle = _("Thesaurus terms")
       
   255 
   250 
   256 
   251 
   257 class BaseTreeNodesView(object):
   252 class BaseTreeNodesView(object):
   258     """Base tree nodes views"""
   253     """Base tree nodes views"""
   259 
   254