Allow restores of deleted versions and appendix #22003

This commit is contained in:
Nicolas Demonte 2019-01-14 15:24:16 +01:00
parent d23269c8ea
commit 2acb2f825c
6 changed files with 288 additions and 46 deletions

View File

@ -10,6 +10,7 @@ from collective.dms.basecontent.dmsdocument import IDmsDocument
from collective.dms.mailcontent.dmsmail import IDmsOutgoingMail,\
IDmsIncomingMail
from collective.dms.basecontent.dmsfile import IDmsFile
from collective.dms.basecontent.dmsfile import IDmsAppendixFile
from collective.task.content.validation import IValidation
@ -102,3 +103,23 @@ class CanValidateOrRefuse(grok.View):
if 'Editor' in roles:
return True
return False
class CanBeTrashedDmsFile(grok.View):
""""""
grok.name('can_be_trashed')
grok.context(IDmsFile)
grok.require('zope2.View')
def render(self):
return getattr(self.context, 'signed', False) and api.content.get_state(self.context) == 'finished'
class CanBeTrashedDmsAppendixFile(grok.View):
""""""
grok.name('can_be_trashed')
grok.context(IDmsAppendixFile)
grok.require('zope2.View')
def render(self):
return api.content.get_state(self.context) == 'published'

View File

@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: pfwbged.policy\n"
"POT-Creation-Date: 2014-12-09 06:37+0000\n"
"POT-Creation-Date: 2019-01-18 14:42+0000\n"
"PO-Revision-Date: 2014-12-09 07:38+0100\n"
"Last-Translator: Frederic Peters <fpeters@entrouvert.com>\n"
"Language-Team: --\n"
@ -15,7 +15,7 @@ msgstr ""
"Domain: pfwbged.policy\n"
"X-Generator: Poedit 1.5.4\n"
#: ../menu.py:219
#: ../menu.py:224
msgid "${action} the version ${version}"
msgstr "${action} la version ${version}"
@ -27,7 +27,7 @@ msgstr "L'élément ${title} a été supprimé."
msgid "${title} is locked and cannot be deleted."
msgstr "L'élément ${title} est verrouillé et ne peut être supprimé."
#: ../subscribers/document.py:416
#: ../subscribers/document.py:430
msgid "A validation request has been refused"
msgstr "Une demande de validation a été refusée."
@ -35,11 +35,16 @@ msgstr "Une demande de validation a été refusée."
msgid "Accept refusal"
msgstr "Accepter la désattribution"
#: ../menu.py:102
#: ../menu.py:103
msgid "Actions"
msgstr "Actions"
#: ../menu.py:302
#: ../browser/add_multi_information.py:25
#: ../browser/multi_attribute_task.py:41
msgid "Add"
msgstr ""
#: ../menu.py:307
msgid "Add ${title}"
msgstr "Ajouter ${title}"
@ -63,7 +68,7 @@ msgstr "Demander une validation"
msgid "Ask validation about version ${version}"
msgstr "Demander une validation sur la version ${version}"
#: ../subscribers/document.py:318
#: ../subscribers/document.py:332
msgid "Assigned to: %s"
msgstr "Attribué à : %s"
@ -91,7 +96,7 @@ msgstr "Note"
msgid "Create a new version"
msgstr "Créer une nouvelle version"
#: ../menu.py:416
#: ../menu.py:421
msgid "Create signed version for version ${version}"
msgstr "Créer la version signée pour la version ${version}"
@ -99,15 +104,15 @@ msgstr "Créer la version signée pour la version ${version}"
msgid "Create version ${version}"
msgstr "Création de la version ${version}"
#: ../subscribers/document.py:328
#: ../subscribers/document.py:342
msgid "Deadline: %s"
msgstr "Échéance : %s"
#: ../subscribers/document.py:325
#: ../subscribers/document.py:339
msgid "Document Address: %s"
msgstr "Adresse du document : %s"
#: ../subscribers/document.py:323
#: ../subscribers/document.py:337
msgid "Document: %s"
msgstr "Document : %s"
@ -131,7 +136,11 @@ msgstr "Finaliser la version ${version}"
msgid "Folders"
msgstr "Dossiers"
#: ../menu.py:197
#: ../configure.zcml:58
msgid "Installs the pfwbged.policy add-on."
msgstr ""
#: ../menu.py:202
msgid "Mark document as read"
msgstr "Marquer le document comme lu"
@ -143,19 +152,23 @@ msgstr "Mes tâches"
msgid "New value for ${attribute}"
msgstr "Nouvelle valeur pour ${attribute}"
#: ../subscribers/document.py:458
#: ../subscribers/document.py:513
msgid "New value for %s: %s"
msgstr "Nouvelle valeur pour %s : %s"
#: ../subscribers/document.py:333
#: ../subscribers/document.py:347
msgid "Note:"
msgstr "Note :"
#: ../subscribers/document.py:480
msgid "One of your tasks has been cancelled"
msgstr "Une de vos tâches a été annulée"
#: ../browser/ask_opinion.py:25
msgid "Opinion application for version ${version}"
msgstr "Demande d'avis pour la version ${version}"
#: ../subscribers/document.py:141
#: ../subscribers/document.py:142
msgid "Process document"
msgstr "Traiter le document"
@ -183,16 +196,19 @@ msgstr "Refuser la version ${version}"
msgid "Render opinion"
msgstr "Rendre un avis"
#: ../menu.py:204
#: ../menu.py:56
msgid "Restore version ${version}"
msgstr "Restaurer la version ${version}"
msgid "Return opinion about ${version}"
msgstr "Rendre un avis sur la version ${version}"
#: ../browser/to_process.py:46
#: ../menu.py:518
#: ../menu.py:523
msgid "Save"
msgstr "Enregistrer"
#: ../menu.py:527
#: ../menu.py:532
msgid "Save As..."
msgstr "Enregistrer sous…"
@ -212,7 +228,7 @@ msgstr "Envoyer la version ${version} par email"
msgid "Send version ${version} with PES"
msgstr "Envoyer la version ${version} avec la PES"
#: ../subscribers/document.py:335
#: ../subscribers/document.py:349
msgid "Sent by GED"
msgstr "Envoyé par le système de GED du PFWB"
@ -220,19 +236,27 @@ msgstr "Envoyé par le système de GED du PFWB"
msgid "Sent version ${version} by email"
msgstr "Version ${version} envoyée par email"
#: ../testing.zcml:16
msgid "Steps to ease tests of pfwbged.policy"
msgstr ""
#: ../browser/send_by_email.py:33
msgid "Subject"
msgstr "Objet"
#: browser/configure.zcml
#: ../browser/configure.zcml:29
msgid "Tasks view"
msgstr "Vue tâches"
#: ../subscribers/document.py:321
#: ../overrides.zcml:10
msgid "The 'workflow' menu - allows the user to execute workflow transitions"
msgstr ""
#: ../subscribers/document.py:335
msgid "Title: %s"
msgstr "Titre : %s"
#: ../menu.py:140
#: ../menu.py:141
msgid "To process (with comment)"
msgstr "À traiter (avec commentaire)"
@ -263,7 +287,14 @@ msgstr "Transition du workflow"
msgid "You can enter a note."
msgstr "Vous pouvez entrer une note."
#: ../subscribers/document.py:315
#: ../subscribers/document.py:329
msgid "You received a request for action in the GED."
msgstr "Vous avez reçu une demande d'action dans la GED."
#: ../configure.zcml:58
msgid "pfwbged.policy"
msgstr ""
#: ../testing.zcml:16
msgid "pfwbged.policy tests"
msgstr ""

