diff --git a/genweb/organs/browser/utils.py b/genweb/organs/browser/utils.py index e5d1c641..37a50859 100644 --- a/genweb/organs/browser/utils.py +++ b/genweb/organs/browser/utils.py @@ -5,6 +5,42 @@ from genweb.organs.interfaces import IGenwebOrgansLayer import json import transaction +from Products.statusmessages.interfaces import IStatusMessage + + +class changeMigrated(grok.View): + # Change migrated property of sessions. + # No se pueden editar sessiones de la versión antigua, pero + # en algunos casos, nos han pedido que se pueda... + # Este código cambia el valor de la propiedad para eso + grok.context(IDexterityContent) + grok.name('change_migrated_to') + grok.require('cmf.ManagePortal') + grok.layer(IGenwebOrgansLayer) + + def render(self): + # http:/session_url/change_migrated_to?value=False + messages = IStatusMessage(self.request) + if self.context.portal_type == 'genweb.organs.sessio': + if self.request['value'] == 'True': + elements = api.content.find(path=self.context.absolute_url_path()) + for item in elements: + value = item.getObject() + value.migrated = True + transaction.commit() + elif self.request['value'] == 'False': + elements = api.content.find(path=self.context.absolute_url_path()) + for item in elements: + value = item.getObject() + value.migrated = False + transaction.commit() + else: + return + + messages.add('migrated property set to: ' + str(self.request['value']), type='warning') + self.request.response.redirect(self.context.absolute_url()) + else: + pass class changeInitialProposalPoint(grok.View): diff --git a/genweb/organs/browser/views.py b/genweb/organs/browser/views.py index b3a1f253..824feaae 100644 --- a/genweb/organs/browser/views.py +++ b/genweb/organs/browser/views.py @@ -137,10 +137,14 @@ def __call__(self): class Move(BrowserView): def __call__(self): - migrated = hasattr(self.context, 'migrated') - if migrated is True: - # Don't give option to modify numbers - return + migrated_property = hasattr(self.context, 'migrated') + if migrated_property: + if self.context.migrated is True: + return + + # Disable CSRF + alsoProvides(self.request, IDisableCSRFProtection) + ordering = getOrdering(self.context) # authenticator = getMultiAdapter((self.context, self.request), # name=u"authenticator") @@ -334,10 +338,10 @@ class ReloadAcords(BrowserView): def __call__(self): """ This call reassign the correct proposalPoints to the contents in this folder """ - migrated = hasattr(self.context, 'migrated') - if migrated is True: - # Don't give option to modify numbers - return + migrated_property = hasattr(self.context, 'migrated') + if migrated_property: + if self.context.migrated is True: + return # Disable CSRF alsoProvides(self.request, IDisableCSRFProtection) @@ -396,7 +400,7 @@ def __call__(self): index = index + 1 - self.request.response.redirect(self.context.absolute_url()) + return self.request.response.redirect(self.context.absolute_url()) class ReloadPoints(BrowserView): @@ -404,10 +408,10 @@ class ReloadPoints(BrowserView): def __call__(self): """ This call reassign the correct Point number to the contents in this folder """ - migrated = hasattr(self.context, 'migrated') - if migrated is True: - # Don't give option to modify numbers - return + migrated_property = hasattr(self.context, 'migrated') + if migrated_property: + if self.context.migrated is True: + return # Disable CSRF alsoProvides(self.request, IDisableCSRFProtection) @@ -443,7 +447,7 @@ def __call__(self): index = index + 1 - self.request.response.redirect(self.context.absolute_url()) + return self.request.response.redirect(self.context.absolute_url()) class changeActualState(BrowserView): @@ -490,6 +494,7 @@ def __call__(self): addEntryLog(self.context, None, _(u'Changed acord color state'), itemid + ' → ' + estat) # add log except: pass + return class changeSubpuntState(BrowserView): @@ -499,6 +504,7 @@ class changeSubpuntState(BrowserView): def __call__(self): # Disable CSRF alsoProvides(self.request, IDisableCSRFProtection) + portal_catalog = getToolByName(self, 'portal_catalog') estat = self.request.form.get('estat') itemid = self.request.form.get('id') @@ -516,6 +522,8 @@ def __call__(self): else: addEntryLog(self.context, None, _(u'Changed acord intern state color'), currentitem[0].getPath() + ' → ' + estat) # add log + return + class Butlleti(BrowserView): __call__ = ViewPageTemplateFile('views/butlleti.pt') diff --git a/genweb/organs/content/manualimport.py b/genweb/organs/content/manualimport.py index 4fc98b65..231cf848 100644 --- a/genweb/organs/content/manualimport.py +++ b/genweb/organs/content/manualimport.py @@ -47,9 +47,10 @@ def update(self): """ Return true if user is Editor or Manager, but if the session """ """ came from the previous version, then make impossible to """ """ create new elements """ - migrated = hasattr(self.context, 'migrated') - if migrated is True: - raise Unauthorized + migrated_property = hasattr(self.context, 'migrated') + if migrated_property: + if self.context.migrated is True: + raise Unauthorized try: username = api.user.get_current().id diff --git a/genweb/organs/content/sessio.py b/genweb/organs/content/sessio.py index c7f5df14..f85fa07c 100644 --- a/genweb/organs/content/sessio.py +++ b/genweb/organs/content/sessio.py @@ -224,9 +224,11 @@ def viewHistory(self): def canModify(self): # If item is migrated, it can't be modified - migrated = hasattr(self.context, 'migrated') - if migrated is True: - return False + migrated_property = hasattr(self.context, 'migrated') + if migrated_property: + if self.context.migrated is True: + return False + # But if not migrated, check permissions... review_state = api.content.get_state(self.context) value = False