Skip to content

Commit

Permalink
Merge pull request #18 from eea/develop
Browse files Browse the repository at this point in the history
Feature: Add content rule to unset publication date when private [dobri1408 - refs #147278]
  • Loading branch information
avoinea authored Aug 31, 2023
2 parents 96147f5 + f670e96 commit 4b68fda
Show file tree
Hide file tree
Showing 9 changed files with 134 additions and 3 deletions.
5 changes: 5 additions & 0 deletions docs/HISTORY.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
Changelog
=========

3.1 - (2023-08-31)
---------------------------
* Change: Feature: Add content rule to unset publication date when private [dobri1408 - refs #147278]
[avoinea]

3.0 - (2023-08-30)
---------------------------
* Feature: Add image_scales to catalog and update list of scales to registry
Expand Down
1 change: 1 addition & 0 deletions eea/volto/policy/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
<include file="profiles.zcml" />

<include package=".behaviors" />
<include package=".contentrules" />
<include package=".restapi" />
<include package=".vocabularies" />
<include package=".upgrades" />
Expand Down
2 changes: 2 additions & 0 deletions eea/volto/policy/contentrules/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
""" Content rules
"""
66 changes: 66 additions & 0 deletions eea/volto/policy/contentrules/actions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
""" EEAContentTypes actions for plone.app.contentrules
"""

import logging
from AccessControl import SpecialUsers, getSecurityManager
from AccessControl.SecurityManagement import (
newSecurityManager,
setSecurityManager,
)
from OFS.SimpleItem import SimpleItem
from plone.app.contentrules.browser.formhelper import (
NullAddForm,
)
from plone.contentrules.rule.interfaces import IExecutable, IRuleElementData
from zope.component import adapter
from zope.interface import Interface, implementer

logger = logging.getLogger("eea.volto.policy")


class ISetPublicationDateToNullAction(Interface):
"""Set Publication Date to null"""


@implementer(ISetPublicationDateToNullAction, IRuleElementData)
class SetPublicationDateToNullAction(SimpleItem):
"""Set publication date to null action"""

element = "eea.volto.policy.set_publication_date_to_null"
summary = (
"I will set publication date to null"
)


@implementer(IExecutable)
@adapter(Interface, ISetPublicationDateToNullAction, Interface)
class SetPublicationDateToNullExecutor(object):
"""Set Publication Date to null executor"""

def __init__(self, context, element, event):
self.context = context
self.element = element
self.event = event

def __call__(self):
obj = self.event.object
try:
# Bypass user roles in order to rename old version
oldSecurityManager = getSecurityManager()
newSecurityManager(None, SpecialUsers.system)
obj.setEffectiveDate(None)

# Switch back to the current user
setSecurityManager(oldSecurityManager)
except Exception as err:
logger.exception(err)
return True
return True


class SetPublicationDateToNullAddForm(NullAddForm):
"""Set Publication Date to null addform"""

def create(self):
"""Create content-rule"""
return SetPublicationDateToNullAction()
29 changes: 29 additions & 0 deletions eea/volto/policy/contentrules/configure.zcml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser"
xmlns:plone="http://namespaces.plone.org/plone">

<include package="plone.contentrules" file="meta.zcml" />
<include package="plone.app.contentrules" />

<adapter factory=".actions.SetPublicationDateToNullExecutor" />

<browser:page
for="plone.app.contentrules.browser.interfaces.IRuleActionAdding"
name="eea.volto.policy.set_publication_date_to_null"
class=".actions.SetPublicationDateToNullAddForm"
permission="plone.app.contentrules.ManageContentRules"
/>

<plone:ruleAction
name="eea.volto.policy.set_publication_date_to_null"
title="Set Publication Date to null"
description="Set Publication Date to null"
for="zope.interface.Interface"
event="zope.interface.Interface"
addview="eea.volto.policy.set_publication_date_to_null"
schema=".actions.ISetPublicationDateToNullAction"
factory=".actions.SetPublicationDateToNullAction"
/>

</configure>
18 changes: 18 additions & 0 deletions eea/volto/policy/profiles/default/contentrules.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<contentrules>
<rule name="rule-1" title="Unset Publication Date When Private" cascading="False" description=""
enabled="True" event="Products.CMFCore.interfaces.IActionSucceededEvent"
stop-after="False">
<conditions>
<condition type="plone.conditions.WorkflowState">
<property name="wf_states">
<element>private</element>
</property>
</condition>
</conditions>
<actions>
<action type="eea.volto.policy.set_publication_date_to_null"/>
</actions>
</rule>
<assignment name="rule-1" bubbles="True" enabled="True" location=""/>
</contentrules>
2 changes: 1 addition & 1 deletion eea/volto/policy/profiles/default/metadata.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<version>3.0</version>
<version>3.1</version>
<dependencies>
<dependency>profile-plone.volto:default</dependency>
</dependencies>
Expand Down
12 changes: 11 additions & 1 deletion eea/volto/policy/upgrades/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,17 @@
title="Add image_scales to catalog and update list of scales to registry"
import_steps="catalog plone.app.registry"
/>

</genericsetup:upgradeSteps>

<genericsetup:upgradeSteps
source="3.0"
destination="3.1"
profile="eea.volto.policy:default">

<genericsetup:upgradeDepends
title="Add content rule to unset publication date when private"
import_steps="contentrules"
/>

</genericsetup:upgradeSteps>
</configure>
2 changes: 1 addition & 1 deletion eea/volto/policy/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.0
3.1

0 comments on commit 4b68fda

Please sign in to comment.