View File

@ -4,7 +4,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2013-09-04 09:37+0000\n"
"POT-Creation-Date: 2019-01-18 14:42+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,19 +17,36 @@ msgstr ""
"Preferred-Encodings: utf-8 latin1\n"
"Domain: pfwbged.policy\n"
#: ../menu.py:164
#: ../menu.py:224
msgid "${action} the version ${version}"
msgstr ""
#: ../skins/pfwbged_policy/object_delete.cpy:43
msgid "${title} has been deleted."
msgstr ""
#: ../skins/pfwbged_policy/object_delete.cpy:31
msgid "${title} is locked and cannot be deleted."
msgstr ""
#: ../subscribers/document.py:430
msgid "A validation request has been refused"
msgstr ""
#: ../browser/comments.py:98
msgid "Accept refusal"
msgstr ""
#: ../menu.py:93
#: ../menu.py:103
msgid "Actions"
msgstr ""
#: ../menu.py:231
#: ../browser/add_multi_information.py:25
#: ../browser/multi_attribute_task.py:41
msgid "Add"
msgstr ""
#: ../menu.py:307
msgid "Add ${title}"
msgstr ""
@ -41,75 +58,139 @@ msgstr ""
msgid "Ask opinion"
msgstr ""
#: ../menu.py:40
#: ../menu.py:47
msgid "Ask opinion about version ${version}"
msgstr ""
#: ../browser/ask_validation.py:58
#: ../browser/ask_validation.py:66
msgid "Ask validation"
msgstr ""
#: ../menu.py:41
#: ../menu.py:48
msgid "Ask validation about version ${version}"
msgstr ""
#: ../customize.py:11
#: ../subscribers/document.py:332
msgid "Assigned to: %s"
msgstr ""
#: ../customize.py:21
msgid "Can edit"
msgstr ""
#: ../customize.py:16
#: ../customize.py:26
msgid "Can view"
msgstr ""
#: ../browser/refuse.py:109
#: ../browser/send_by_email.py:116
#: ../browser/to_process.py:63
msgid "Cancel"
msgstr ""
#: ../browser/refuse.py:33
#: ../browser/send_by_email.py:35
#: ../browser/to_process.py:25
msgid "Comment"
msgstr ""
#: ../menu.py:35
#: ../menu.py:42
msgid "Create a new version"
msgstr ""
#: ../menu.py:330
#: ../menu.py:421
msgid "Create signed version for version ${version}"
msgstr ""
#: ../browser/history.py:13
#: ../browser/history.py:18
msgid "Create version ${version}"
msgstr ""
#: ../menu.py:37
msgid "File in a folder"
#: ../subscribers/document.py:342
msgid "Deadline: %s"
msgstr ""
#: ../subscribers/document.py:339
msgid "Document Address: %s"
msgstr ""
#: ../subscribers/document.py:337
msgid "Document: %s"
msgstr ""
#: ../browser/send_by_email.py:32
msgid "Email addresses of the recipients, one per line"
msgstr ""
#: ../browser/send_by_email.py:97
msgid "Error sending email"
msgstr ""
#: ../menu.py:44
msgid "File in a folder"
msgstr ""
#: ../menu.py:51
msgid "Finish version ${version}"
msgstr ""
#: ../menu.py:149
#: ../customize.py:40
msgid "Folders"
msgstr ""
#: ../configure.zcml:58
msgid "Installs the pfwbged.policy add-on."
msgstr ""
#: ../menu.py:202
msgid "Mark document as read"
msgstr ""
#: ../customize.py:42
msgid "My Tasks"
msgstr ""
#: ../browser/history.py:39
msgid "New value for ${attribute}"
msgstr ""
#: ../subscribers/document.py:513
msgid "New value for %s: %s"
msgstr ""
#: ../subscribers/document.py:347
msgid "Note:"
msgstr ""
#: ../subscribers/document.py:480
msgid "One of your tasks has been cancelled"
msgstr ""
#: ../browser/ask_opinion.py:25
msgid "Opinion application for version ${version}"
msgstr ""
#: ../subscribers/document.py:111
#: ../subscribers/document.py:142
msgid "Process document"
msgstr ""
#: ../subscribers/mail.py:31
#: ../subscribers/mail.py:86
msgid "Process mail"
msgstr ""
#: ../browser/send_by_email.py:31
msgid "Recipients"
msgstr ""
#: ../browser/refuse.py:54
msgid "Refuse"
msgstr ""
#: ../browser/comments.py:100
msgid "Refuse refusal"
msgstr ""
#: ../menu.py:43
#: ../menu.py:50
msgid "Refuse version ${version}"
msgstr ""
@ -117,39 +198,105 @@ msgstr ""
msgid "Render opinion"
msgstr ""
#: ../menu.py:154
#: ../menu.py:56
msgid "Restore version ${version}"
msgstr ""
msgid "Return opinion about ${version}"
msgstr ""
#: ../browser/to_process.py:46
#: ../menu.py:523
msgid "Save"
msgstr ""
#: ../menu.py:36
#: ../menu.py:532
msgid "Save As..."
msgstr ""
#: ../browser/send_by_email.py:52
msgid "Send"
msgstr ""
#: ../menu.py:43
msgid "Send for information"
msgstr ""
#: browser/configure.zcml
#: ../menu.py:53
msgid "Send version ${version} by email"
msgstr ""
#: ../menu.py:54
msgid "Send version ${version} with PES"
msgstr ""
#: ../subscribers/document.py:349
msgid "Sent by GED"
msgstr ""
#: ../browser/history.py:48
msgid "Sent version ${version} by email"
msgstr ""
#: ../testing.zcml:16
msgid "Steps to ease tests of pfwbged.policy"
msgstr ""
#: ../browser/send_by_email.py:33
msgid "Subject"
msgstr ""
#: ../browser/configure.zcml:29
msgid "Tasks view"
msgstr ""
#: ../menu.py:45
#: ../overrides.zcml:10
msgid "The 'workflow' menu - allows the user to execute workflow transitions"
msgstr ""
#: ../subscribers/document.py:335
msgid "Title: %s"
msgstr ""
#: ../menu.py:141
msgid "To process (with comment)"
msgstr ""
#: ../browser/history.py:47
msgid "To: ${to}"
msgstr ""
#: ../menu.py:52
msgid "Validate and finish version ${version}"
msgstr ""
#: ../menu.py:42
#: ../menu.py:49
msgid "Validate version ${version}"
msgstr ""
#: ../browser/ask_validation.py:26
#: ../browser/ask_validation.py:28
msgid "Validation application for version ${version}"
msgstr ""
#: ../browser/refuse.py:29
#: ../browser/to_process.py:21
msgid "Workflow action"
msgstr ""
#: ../browser/refuse.py:34
#: ../browser/send_by_email.py:36
#: ../browser/to_process.py:26
msgid "You can enter a note."
msgstr ""
#: ../subscribers/document.py:329
msgid "You received a request for action in the GED."
msgstr ""
#: ../configure.zcml:58
msgid "pfwbged.policy"
msgstr ""
#: ../testing.zcml:16
msgid "pfwbged.policy tests"
msgstr ""

