src/pyams_content/shared/site/zmi/container.py
changeset 1433 23b4d281e849
parent 1429 9b93fdd5ba30
equal deleted inserted replaced
1432:4f6eb363c72a 1433:23b4d281e849
     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 
    12 
    13 __docformat__ = 'restructuredtext'
       
    14 
       
    15 import json
    13 import json
    16 from datetime import datetime
    14 from datetime import datetime
    17 
    15 
    18 from pyramid.exceptions import NotFound
    16 from pyramid.exceptions import NotFound
    19 from pyramid.location import lineage
    17 from pyramid.location import lineage
    20 from pyramid.view import view_config
    18 from pyramid.view import view_config
    21 from z3c.form import field
    19 from z3c.form import field
    22 from z3c.table.column import GetAttrColumn
    20 from z3c.table.column import GetAttrColumn
    23 from z3c.table.interfaces import IColumn, IValues
    21 from z3c.table.interfaces import IColumn, IValues
    24 from zope.interface import implementer, Interface
    22 from zope.interface import Interface, alsoProvides, implementer
    25 from zope.intid.interfaces import IIntIds
    23 from zope.intid.interfaces import IIntIds
    26 from zope.lifecycleevent import ObjectMovedEvent
    24 from zope.lifecycleevent import ObjectMovedEvent
    27 
    25 
    28 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION, MANAGE_SITE_PERMISSION
    26 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION, MANAGE_SITE_PERMISSION
    29 from pyams_content.shared.common.interfaces import ISharedContent, ISharedSite
    27 from pyams_content.shared.common.interfaces import ISharedContent, ISharedSite
    30 from pyams_content.shared.common.interfaces.zmi import IDashboardTable
    28 from pyams_content.shared.common.interfaces.zmi import IDashboardTable
    31 from pyams_content.shared.common.zmi.dashboard import SharedToolDashboardOwnerColumn, SharedToolDashboardSequenceColumn, \
    29 from pyams_content.shared.common.zmi.dashboard import SharedToolDashboardOwnerColumn, \
    32     SharedToolDashboardStatusColumn, SharedToolDashboardStatusDateColumn, SharedToolDashboardStatusPrincipalColumn, \
    30     SharedToolDashboardSequenceColumn, SharedToolDashboardStatusColumn, \
       
    31     SharedToolDashboardStatusDateColumn, SharedToolDashboardStatusPrincipalColumn, \
    33     SharedToolDashboardVersionColumn
    32     SharedToolDashboardVersionColumn
    34 from pyams_content.shared.site import WfSiteTopic
    33 from pyams_content.shared.site import WfSiteTopic
    35 from pyams_content.shared.site.interfaces import IBaseSiteItem, IContentLink, ISiteContainer, ISiteManager, ISiteLink
    34 from pyams_content.shared.site.interfaces import IBaseSiteItem, IContentLink, ISiteContainer, \
       
    35     ISiteLink, ISiteManager
    36 from pyams_content.zmi import pyams_content
    36 from pyams_content.zmi import pyams_content
    37 from pyams_content.zmi.interfaces import ISiteTreeMenu, ISiteTreeTable, IUserAddingsMenuLabel
    37 from pyams_content.zmi.interfaces import ISiteTreeMenu, ISiteTreeTable, IUserAddingsMenuLabel
    38 from pyams_form.form import ajax_config
    38 from pyams_form.form import ajax_config
    39 from pyams_i18n.interfaces import II18n
    39 from pyams_i18n.interfaces import II18n
    40 from pyams_pagelet.pagelet import pagelet_config
    40 from pyams_pagelet.pagelet import pagelet_config
    41 from pyams_skin.container import ContainerView, delete_container_element
    41 from pyams_skin.container import ContainerView, delete_container_element
    42 from pyams_skin.event import get_json_table_cell_refresh_event
    42 from pyams_skin.event import get_json_table_cell_refresh_event
    43 from pyams_skin.interfaces import IInnerPage, IPageHeader
    43 from pyams_skin.interfaces import IInnerPage, IPageHeader
    44 from pyams_skin.interfaces.container import ITableElementEditor, ITableElementName, ITableWithActions
    44 from pyams_skin.interfaces.container import ITableElementEditor, ITableElementName, \
       
    45     ITableWithActions
    45 from pyams_skin.interfaces.viewlet import IBreadcrumbItem, ITableItemColumnActionsMenu
    46 from pyams_skin.interfaces.viewlet import IBreadcrumbItem, ITableItemColumnActionsMenu
    46 from pyams_skin.layer import IPyAMSLayer
    47 from pyams_skin.layer import IPyAMSLayer
    47 from pyams_skin.page import DefaultPageHeaderAdapter
    48 from pyams_skin.page import DefaultPageHeaderAdapter
    48 from pyams_skin.table import BaseTable, DefaultElementEditorAdapter, I18nColumn, JsActionColumn, NameColumn, \
    49 from pyams_skin.table import BaseTable, DefaultElementEditorAdapter, I18nColumn, JsActionColumn, \
    49     SorterColumn, TrashColumn
    50     NameColumn, SorterColumn, TrashColumn
    50 from pyams_skin.viewlet.breadcrumb import BreadcrumbAdminLayerItem
    51 from pyams_skin.viewlet.breadcrumb import BreadcrumbAdminLayerItem
    51 from pyams_skin.viewlet.menu import MenuItem
    52 from pyams_skin.viewlet.menu import MenuItem
    52 from pyams_skin.viewlet.toolbar import ToolbarMenuItem
    53 from pyams_skin.viewlet.toolbar import ToolbarMenuItem
    53 from pyams_template.template import template_config
    54 from pyams_template.template import template_config
    54 from pyams_utils.adapter import ContextRequestAdapter, ContextRequestViewAdapter, adapter_config, \
    55 from pyams_utils.adapter import ContextRequestAdapter, ContextRequestViewAdapter, NullAdapter, \
    55     NullAdapter
    56     adapter_config
    56 from pyams_utils.date import format_datetime
    57 from pyams_utils.date import format_datetime
    57 from pyams_utils.fanstatic import get_resource_path
    58 from pyams_utils.fanstatic import get_resource_path
    58 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
    59 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
       
    60 from pyams_utils.interfaces.data import IObjectData
    59 from pyams_utils.interfaces.traversing import IPathElements
    61 from pyams_utils.interfaces.traversing import IPathElements
    60 from pyams_utils.registry import get_utility
    62 from pyams_utils.registry import get_utility
    61 from pyams_utils.timezone import tztime
    63 from pyams_utils.timezone import tztime
    62 from pyams_utils.traversing import get_parent
    64 from pyams_utils.traversing import get_parent
    63 from pyams_utils.url import absolute_url
    65 from pyams_utils.url import absolute_url
    64 from pyams_viewlet.manager import viewletmanager_config
    66 from pyams_viewlet.manager import viewletmanager_config
    65 from pyams_viewlet.viewlet import viewlet_config, contentprovider_config
    67 from pyams_viewlet.viewlet import contentprovider_config, viewlet_config
    66 from pyams_workflow.interfaces import IWorkflowPublicationInfo, IWorkflowVersions
    68 from pyams_workflow.interfaces import IWorkflowPublicationInfo, IWorkflowVersions
    67 from pyams_zmi.form import AdminDialogEditForm
    69 from pyams_zmi.form import AdminDialogEditForm
    68 from pyams_zmi.interfaces.menu import IPropertiesMenu, ISiteManagementMenu
    70 from pyams_zmi.interfaces.menu import IPropertiesMenu, ISiteManagementMenu
    69 from pyams_zmi.layer import IAdminLayer
    71 from pyams_zmi.layer import IAdminLayer
    70 from pyams_zmi.view import AdminView
    72 from pyams_zmi.view import AdminView
       
    73 
       
    74 
       
    75 __docformat__ = 'restructuredtext'
    71 
    76 
    72 from pyams_content import _
    77 from pyams_content import _
    73 
    78 
    74 
    79 
    75 @contentprovider_config(name='content_header', context=ISharedSite,
    80 @contentprovider_config(name='content_header', context=ISharedSite,
   183 
   188 
   184     fields = field.Fields(IWorkflowPublicationInfo).select('publication_effective_date',
   189     fields = field.Fields(IWorkflowPublicationInfo).select('publication_effective_date',
   185                                                            'publication_expiration_date')
   190                                                            'publication_expiration_date')
   186     edit_permission = MANAGE_SITE_PERMISSION
   191     edit_permission = MANAGE_SITE_PERMISSION
   187 
   192 
       
   193     def updateActions(self):
       
   194         super(SiteContainerWorkflowPublicationEditForm, self).updateActions()
       
   195         submit = self.actions.get('submit')
       
   196         if submit is not None:
       
   197             submit.object_data = {'ams-focus-target': 'true'}
       
   198             alsoProvides(submit, IObjectData)
       
   199 
   188     def updateWidgets(self, prefix=None):
   200     def updateWidgets(self, prefix=None):
   189         super(SiteContainerWorkflowPublicationEditForm, self).updateWidgets(prefix)
   201         super(SiteContainerWorkflowPublicationEditForm, self).updateWidgets(prefix)
   190         if 'publication_effective_date' in self.widgets:
   202         if 'publication_effective_date' in self.widgets:
   191             pub_info = IWorkflowPublicationInfo(self.context)
   203             pub_info = IWorkflowPublicationInfo(self.context)
   192             if pub_info.publication_effective_date is None:
   204             if pub_info.publication_effective_date is None:
   193                 self.widgets['publication_effective_date'].value = tztime(datetime.utcnow()).strftime('%d/%m/%y %H:%M')
   205                 self.widgets['publication_effective_date'].value = \
       
   206                     tztime(datetime.utcnow()).strftime('%d/%m/%y %H:%M')
   194 
   207 
   195     def get_ajax_output(self, changes):
   208     def get_ajax_output(self, changes):
   196         output = super(self.__class__, self).get_ajax_output(changes)
   209         output = super(self.__class__, self).get_ajax_output(changes)
   197         if changes:
   210         if changes:
   198             info = IWorkflowPublicationInfo(self.context, None)
   211             info = IWorkflowPublicationInfo(self.context, None)