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"