mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-12-25 00:13:45 +00:00
Ajout du tag can_view_any_app et autorise de mettre plusieurs apps dans can_view_app
This commit is contained in:
parent
be430c4651
commit
6b8b576452
1 changed files with 16 additions and 9 deletions
|
@ -180,13 +180,17 @@ def get_callback(tag_name, obj=None):
|
|||
if tag_name == 'cannot_view_all':
|
||||
return acl_fct(obj.can_view_all, True)
|
||||
if tag_name == 'can_view_app':
|
||||
return acl_fct(sys.modules[obj].can_view, False)
|
||||
return acl_fct(lambda x : (not any(not sys.modules[o].can_view(x) for o in obj), None), False)
|
||||
if tag_name == 'cannot_view_app':
|
||||
return acl_fct(sys.modules[obj].can_view, True)
|
||||
return acl_fct(lambda x : (not any(not sys.modules[o].can_view(x) for o in obj), None), True)
|
||||
if tag_name == 'can_edit_history':
|
||||
return acl_fct(lambda user:(user.has_perm('admin.change_logentry'),None),False)
|
||||
if tag_name == 'cannot_edit_history':
|
||||
return acl_fct(lambda user:(user.has_perm('admin.change_logentry'),None),True)
|
||||
if tag_name == 'can_view_any_app':
|
||||
return acl_fct(lambda x : (any(sys.modules[o].can_view(x) for o in obj), None), False)
|
||||
if tag_name == 'cannot_view_any_app':
|
||||
return acl_fct(lambda x : (any(sys.modules[o].can_view(x) for o in obj), None), True)
|
||||
|
||||
raise template.TemplateSyntaxError(
|
||||
"%r tag is not a valid can_xxx tag" % tag_name
|
||||
|
@ -228,21 +232,24 @@ def acl_history_filter(parser, token):
|
|||
return AclNode(callback, oknodes, konodes)
|
||||
|
||||
|
||||
@register.tag('can_view_any_app')
|
||||
@register.tag('cannot_view_any_app')
|
||||
@register.tag('can_view_app')
|
||||
@register.tag('cannot_view_app')
|
||||
def acl_app_filter(parser, token):
|
||||
"""Templatetag for acl checking on applications."""
|
||||
try:
|
||||
tag_name, app_name = token.split_contents()
|
||||
tag_name, *app_name = token.split_contents()
|
||||
except ValueError:
|
||||
raise template.TemplateSyntaxError(
|
||||
"%r tag require 1 argument : the application"
|
||||
"%r tag require 1 argument : an application"
|
||||
% token.contents.split()[0]
|
||||
)
|
||||
if not app_name in sys.modules.keys():
|
||||
for name in app_name:
|
||||
if not name in sys.modules.keys():
|
||||
raise template.TemplateSyntaxError(
|
||||
"%r is not a registered application for acl."
|
||||
% app_name
|
||||
% name
|
||||
)
|
||||
|
||||
callback = get_callback(tag_name, app_name)
|
||||
|
|
Loading…
Reference in a new issue