diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-12-02 14:15:05 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-12-02 14:15:05 +0100 |
commit | 3c3dc92e3aef6c479b0d5f020c7dc8c4ce76e532 (patch) | |
tree | 5d4355bb39ea5de6aeaf442d07cf91fcbfa85ebd /ishtar_common/wizards.py | |
parent | f832138b10e557fc8d4086fcdb7f1383516ccfde (diff) | |
download | Ishtar-3c3dc92e3aef6c479b0d5f020c7dc8c4ce76e532.tar.bz2 Ishtar-3c3dc92e3aef6c479b0d5f020c7dc8c4ce76e532.zip |
Sheet quick actions to add treatments from find, basket and container
Diffstat (limited to 'ishtar_common/wizards.py')
-rw-r--r-- | ishtar_common/wizards.py | 54 |
1 files changed, 29 insertions, 25 deletions
diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index 19eb312e1..446afc71e 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -147,36 +147,40 @@ class Wizard(IshtarWizard): form, other_check) return kwargs + def check_own_permissions(self, request, step, *args, **kwargs): + # reinit default dispatch of a wizard - not clean... + self.request = request + self.session = request.session + self.prefix = self.get_prefix(request, *args, **kwargs) + self.storage = get_storage( + self.storage_name, self.prefix, request, + getattr(self, 'file_storage', None)) + self.steps = StepsHelper(self) + + current_object = self.get_current_object() + ishtaruser = request.user.ishtaruser \ + if hasattr(request.user, 'ishtaruser') else None + + # not the first step and current object is not owned + if self.steps and self.steps.first != step and current_object: + is_own = current_object.is_own( + ishtaruser, alt_query_own=self.alt_is_own_method) + if not is_own: + messages.add_message( + request, messages.WARNING, + _(u"Permission error: you cannot do this action.") + ) + self.session_reset(request, self.url_name) + return + return True + def dispatch(self, request, *args, **kwargs): self.current_right = kwargs.get('current_right', None) step = kwargs.get('step', None) # check that the current object is really owned by the current user if step and self.current_right and '_own_' in self.current_right: - - # reinit default dispatch of a wizard - not clean... - self.request = request - self.session = request.session - self.prefix = self.get_prefix(request, *args, **kwargs) - self.storage = get_storage( - self.storage_name, self.prefix, request, - getattr(self, 'file_storage', None)) - self.steps = StepsHelper(self) - - current_object = self.get_current_object() - ishtaruser = request.user.ishtaruser \ - if hasattr(request.user, 'ishtaruser') else None - - # not the first step and current object is not owned - if self.steps and self.steps.first != step and current_object: - is_own = current_object.is_own( - ishtaruser, alt_query_own=self.alt_is_own_method) - if not is_own: - messages.add_message( - request, messages.WARNING, - _(u"Permission error: you cannot do this action.") - ) - self.session_reset(request, self.url_name) - return HttpResponseRedirect('/') + if not self.check_permissions(request, step, *args, **kwargs): + return HttpResponseRedirect('/') # extra filter on forms self.filter_owns_items = True else: |