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) |