collective.preventactions 0.4.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. collective/preventactions/__init__.py +9 -0
  2. collective/preventactions/behaviors/__init__.py +0 -0
  3. collective/preventactions/behaviors/configure.zcml +24 -0
  4. collective/preventactions/behaviors/prevent_actions.py +5 -0
  5. collective/preventactions/browser/__init__.py +0 -0
  6. collective/preventactions/browser/configure.zcml +49 -0
  7. collective/preventactions/browser/preventactions.py +92 -0
  8. collective/preventactions/browser/static/.gitkeep +0 -0
  9. collective/preventactions/browser/views.py +17 -0
  10. collective/preventactions/configure.zcml +58 -0
  11. collective/preventactions/interfaces.py +13 -0
  12. collective/preventactions/locales/collective.preventactions.pot +91 -0
  13. collective/preventactions/locales/de/LC_MESSAGES/collective.preventactions.po +88 -0
  14. collective/preventactions/locales/en/LC_MESSAGES/collective.preventactions.po +88 -0
  15. collective/preventactions/locales/fr/LC_MESSAGES/collective.preventactions.po +88 -0
  16. collective/preventactions/locales/nl/LC_MESSAGES/collective.preventactions.po +88 -0
  17. collective/preventactions/prevent.py +30 -0
  18. collective/preventactions/profiles/default/actions.xml +56 -0
  19. collective/preventactions/profiles/default/browserlayer.xml +6 -0
  20. collective/preventactions/profiles/default/metadata.xml +4 -0
  21. collective/preventactions/profiles/testing/metadata.xml +7 -0
  22. collective/preventactions/profiles/testing/properties.xml +4 -0
  23. collective/preventactions/profiles/testing/types/Document.xml +19 -0
  24. collective/preventactions/profiles/uninstall/actions.xml +40 -0
  25. collective/preventactions/profiles/uninstall/browserlayer.xml +6 -0
  26. collective/preventactions/setuphandlers.py +29 -0
  27. collective/preventactions/testing.py +20 -0
  28. collective/preventactions/testing.zcml +19 -0
  29. collective/preventactions/tests/__init__.py +0 -0
  30. collective/preventactions/tests/test_actions.py +102 -0
  31. collective/preventactions/tests/test_behaviors.py +22 -0
  32. collective/preventactions/tests/test_form.py +118 -0
  33. collective/preventactions/tests/test_install.py +86 -0
  34. collective/preventactions/tests/test_portal_actions.py +56 -0
  35. collective/preventactions/tests/test_views.py +32 -0
  36. collective_preventactions-0.4.0.dist-info/METADATA +177 -0
  37. collective_preventactions-0.4.0.dist-info/RECORD +39 -0
  38. collective_preventactions-0.4.0.dist-info/WHEEL +5 -0
  39. collective_preventactions-0.4.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,9 @@
