src/pyams_gis/zmi/utility.py
changeset 37 f8916da0b16b
parent 8 8c78078cd105
equal deleted inserted replaced
36:3ccb1e8d695f 37:f8916da0b16b
    30 
    30 
    31 # import packages
    31 # import packages
    32 from pyams_form.form import AJAXEditForm
    32 from pyams_form.form import AJAXEditForm
    33 from pyams_i18n.column import I18nAttrColumn
    33 from pyams_i18n.column import I18nAttrColumn
    34 from pyams_pagelet.pagelet import pagelet_config
    34 from pyams_pagelet.pagelet import pagelet_config
    35 from pyams_skin.container import ContainerView
    35 from pyams_skin.container import ContainerView, delete_container_element
    36 from pyams_skin.page import DefaultPageHeaderAdapter
    36 from pyams_skin.page import DefaultPageHeaderAdapter
    37 from pyams_skin.table import DefaultElementEditorAdapter, BaseTable, I18nColumn, TrashColumn
    37 from pyams_skin.table import DefaultElementEditorAdapter, BaseTable, I18nColumn, TrashColumn
    38 from pyams_skin.viewlet.menu import MenuItem
    38 from pyams_skin.viewlet.menu import MenuItem
    39 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter
    39 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter
    40 from pyams_utils.registry import query_utility
    40 from pyams_utils.registry import query_utility
    86 
    86 
    87     @property
    87     @property
    88     def data_attributes(self):
    88     def data_attributes(self):
    89         manager = query_utility(IMapManager)
    89         manager = query_utility(IMapManager)
    90         attributes = super(MapManagerLayersTable, self).data_attributes
    90         attributes = super(MapManagerLayersTable, self).data_attributes
    91         table_attrs = {'data-ams-location': absolute_url(manager, self.request),
    91         attributes.setdefault('table', {}).update({
    92                        'data-ams-delete-target': 'delete-layer.json'}
    92             'data-ams-location': absolute_url(manager, self.request)
    93         if 'table' in attributes:
    93         })
    94             attributes['table'].update(table_attrs)
       
    95         else:
       
    96             attributes['table'] = table_attrs
       
    97         return attributes
    94         return attributes
    98 
    95 
    99 
    96 
   100 @adapter_config(name='name', context=(Interface, IAdminLayer, MapManagerLayersTable), provides=IColumn)
    97 @adapter_config(name='name', context=(Interface, IAdminLayer, MapManagerLayersTable), provides=IColumn)
   101 class MapManagerLayersNameColumn(I18nColumn, GetAttrColumn):
    98 class MapManagerLayersNameColumn(I18nColumn, GetAttrColumn):
   134 
   131 
   135     icon_hint = _("Delete layer")
   132     icon_hint = _("Delete layer")
   136     permission = MANAGE_SYSTEM_PERMISSION
   133     permission = MANAGE_SYSTEM_PERMISSION
   137 
   134 
   138 
   135 
       
   136 @view_config(name='delete-element.json', context=IMapManager, request_type=IPyAMSLayer,
       
   137              permission=MANAGE_SYSTEM_PERMISSION, renderer='json', xhr=True)
       
   138 def delete_map_manager_layer(request):
       
   139     """Delete layer from map manager"""
       
   140     return delete_container_element(request, ignore_permission=True)
       
   141 
       
   142 
   139 @adapter_config(context=(ISite, IAdminLayer, MapManagerLayersTable), provides=IValues)
   143 @adapter_config(context=(ISite, IAdminLayer, MapManagerLayersTable), provides=IValues)
   140 class MapManagerValuesAdapter(ContextRequestViewAdapter):
   144 class MapManagerValuesAdapter(ContextRequestViewAdapter):
   141     """Map manager layers table values adapter"""
   145     """Map manager layers table values adapter"""
   142 
   146 
   143     @property
   147     @property
   180 
   184 
   181 @pagelet_config(name='configuration.html', context=IMapManager, layer=IPyAMSLayer, permission=MANAGE_SYSTEM_PERMISSION)
   185 @pagelet_config(name='configuration.html', context=IMapManager, layer=IPyAMSLayer, permission=MANAGE_SYSTEM_PERMISSION)
   182 class MapManagerConfigurationEditForm(AdminDialogEditForm):
   186 class MapManagerConfigurationEditForm(AdminDialogEditForm):
   183     """Map manager edit form"""
   187     """Map manager edit form"""
   184 
   188 
       
   189     prefix = 'map_configuration.'
       
   190 
   185     title = _("Maps manager")
   191     title = _("Maps manager")
   186     legend = _("Default map configuration")
   192     legend = _("Default map configuration")
   187     icon_css_class = 'fa fa-fw fa-map-marker'
   193     icon_css_class = 'fa fa-fw fa-map-marker'
   188     dialog_class = 'modal-large'
   194     dialog_class = 'modal-large'
   189 
   195 
   198 
   204 
   199 @view_config(name='configuration.json', context=IMapManager, request_type=IPyAMSLayer,
   205 @view_config(name='configuration.json', context=IMapManager, request_type=IPyAMSLayer,
   200              permission=MANAGE_SYSTEM_PERMISSION, renderer='json', xhr=True)
   206              permission=MANAGE_SYSTEM_PERMISSION, renderer='json', xhr=True)
   201 class MapManagerConfigurationAJAXEditForm(AJAXEditForm, MapManagerConfigurationEditForm):
   207 class MapManagerConfigurationAJAXEditForm(AJAXEditForm, MapManagerConfigurationEditForm):
   202     """Map manager edit form, JSON renderer"""
   208     """Map manager edit form, JSON renderer"""
   203 
       
   204 
       
   205 @view_config(name='delete-layer.json', context=IMapManager, request_type=IPyAMSLayer,
       
   206              permission=MANAGE_SYSTEM_PERMISSION, renderer='json', xhr=True)
       
   207 def delete_map_manager_layer(request):
       
   208     """Delete layer from map manager"""
       
   209     translate = request.localizer.translate
       
   210     name = request.params.get('object_name')
       
   211     if not name:
       
   212         return {'status': 'message',
       
   213                 'messagebox': {'status': 'error',
       
   214                                'content': translate(_("No provided object_name argument!"))}}
       
   215     if name not in request.context:
       
   216         return {'status': 'message',
       
   217                 'messagebox': {'status': 'error',
       
   218                                'content': translate(_("Given layer name doesn't exist!"))}}
       
   219     del request.context[name]
       
   220     return {'status': 'success'}
       
   221 
   209 
   222 
   210 
   223 @view_config(name='get-map-configuration.json', context=Interface, request_type=IPyAMSLayer,
   211 @view_config(name='get-map-configuration.json', context=Interface, request_type=IPyAMSLayer,
   224              renderer='json', xhr=True)
   212              renderer='json', xhr=True)
   225 def get_map_configuration(request):
   213 def get_map_configuration(request):