diff --git a/genweb/organs/browser/utils.py b/genweb/organs/browser/utils.py
index 7a508f88..b1dd70e5 100644
--- a/genweb/organs/browser/utils.py
+++ b/genweb/organs/browser/utils.py
@@ -6,6 +6,8 @@
import json
import transaction
from Products.statusmessages.interfaces import IStatusMessage
+from genweb.organs.content.sessio import ISessio
+from plone.namedfile.file import NamedBlobFile
class changeMigrated(grok.View):
@@ -184,3 +186,129 @@ def render(self):
results.append(element)
return json.dumps(results, indent=2, sort_keys=True)
+
+
+class MovePublicfilestoPrivate(grok.View):
+ # After migrating data, some files came with an error.
+ # They were located as public files, but must be Private.
+ # This view change all files from public to private and viceversa
+ # in a given session
+
+ grok.context(ISessio)
+ grok.name('movefilestoprivateorpublic')
+ grok.require('cmf.ManagePortal')
+ grok.layer(IGenwebOrgansLayer)
+
+ def showfiles(self):
+ all_brains = api.content.find(portal_type='genweb.organs.file', path=self.context.absolute_url_path())
+ results = []
+ for brain in all_brains:
+ obj = brain.getObject()
+ if obj.visiblefile:
+ visible = obj.visiblefile.filename
+ else:
+ visible = 'Empty'
+ if obj.hiddenfile:
+ hidden = obj.hiddenfile.filename
+ else:
+ hidden = 'Empty'
+ element = {
+ 'visiblefile': visible,
+ 'hiddenfile': hidden,
+ 'path': obj.absolute_url()
+ }
+
+ results.append(element)
+ return json.dumps(results, indent=2, sort_keys=True)
+
+ def movetoPrivate(self):
+ all_brains = api.content.find(portal_type='genweb.organs.file', path=self.context.absolute_url_path())
+ results = []
+ for brain in all_brains:
+ obj = brain.getObject()
+ # Show initial values
+ if getattr(obj, 'visiblefile', False):
+ initial_visible = obj.visiblefile.filename
+ else:
+ initial_visible = 'Empty'
+ if getattr(obj, 'hiddenfile', False):
+ initial_hidden = obj.hiddenfile.filename
+ else:
+ initial_hidden = 'Empty'
+ final_visible = 'Not modified'
+ final_hidden = 'Not modified'
+ if not obj.hiddenfile and obj.visiblefile:
+ initial_visible = obj.visiblefile.filename
+ initial_hidden = 'Empty'
+ # Move public to private
+ obj.hiddenfile = NamedBlobFile(
+ data=obj.visiblefile.data,
+ contentType=obj.visiblefile.contentType,
+ filename=obj.visiblefile.filename
+ )
+ transaction.commit()
+ del obj.visiblefile
+ final_visible = 'Empty (Deleted)'
+ final_hidden = obj.hiddenfile.filename
+ element = {
+ 'original-visiblefile': initial_visible,
+ 'original-hiddenfile': initial_hidden,
+ 'path': obj.absolute_url(),
+ 'final-visiblefile': final_visible,
+ 'final-hiddenfile': final_hidden,
+ }
+ results.append(element)
+ return json.dumps(results, indent=2, sort_keys=True)
+
+ def movetoPublic(self):
+ all_brains = api.content.find(portal_type='genweb.organs.file', path=self.context.absolute_url_path())
+ results = []
+ for brain in all_brains:
+ obj = brain.getObject()
+ # Show initial values
+ if getattr(obj, 'visiblefile', False):
+ initial_visible = obj.visiblefile.filename
+ else:
+ initial_visible = 'Empty'
+ if getattr(obj, 'hiddenfile', False):
+ initial_hidden = obj.hiddenfile.filename
+ else:
+ initial_hidden = 'Empty'
+ final_visible = 'Not modified'
+ final_hidden = 'Not modified'
+ if obj.hiddenfile and not obj.visiblefile:
+ initial_visible = 'Empty'
+ initial_hidden = obj.hiddenfile.filename
+ # Move private to public
+ obj.visiblefile = NamedBlobFile(
+ data=obj.hiddenfile.data,
+ contentType=obj.hiddenfile.contentType,
+ filename=obj.hiddenfile.filename
+ )
+ transaction.commit()
+ del obj.hiddenfile
+ final_visible = obj.visiblefile.filename
+ final_hidden = 'Empty (Deleted)'
+ element = {
+ 'original-visiblefile': initial_visible,
+ 'original-hiddenfile': initial_hidden,
+ 'path': obj.absolute_url(),
+ 'final-visiblefile': final_visible,
+ 'final-hiddenfile': final_hidden,
+ }
+ results.append(element)
+ return json.dumps(results, indent=2, sort_keys=True)
+
+ def render(self):
+ """ Execute /movefilestoprivateorpublic """
+ if 'showfiles' in self.request.form:
+ return self.showfiles()
+ if 'move2Private' in self.request.form:
+ return self.movetoPrivate()
+ if 'move2Public' in self.request.form:
+ return self.movetoPublic()
+
+ return 'DANGER: This code moves files from public to private and viceversa.
\
+
usage: /movefilestoprivateorpublic? showfiles\
+ | move2Private \
+ | move2Public'
diff --git a/genweb/organs/locales/ca/LC_MESSAGES/genweb.organs.po b/genweb/organs/locales/ca/LC_MESSAGES/genweb.organs.po
index 34f218cc..b080add1 100644
--- a/genweb/organs/locales/ca/LC_MESSAGES/genweb.organs.po
+++ b/genweb/organs/locales/ca/LC_MESSAGES/genweb.organs.po
@@ -558,11 +558,11 @@ msgstr "No assistents"
#: ./genweb/organs/hooks.py:77
msgid "Modified acord"
-msgstr "S'ha modificat un acord."
+msgstr "S'ha modificat un acord"
#: ./genweb/organs/hooks.py:83
msgid "Modified acta"
-msgstr "S'ha modificat una acta."
+msgstr "S'ha modificat una acta"
#: ./genweb/organs/search.pt:233
msgid "Modified dates"