1
+ """Init and utils."""
2
+
3
+ from zope.i18nmessageid import MessageFactory
4
+
5
+ _ = MessageFactory("collective.preventactions")
6
+
7
+
8
+ def initialize(context):
9
+ """Initializer called when used as a Zope 2 product."""
File without changes
@@ -0,0 +1,24 @@
1
+ <configure
2
+ xmlns="http://namespaces.zope.org/zope"
3
+ xmlns:browser="http://namespaces.zope.org/browser"
4
+ xmlns:i18n="http://namespaces.zope.org/i18n"
5
+ xmlns:plone="http://namespaces.plone.org/plone"
6
+ xmlns:zcml="http://namespaces.zope.org/zcml"
7
+ i18n_domain="collective.preventactions"
8
+ >
9
+
10
+ <include
11
+ package="plone.behavior"
12
+ file="meta.zcml"
13
+ />
14
+
15
+ <plone:behavior
16
+ name="collective.preventactions.prevent_actions"
17
+ title="PreventActions"
18
+ description="This behaviors adds prevent actions on a content type"
19
+ provides=".prevent_actions.IPreventActionsMarker"
20
+ marker=".prevent_actions.IPreventActionsMarker"
21
+ />
22
+
23
+
24
+ </configure>
@@ -0,0 +1,5 @@
1
+ from zope.interface import Interface
2
+
3
+
4
+ class IPreventActionsMarker(Interface):
5
+ pass
File without changes
@@ -0,0 +1,49 @@
1
+ <configure
2
+ xmlns="http://namespaces.zope.org/zope"
3
+ xmlns:browser="http://namespaces.zope.org/browser"
4
+ xmlns:plone="http://namespaces.plone.org/plone"
5
+ xmlns:zcml="http://namespaces.zope.org/zcml"
6
+ i18n_domain="collective.preventactions"
7
+ >
8
+
9
+ <!-- Publish static files -->
10
+ <browser:resourceDirectory
11
+ name="collective.preventactions"
12
+ directory="static"
13
+ />
14
+
15
+ <include
16
+ package="Products.CMFCore"
17
+ file="permissions.zcml"
18
+ />
19
+
20
+ <browser:page
21
+ name="prevent-actions"
22
+ for="OFS.interfaces.IItem"
23
+ class=".preventactions.PreventActionsView"
24
+ permission="cmf.ManagePortal"
25
+ layer="..interfaces.ICollectivePreventActionsLayer"
26
+ />
27
+
28
+
29
+ <class class="plone.dexterity.content.DexterityContent">
30
+ <implements interface=".preventactions.IPreventActions" />
31
+ </class>
32
+
33
+ <browser:page
34
+ name="is_deletable"
35
+ for="OFS.interfaces.IItem"
36
+ class=".views.IsDeletable"
37
+ permission="zope2.Public"
38
+ layer="..interfaces.ICollectivePreventActionsLayer"
39
+ />
40
+
41
+ <browser:page
42
+ name="is_moveable"
43
+ for="OFS.interfaces.IItem"
44
+ class=".views.IsMoveable"
45
+ permission="zope2.Public"
46
+ layer="..interfaces.ICollectivePreventActionsLayer"
47
+ />
48
+
49
+ </configure>
@@ -0,0 +1,92 @@
1
+ from collective.preventactions import _
2
+ from collective.preventactions.interfaces import IPreventDelete
3
+ from collective.preventactions.interfaces import IPreventMoveOrRename
4
+ from plone.z3cform.layout import wrap_form
5
+ from z3c.form import button
6
+ from z3c.form import field
7
+ from z3c.form import form
8
+ from z3c.form.browser.checkbox import SingleCheckBoxFieldWidget
9
+ from zope import schema
10
+ from zope.interface import alsoProvides
11
+ from zope.interface import Interface
12
+ from zope.interface import noLongerProvides
13
+
14
+ import logging
15
+
16
+ logger = logging.getLogger("collective.preventactions")
17
+
18
+
19
+ class PreventBool(schema.Bool):
20
+ _type = bool
21
+
22
+ def __init__(self, title, description, default, iface=None):
23
+ super().__init__(
24
+ title=title, description=description, required=False, default=default
25
+ )
26
+ self.iface = iface
27
+
28
+
29
+ class IPreventActions(Interface):
30
+ """Define form fields"""
31
+
32
+ delete = PreventBool(
33
+ title=_("This object can not be deleted"),
34
+ description=_("If checked, this object can not be deleted."),
35
+ default=False,
36
+ iface=IPreventDelete,
37
+ )
38
+
39
+ move_or_rename = PreventBool(
40
+ title=_("This object can not be moved or renamed"),
41
+ description=_("If checked, this object can not be moved or renamed (id)."),
42
+ default=False,
43
+ iface=IPreventMoveOrRename,
44
+ )
45
+
46
+
47
+ class PreventActionsForm(form.Form):
48
+ fields = field.Fields(IPreventActions)
49
+ label = _("Prevent actions")
50
+ description = _("What actions do you want to prevent ?")
51
+ fields["delete"].widgetFactory = SingleCheckBoxFieldWidget
52
+ fields["move_or_rename"].widgetFactory = SingleCheckBoxFieldWidget
53
+
54
+ def updateWidgets(self):
55
+ """Customize widget options before rendering the form."""
56
+ super().updateWidgets()
57
+
58
+ # Dump out all widgets - note that each <fieldset> is a subform
59
+ # and this function only concerns the current fieldset
60
+ for widget_name in self.widgets:
61
+ widget = self.widgets[widget_name]
62
+ checked = widget.field.iface.providedBy(self.context)
63
+ if checked:
64
+ widget.value = ["selected"]
65
+ else:
66
+ widget.value = []
67
+
68
+ @button.buttonAndHandler(_("Save"))
69
+ def handleApply(self, action):
70
+ data, errors = self.extractData()
71
+ if errors:
72
+ self.status = self.formErrorsMessage
73
+ return
74
+
75
+ for name, value in data.items():
76
+ if value:
77
+ alsoProvides(self.context, self.fields[name].field.iface)
78
+ self.widgets[name].value = ["selected"]
79
+ else:
80
+ noLongerProvides(self.context, self.fields[name].field.iface)
81
+ self.widgets[name].value = []
82
+ # The uninstall profile finds marked objects through the catalog.
83
+ self.context.reindexObject(idxs=["object_provides"])
84
+
85
+ self.status = _("Changes saved")
86
+
87
+ @button.buttonAndHandler("Cancel")
88
+ def handleCancel(self, action):
89
+ """User cancelled. Redirect back to the front page."""
90
+
91
+
92
+ PreventActionsView = wrap_form(PreventActionsForm)
File without changes
@@ -0,0 +1,17 @@
1
+ from collective.preventactions.interfaces import IPreventDelete
2
+ from collective.preventactions.interfaces import IPreventMoveOrRename
3
+ from Products.Five.browser import BrowserView
4
+
5
+
6
+ class IsDeletable(BrowserView):
7
+ """Return True if we can delete object"""
8
+
9
+ def __call__(self):
10
+ return not IPreventDelete.providedBy(self.context)
11
+
12
+
13
+ class IsMoveable(BrowserView):
14
+ """Return True if we can move or rename object"""
15
+
16
+ def __call__(self):
17
+ return not IPreventMoveOrRename.providedBy(self.context)
@@ -0,0 +1,58 @@
1
+ <configure
2
+ xmlns="http://namespaces.zope.org/zope"
3
+ xmlns:cmf="http://namespaces.zope.org/cmf"
4
+ xmlns:five="http://namespaces.zope.org/five"
5
+ xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
6
+ xmlns:grok="http://namespaces.zope.org/grok"
7
+ xmlns:i18n="http://namespaces.zope.org/i18n"
8
+ i18n_domain="collective.preventactions"
9
+ >
10
+
11
+ <!-- Zope2 initialization -->
12
+ <five:registerPackage
13
+ package="."
14
+ initialize=".initialize"
15
+ />
16
+
17
+ <!-- Include sub-packages that use their own configure.zcml files. -->
18
+ <include package=".browser" />
19
+ <include package=".behaviors" />
20
+
21
+ <!-- Register the installation GenericSetup extension profile -->
22
+ <genericsetup:registerProfile
23
+ name="default"
24
+ title="collective.preventactions"
25
+ description="Extension profile for collective.preventactions."
26
+ provides="Products.GenericSetup.interfaces.EXTENSION"
27
+ directory="profiles/default"
28
+ />
29
+
30
+ <genericsetup:registerProfile
31
+ name="uninstall"
32
+ title="collective.preventactions: uninstall"
33
+ description="Uninstalls collective.preventactions."
34
+ provides="Products.GenericSetup.interfaces.EXTENSION"
35
+ for="plone.base.interfaces.IPloneSiteRoot"
36
+ directory="profiles/uninstall"
37
+ post_handler=".setuphandlers.uninstall"
38
+ />
39
+
40
+ <utility
41
+ factory=".setuphandlers.HiddenProfiles"
42
+ name="collective.preventactions.hiddenprofiles"
43
+ />
44
+
45
+ <i18n:registerTranslations directory="locales" />
46
+
47
+ <subscriber
48
+ for="OFS.interfaces.IItem
49
+ OFS.interfaces.IObjectWillBeRemovedEvent"
50
+ handler=".prevent.deleteObject"
51
+ />
52
+
53
+ <subscriber
54
+ for="OFS.interfaces.IItem
55
+ OFS.interfaces.IObjectWillBeMovedEvent"
56
+ handler=".prevent.moveOrRenameObject"
57
+ />
58
+ </configure>
@@ -0,0 +1,13 @@
1
+ from zope.interface import Interface
2
+
3
+
4
+ class ICollectivePreventActionsLayer(Interface):
5
+ """Marker interface that defines a Zope 3 browser layer."""
6
+
7
+
8
+ class IPreventDelete(Interface):
9
+ """Marker interface for prevent delete object"""
10
+
11
+
12
+ class IPreventMoveOrRename(Interface):
13
+ """Marker interface for prevent move / rename object"""
@@ -0,0 +1,91 @@
1
+ #--- PLEASE EDIT THE LINES BELOW CORRECTLY ---
2
+ #SOME DESCRIPTIVE TITLE.
3
+ #FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
+ msgid ""
5
+ msgstr ""
6
+ "Project-Id-Version: PACKAGE VERSION\n"
7
+ "POT-Creation-Date: 2025-03-06 23:11+0000\n"
8
+ "PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
9
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
10
+ "Language-Team: LANGUAGE <LL@li.org>\n"
11
+ "MIME-Version: 1.0\n"
12
+ "Content-Type: text/plain; charset=utf-8\n"
13
+ "Content-Transfer-Encoding: 8bit\n"
14
+ "Plural-Forms: nplurals=1; plural=0\n"
15
+ "Language-Code: en\n"
16
+ "Language-Name: English\n"
17
+ "Preferred-Encodings: utf-8 latin1\n"
18
+ "Domain: collective.preventactions\n"
19
+
20
+ #: collective/preventactions/browser/preventactions.py:86
21
+ msgid "Changes saved"
22
+ msgstr ""
23
+
24
+ #: collective/preventactions/configure.zcml:23
25
+ msgid "Extension profile for collective.preventactions."
26
+ msgstr ""
27
+
28
+ #: collective/preventactions/browser/preventactions.py:37
29
+ msgid "If checked, this object can not be deleted."
30
+ msgstr ""
31
+
32
+ #: collective/preventactions/browser/preventactions.py:44
33
+ msgid "If checked, this object can not be moved or renamed (id)."
34
+ msgstr ""
35
+
36
+ #: collective/preventactions/browser/preventactions.py:52
37
+ #: collective/preventactions/profiles/default/actions.xml
38
+ msgid "Prevent actions"
39
+ msgstr ""
40
+
41
+ #: collective/preventactions/behaviors/configure.zcml:17
42
+ msgid "PreventActions"
43
+ msgstr ""
44
+
45
+ #: collective/preventactions/browser/preventactions.py:71
46
+ msgid "Save"
47
+ msgstr ""
48
+
49
+ #: collective/preventactions/behaviors/configure.zcml:17
50
+ msgid "This behaviors adds prevent actions on a content type"
51
+ msgstr ""
52
+
53
+ #: collective/preventactions/browser/preventactions.py:36
54
+ msgid "This object can not be deleted"
55
+ msgstr ""
56
+
57
+ #: collective/preventactions/browser/preventactions.py:43
58
+ msgid "This object can not be moved or renamed"
59
+ msgstr ""
60
+
61
+ #: collective/preventactions/configure.zcml:32
62
+ msgid "Uninstalls collective.preventactions."
63
+ msgstr ""
64
+
65
+ #: collective/preventactions/browser/preventactions.py:53
66
+ msgid "What actions do you want to prevent ?"
67
+ msgstr ""
68
+
69
+ #: collective/preventactions/prevent.py:19
70
+ msgid "You can not delete this object"
71
+ msgstr ""
72
+
73
+ #: collective/preventactions/prevent.py:28
74
+ msgid "You can not move or rename this object"
75
+ msgstr ""
76
+
77
+ #: collective/preventactions/configure.zcml:23
78
+ msgid "collective.preventactions"
79
+ msgstr ""
80
+
81
+ #: collective/preventactions/testing.zcml:15
82
+ msgid "collective.preventactions desc"
83
+ msgstr ""
84
+
85
+ #: collective/preventactions/testing.zcml:15
86
+ msgid "collective.preventactions test"
87
+ msgstr ""
88
+
89
+ #: collective/preventactions/configure.zcml:32
90
+ msgid "collective.preventactions: uninstall"
91
+ msgstr ""
@@ -0,0 +1,88 @@
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: PACKAGE VERSION\n"
4
+ "POT-Creation-Date: 2025-03-06 23:11+0000\n"
5
+ "PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
6
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
7
+ "Language-Team: LANGUAGE <LL@li.org>\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=utf-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "Plural-Forms: nplurals=1; plural=0\n"
12
+ "Language-Code: de\n"
13
+ "Language-Name: Deutsch\n"
14
+ "Preferred-Encodings: utf-8 latin1\n"
15
+ "Domain: collective.preventactions\n"
16
+
17
+ #: collective/preventactions/browser/preventactions.py:86
18
+ msgid "Changes saved"
19
+ msgstr "Modifikationen gespeichert"
20
+
21
+ #: collective/preventactions/configure.zcml:23
22
+ msgid "Extension profile for collective.preventactions."
23
+ msgstr "Erweiterungsprofil für collective.preventactions."
24
+
25
+ #: collective/preventactions/browser/preventactions.py:37
26
+ msgid "If checked, this object can not be deleted."
27
+ msgstr "Sollte diese Option aktiviert sein, kann das Objekt nicht gelöscht werden."
28
+
29
+ #: collective/preventactions/browser/preventactions.py:44
30
+ msgid "If checked, this object can not be moved or renamed (id)."
31
+ msgstr "Sollte diese Option aktiviert sein, kann das Objekt nicht verschoben oder umbenannt werden (ID)."
32
+
33
+ #: collective/preventactions/browser/preventactions.py:52
34
+ #: collective/preventactions/profiles/default/actions.xml
35
+ msgid "Prevent actions"
36
+ msgstr "Aktionen verhindern"
37
+
38
+ #: collective/preventactions/behaviors/configure.zcml:17
39
+ msgid "PreventActions"
40
+ msgstr "PreventActions"
41
+
42
+ #: collective/preventactions/browser/preventactions.py:71
43
+ msgid "Save"
44
+ msgstr "Speichern"
45
+
46
+ #: collective/preventactions/behaviors/configure.zcml:17
47
+ msgid "This behaviors adds prevent actions on a content type"
48
+ msgstr "Dieses Verhalten fügt einem Inhaltstyp verhinderte Aktionen hinzu"
49
+
50
+ #: collective/preventactions/browser/preventactions.py:36
51
+ msgid "This object can not be deleted"
52
+ msgstr "Dieses Objekt kann nicht gelöscht werden"
53
+
54
+ #: collective/preventactions/browser/preventactions.py:43
55
+ msgid "This object can not be moved or renamed"
56
+ msgstr "Dieses Objekt kann nicht verschoben oder umbenannt werden"
57
+
58
+ #: collective/preventactions/configure.zcml:32
59
+ msgid "Uninstalls collective.preventactions."
60
+ msgstr "Deinstalliert collective.preventactions."
61
+
62
+ #: collective/preventactions/browser/preventactions.py:53
63
+ msgid "What actions do you want to prevent ?"
64
+ msgstr "Welche Aktionen möchten Sie verhindern ?"
65
+
66
+ #: collective/preventactions/prevent.py:19
67
+ msgid "You can not delete this object"
68
+ msgstr "Du kannst dieses Objekt nicht löschen"
69
+
70
+ #: collective/preventactions/prevent.py:28
71
+ msgid "You can not move or rename this object"
72
+ msgstr "Du kannst dieses Objekt nicht verschieben oder umbenennen"
73
+
74
+ #: collective/preventactions/configure.zcml:23
75
+ msgid "collective.preventactions"
76
+ msgstr "collective.preventactions"
77
+
78
+ #: collective/preventactions/testing.zcml:15
79
+ msgid "collective.preventactions desc"
80
+ msgstr "collective.preventactions desc"
81
+
82
+ #: collective/preventactions/testing.zcml:15
83
+ msgid "collective.preventactions test"
84
+ msgstr "collective.preventactions test"
85
+
86
+ #: collective/preventactions/configure.zcml:32
87
+ msgid "collective.preventactions: uninstall"
88
+ msgstr "collective.preventactions: deinstallieren"
@@ -0,0 +1,88 @@
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: PACKAGE VERSION\n"
4
+ "POT-Creation-Date: 2025-03-06 23:11+0000\n"
5
+ "PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
6
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
7
+ "Language-Team: LANGUAGE <LL@li.org>\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=utf-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "Plural-Forms: nplurals=1; plural=0\n"
12
+ "Language-Code: en\n"
13
+ "Language-Name: English\n"
14
+ "Preferred-Encodings: utf-8 latin1\n"
15
+ "Domain: collective.preventactions\n"
16
+
17
+ #: collective/preventactions/browser/preventactions.py:86
18
+ msgid "Changes saved"
19
+ msgstr ""
20
+
21
+ #: collective/preventactions/configure.zcml:23
22
+ msgid "Extension profile for collective.preventactions."
23
+ msgstr ""
24
+
25
+ #: collective/preventactions/browser/preventactions.py:37
26
+ msgid "If checked, this object can not be deleted."
27
+ msgstr ""
28
+
29
+ #: collective/preventactions/browser/preventactions.py:44
30
+ msgid "If checked, this object can not be moved or renamed (id)."
31
+ msgstr ""
32
+
33
+ #: collective/preventactions/browser/preventactions.py:52
34
+ #: collective/preventactions/profiles/default/actions.xml
35
+ msgid "Prevent actions"
36
+ msgstr ""
37
+
38
+ #: collective/preventactions/behaviors/configure.zcml:17
39
+ msgid "PreventActions"
40
+ msgstr ""
41
+
42
+ #: collective/preventactions/browser/preventactions.py:71
43
+ msgid "Save"
44
+ msgstr ""
45
+
46
+ #: collective/preventactions/behaviors/configure.zcml:17
47
+ msgid "This behaviors adds prevent actions on a content type"
48
+ msgstr ""
49
+
50
+ #: collective/preventactions/browser/preventactions.py:36
51
+ msgid "This object can not be deleted"
52
+ msgstr ""
53
+
54
+ #: collective/preventactions/browser/preventactions.py:43
55
+ msgid "This object can not be moved or renamed"
56
+ msgstr ""
57
+
58
+ #: collective/preventactions/configure.zcml:32
59
+ msgid "Uninstalls collective.preventactions."
60
+ msgstr ""
61
+
62
+ #: collective/preventactions/browser/preventactions.py:53
63
+ msgid "What actions do you want to prevent ?"
64
+ msgstr ""
65
+
66
+ #: collective/preventactions/prevent.py:19
67
+ msgid "You can not delete this object"
68
+ msgstr ""
69
+
70
+ #: collective/preventactions/prevent.py:28
71
+ msgid "You can not move or rename this object"
72
+ msgstr ""
73
+
74
+ #: collective/preventactions/configure.zcml:23
75
+ msgid "collective.preventactions"
76
+ msgstr ""
77
+
78
+ #: collective/preventactions/testing.zcml:15
79
+ msgid "collective.preventactions desc"
80
+ msgstr ""
81
+
82
+ #: collective/preventactions/testing.zcml:15
83
+ msgid "collective.preventactions test"
84
+ msgstr ""
85
+
86
+ #: collective/preventactions/configure.zcml:32
87
+ msgid "collective.preventactions: uninstall"
88
+ msgstr ""
@@ -0,0 +1,88 @@
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: PACKAGE VERSION\n"
4
+ "POT-Creation-Date: 2025-03-06 23:11+0000\n"
5
+ "PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
6
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
7
+ "Language-Team: LANGUAGE <LL@li.org>\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=utf-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "Plural-Forms: nplurals=1; plural=0\n"
12
+ "Language-Code: fr\n"
13
+ "Language-Name: Français\n"
14
+ "Preferred-Encodings: utf-8 latin1\n"
15
+ "Domain: collective.preventactions\n"
16
+
17
+ #: collective/preventactions/browser/preventactions.py:86
18
+ msgid "Changes saved"
19
+ msgstr "Changements sauvegardés"
20
+
21
+ #: collective/preventactions/configure.zcml:23
22
+ msgid "Extension profile for collective.preventactions."
23
+ msgstr "Profil d'extension pour collective.preventactions."
24
+
25
+ #: collective/preventactions/browser/preventactions.py:37
26
+ msgid "If checked, this object can not be deleted."
27
+ msgstr "Si coché, cet objet ne peut pas être supprimé."
28
+
29
+ #: collective/preventactions/browser/preventactions.py:44
30
+ msgid "If checked, this object can not be moved or renamed (id)."
31
+ msgstr "Si coché, cet objet ne peut pas être déplacé ou renommé (id)."
32
+
33
+ #: collective/preventactions/browser/preventactions.py:52
34
+ #: collective/preventactions/profiles/default/actions.xml
35
+ msgid "Prevent actions"
36
+ msgstr "Prevent actions"
37
+
38
+ #: collective/preventactions/behaviors/configure.zcml:17
39
+ msgid "PreventActions"
40
+ msgstr "PreventActions"
41
+
42
+ #: collective/preventactions/browser/preventactions.py:71
43
+ msgid "Save"
44
+ msgstr "Sauvegarder"
45
+
46
+ #: collective/preventactions/behaviors/configure.zcml:17
47
+ msgid "This behaviors adds prevent actions on a content type"
48
+ msgstr "Ce comportement permet d'empêcher des actions sur un type de contenu"
49
+
50
+ #: collective/preventactions/browser/preventactions.py:36
51
+ msgid "This object can not be deleted"
52
+ msgstr "Cet objet ne peut pas être supprimé"
53
+
54
+ #: collective/preventactions/browser/preventactions.py:43
55
+ msgid "This object can not be moved or renamed"
56
+ msgstr "Cet objet ne peut pas être déplacé ou renommé"
57
+
58
+ #: collective/preventactions/configure.zcml:32
59
+ msgid "Uninstalls collective.preventactions."
60
+ msgstr "Désinstalle collective.preventactions."
61
+
62
+ #: collective/preventactions/browser/preventactions.py:53
63
+ msgid "What actions do you want to prevent ?"
64
+ msgstr "Quelles actions voulez-vous empêcher ?"
65
+
66
+ #: collective/preventactions/prevent.py:19
67
+ msgid "You can not delete this object"
68
+ msgstr "Vous ne pouvez pas supprimer cet objet"
69
+
70
+ #: collective/preventactions/prevent.py:28
71
+ msgid "You can not move or rename this object"
72
+ msgstr "Vous ne pouvez pas déplacer ou renommer cet objet"
73
+
74
+ #: collective/preventactions/configure.zcml:23
75
+ msgid "collective.preventactions"
76
+ msgstr "collective.preventactions"
77
+
78
+ #: collective/preventactions/testing.zcml:15
79
+ msgid "collective.preventactions desc"
80
+ msgstr "collective.preventactions desc"
81
+
82
+ #: collective/preventactions/testing.zcml:15
83
+ msgid "collective.preventactions test"
84
+ msgstr "collective.preventactions test"
85
+
86
+ #: collective/preventactions/configure.zcml:32
87
+ msgid "collective.preventactions: uninstall"
88
+ msgstr "collective.preventactions: désinstaller"