src/pyams_thesaurus/zmi/thesaurus.py
changeset 9 cef1c49d26b0
parent 5 86ddb444d0a9
child 16 33f22d044f62
equal deleted inserted replaced
8:2064d2a24a70 9:cef1c49d26b0
     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
       
    13 
    12 
    14 __docformat__ = 'restructuredtext'
    13 __docformat__ = 'restructuredtext'
    15 
    14 
    16 
    15 
    17 # import standard library
    16 # import standard library
    47 from pyams_thesaurus.loader.config import ThesaurusUpdaterConfiguration, ThesaurusExporterConfiguration
    46 from pyams_thesaurus.loader.config import ThesaurusUpdaterConfiguration, ThesaurusExporterConfiguration
    48 from pyams_thesaurus.thesaurus import Thesaurus
    47 from pyams_thesaurus.thesaurus import Thesaurus
    49 from pyams_thesaurus.zmi.extract import ThesaurusExtractsTable
    48 from pyams_thesaurus.zmi.extract import ThesaurusExtractsTable
    50 from pyams_utils.adapter import adapter_config, ContextRequestAdapter
    49 from pyams_utils.adapter import adapter_config, ContextRequestAdapter
    51 from pyams_utils.registry import query_utility, get_utility
    50 from pyams_utils.registry import query_utility, get_utility
       
    51 from pyams_utils.request import check_request
    52 from pyams_utils.traversing import get_parent
    52 from pyams_utils.traversing import get_parent
    53 from pyams_utils.url import absolute_url
    53 from pyams_utils.url import absolute_url
    54 from pyams_viewlet.manager import viewletmanager_config
    54 from pyams_viewlet.manager import viewletmanager_config
    55 from pyams_viewlet.viewlet import viewlet_config
    55 from pyams_viewlet.viewlet import viewlet_config
    56 from pyams_zmi.control_panel import UtilitiesTable
    56 from pyams_zmi.control_panel import UtilitiesTable
    92 @pagelet_config(name='add-thesaurus.html', context=ISite, layer=IPyAMSLayer, permission='system.manage')
    92 @pagelet_config(name='add-thesaurus.html', context=ISite, layer=IPyAMSLayer, permission='system.manage')
    93 class ThesaurusAddForm(AdminDialogAddForm):
    93 class ThesaurusAddForm(AdminDialogAddForm):
    94     """Thesaurus add form"""
    94     """Thesaurus add form"""
    95 
    95 
    96     title = _("Utilities")
    96     title = _("Utilities")
    97     legend = _("Add thesaurus")
    97     legend = _("Add new thesaurus")
    98     icon_css_class = 'fa fa-fw fa-language'
    98     icon_css_class = 'fa fa-fw fa-language'
    99 
    99 
   100     fields = field.Fields(IThesaurusInfo).select('name', 'title', 'subject', 'description', 'language', 'creator',
   100     fields = field.Fields(IThesaurusInfo).select('name', 'title', 'subject', 'description', 'language', 'creator',
   101                                                  'publisher', 'created')
   101                                                  'publisher', 'created')
   102     ajax_handler = 'add-thesaurus.json'
   102     ajax_handler = 'add-thesaurus.json'
   112     def add(self, object):
   112     def add(self, object):
   113         manager = self.context.getSiteManager()
   113         manager = self.context.getSiteManager()
   114         manager['thesaurus::{0}'.format(object.name.lower())] = object
   114         manager['thesaurus::{0}'.format(object.name.lower())] = object
   115 
   115 
   116     def nextURL(self):
   116     def nextURL(self):
   117         return absolute_url(self.context, self.request, 'utilities.html')
   117         return absolute_url(self.context, self.request, 'thesaurus.html')
   118 
   118 
   119 
   119 
   120 @subscriber(IDataExtractedEvent, form_selector=ThesaurusAddForm)
   120 @subscriber(IDataExtractedEvent, form_selector=ThesaurusAddForm)
   121 def handle_new_thesaurus_data_extraction(event):
   121 def handle_new_thesaurus_data_extraction(event):
   122     """Handle new thesaurus data extraction"""
   122     """Handle new thesaurus data extraction"""
   132 @view_config(name='add-thesaurus.json', context=ISite, request_type=IPyAMSLayer,
   132 @view_config(name='add-thesaurus.json', context=ISite, request_type=IPyAMSLayer,
   133              permission='system.manage', renderer='json', xhr=True)
   133              permission='system.manage', renderer='json', xhr=True)
   134 class ThesaurusAJAXAddForm(AJAXAddForm, ThesaurusAddForm):
   134 class ThesaurusAJAXAddForm(AJAXAddForm, ThesaurusAddForm):
   135     """Thesaurus add form, AJAX view"""
   135     """Thesaurus add form, AJAX view"""
   136 
   136 
       
   137     def get_ajax_output(self, changes):
       
   138         return {'status': 'redirect',
       
   139                 'location': absolute_url(self.context, self.request, 'admin.html#thesaurus.html'),
       
   140                 'close_form': True}
       
   141 
   137 
   142 
   138 @adapter_config(context=(IThesaurus, IAdminLayer, Interface), provides=ITableElementEditor)
   143 @adapter_config(context=(IThesaurus, IAdminLayer, Interface), provides=ITableElementEditor)
   139 class ThesaurusTableElementEditor(DefaultElementEditorAdapter):
   144 class ThesaurusTableElementEditor(DefaultElementEditorAdapter):
   140     """Thesaurus table element editor"""
   145     """Thesaurus table element editor"""
   141 
   146 
   152     """Thesaurus views header adapter"""
   157     """Thesaurus views header adapter"""
   153 
   158 
   154     @property
   159     @property
   155     def back_url(self):
   160     def back_url(self):
   156         site = get_parent(self.context, ISite)
   161         site = get_parent(self.context, ISite)
   157         return absolute_url(site, self.request, 'admin.html#utilities.html')
   162         return absolute_url(site, self.request, 'admin.html#thesaurus.html')
   158 
   163 
   159     back_target = None
   164     back_target = None
   160     icon_class = 'fa fa-fw fa-language'
   165     icon_class = 'fa fa-fw fa-language'
   161 
   166 
   162     @property
   167     @property
   163     def title(self):
   168     def title(self):
   164         request = check_request()
   169         request = check_request()
   165         translate = request.localizer.translate
   170         translate = request.localizer.translate
   166         return translate(_("Thesaurus « {0} »")).format(self.context.name)
   171         return translate(_("Thesaurus « {0} »")).format(self.context.title)
   167 
   172 
   168 
   173 
   169 @viewlet_config(name='properties.menu', layer=IAdminLayer, context=IThesaurus, manager=ISiteManagementMenu,
   174 @viewlet_config(name='properties.menu', layer=IAdminLayer, context=IThesaurus, manager=ISiteManagementMenu,
   170                 permission='system.view', weight=1)
   175                 permission='system.view', weight=1)
   171 @viewletmanager_config(name='properties.menu', layer=IAdminLayer, context=IThesaurus, provides=IPropertiesMenu)
   176 @viewletmanager_config(name='properties.menu', layer=IAdminLayer, context=IThesaurus, provides=IPropertiesMenu)