View File

@ -52,6 +52,7 @@ dmsfile_wfactions_mapping = {'ask_opinion': _(u"Ask opinion about version ${vers
'finish_without_validation': _(u"Validate and finish version ${version}"),
'send_by_email': _(u"Send version ${version} by email"),
'send_with_docbow': _(u"Send version ${version} with PES"),
'restore_from_trash': _(u"Restore version ${version}"),
}

View File

@ -12,6 +12,7 @@
<permission>Modify portal content</permission>
<permission>View</permission>
<state state_id="published" title="Published" i18n:attributes="title">
<exit-transition transition_id="send_to_trash"/>
<permission-map name="View" acquired="True">
<permission-role>Editor</permission-role>
<permission-role>Manager</permission-role>
@ -39,6 +40,26 @@
<permission-role>Owner</permission-role>
</permission-map>
</state>
<state state_id="trashed" title="Trashed" i18n:attributes="title">
<exit-transition transition_id="restore_from_trash"/>
<permission-map name="View" acquired="False">
<permission-role>Manager</permission-role>
</permission-map>
</state>
<transition transition_id="restore_from_trash" title="Restore" new_state="published" trigger="USER" before_script="" after_script="" i18n:attributes="title">
<action url="" category="workflow" icon="" i18n:translate="">Restore</action>
<guard>
<guard-role>Manager</guard-role>
</guard>
</transition>
<transition transition_id="send_to_trash" title="Send to trash" new_state="trashed" trigger="USER" before_script="" after_script="" i18n:attributes="title">
<action url="" category="workflow" icon="" i18n:translate="">Send to trash</action>
<guard>
<guard-role>Editor</guard-role>
<guard-role>Manager</guard-role>
<guard-role>Owner</guard-role>
</guard>
</transition>
<variable variable_id="action" for_catalog="False" for_status="True" update_always="True">
<description>Previous transition</description>
<default>

View File

@ -43,6 +43,7 @@
</state>
<state state_id="finished" title="Finished" i18n:attributes="title">
<exit-transition transition_id="obsolete"/>
<exit-transition transition_id="send_to_trash"/>
<permission-map name="View" acquired="True">
</permission-map>
<permission-map name="Access contents information" acquired="True">
@ -128,6 +129,26 @@
<permission-role>Manager</permission-role>
</permission-map>
</state>
<state state_id="trashed" title="Trashed" i18n:attributes="title">
<exit-transition transition_id="restore_from_trash"/>
<permission-map name="View" acquired="False">
<permission-role>Manager</permission-role>
</permission-map>
</state>
<transition transition_id="restore_from_trash" title="Restore" new_state="finished" trigger="USER" before_script="" after_script="" i18n:attributes="title">
<action url="" category="workflow" icon="" i18n:translate="">Restore</action>
<guard>
<guard-role>Manager</guard-role>
</guard>
</transition>
<transition transition_id="send_to_trash" title="Send to trash" new_state="trashed" trigger="USER" before_script="" after_script="" i18n:attributes="title">
<action url="" category="hidden_workflow" icon="" i18n:translate="">Send to trash</action>
<guard>
<guard-role>Manager</guard-role>
<guard-role>Owner</guard-role>
<guard-expression>here/@@can_be_trashed</guard-expression>
</guard>
</transition>
<transition transition_id="finish" title="Finish" new_state="finished" trigger="USER" before_script="" after_script="" i18n:attributes="title">
<action url="" category="workflow" icon="" i18n:translate="">Finish</action>
<guard>