src/pyams_content/component/paragraph/zmi/container.py
changeset 283 9139536eab90
parent 243 73b31fa70b8b
child 296 aaf2eac56470
equal deleted inserted replaced
282:2990223a5b7f 283:9139536eab90
    17 import json
    17 import json
    18 
    18 
    19 # import interfaces
    19 # import interfaces
    20 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    20 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    21 from pyams_content.component.association.interfaces import IAssociationContainer
    21 from pyams_content.component.association.interfaces import IAssociationContainer
    22 from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, IBaseParagraph
    22 from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, IBaseParagraph, \
       
    23     IParagraphFactorySettings
    23 from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphTitleToolbar, \
    24 from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphTitleToolbar, \
    24     IParagraphContainerTable, IParagraphsParentForm, IParagraphContainerView
    25     IParagraphContainerTable, IParagraphContainerView
    25 from pyams_form.interfaces.form import IFormSecurityContext, IInnerSubForm
    26 from pyams_form.interfaces.form import IFormSecurityContext, IInnerSubForm
    26 from pyams_i18n.interfaces import II18n
    27 from pyams_i18n.interfaces import II18n
    27 from pyams_skin.interfaces import IInnerPage, IPageHeader
    28 from pyams_skin.interfaces import IInnerPage, IPageHeader
    28 from pyams_skin.interfaces.container import ITableElementEditor
    29 from pyams_skin.interfaces.container import ITableElementEditor
    29 from pyams_skin.layer import IPyAMSLayer
    30 from pyams_skin.layer import IPyAMSLayer
    41 from pyams_skin.page import DefaultPageHeaderAdapter
    42 from pyams_skin.page import DefaultPageHeaderAdapter
    42 from pyams_skin.table import BaseTable, I18nColumn, TrashColumn, JsActionColumn, SorterColumn, ImageColumn
    43 from pyams_skin.table import BaseTable, I18nColumn, TrashColumn, JsActionColumn, SorterColumn, ImageColumn
    43 from pyams_skin.viewlet.menu import MenuItem
    44 from pyams_skin.viewlet.menu import MenuItem
    44 from pyams_template.template import template_config
    45 from pyams_template.template import template_config
    45 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter, NullAdapter
    46 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter, NullAdapter
       
    47 from pyams_utils.traversing import get_parent
    46 from pyams_utils.url import absolute_url
    48 from pyams_utils.url import absolute_url
    47 from pyams_viewlet.manager import viewletmanager_config, WeightOrderedViewletManager, TemplateBasedViewletManager
    49 from pyams_viewlet.manager import viewletmanager_config, WeightOrderedViewletManager, TemplateBasedViewletManager
    48 from pyramid.exceptions import NotFound
    50 from pyramid.exceptions import NotFound
    49 from pyramid.view import view_config
    51 from pyramid.view import view_config
    50 from pyams_viewlet.viewlet import viewlet_config, Viewlet
    52 from pyams_viewlet.viewlet import viewlet_config, Viewlet
    51 from pyams_zmi.form import AdminDialogDisplayForm, InnerAdminDisplayForm
    53 from pyams_zmi.form import AdminDialogDisplayForm
    52 from pyams_zmi.view import AdminView, ContainerAdminView
    54 from pyams_zmi.view import AdminView, ContainerAdminView
    53 from pyramid.decorator import reify
    55 from pyramid.decorator import reify
    54 from z3c.form import field
    56 from z3c.form import field
    55 from z3c.table.column import GetAttrColumn
    57 from z3c.table.column import GetAttrColumn
    56 from zope.interface import implementer, Interface
    58 from zope.interface import implementer, Interface
   111         return list(super(ParagraphContainerBaseTable, self).values)
   113         return list(super(ParagraphContainerBaseTable, self).values)
   112 
   114 
   113     def render(self):
   115     def render(self):
   114         if not self.values:
   116         if not self.values:
   115             translate = self.request.localizer.translate
   117             translate = self.request.localizer.translate
   116             return translate(_("No currently defined paragraph."))
   118             message = translate(_("No currently defined paragraph."))
       
   119             manager = get_parent(self.context, IParagraphFactorySettings)
       
   120             if (manager is not None) and not manager.allowed_paragraphs:
       
   121                 message = '{0}<br />{1}'.format(message,
       
   122                                                 translate(_("Check allowed paragraph types to be able to create new "
       
   123                                                             "paragraphs.")))
       
   124             return message
   117         return super(ParagraphContainerBaseTable, self).render()
   125         return super(ParagraphContainerBaseTable, self).render()
   118 
   126 
   119 
   127 
   120 @adapter_config(context=(IParagraphContainerTarget, IPyAMSLayer, ParagraphContainerBaseTable), provides=IValues)
   128 @adapter_config(context=(IParagraphContainerTarget, IPyAMSLayer, ParagraphContainerBaseTable), provides=IValues)
   121 class ParagraphContainerValues(ContextRequestViewAdapter):
   129 class ParagraphContainerValues(ContextRequestViewAdapter):