Add generic 'new holder' link
This commit is contained in:
@@ -5,7 +5,8 @@ from django.utils.translation import ugettext_lazy as _
|
||||
from navigation.api import register_links, register_multi_item_links
|
||||
from project_setup.api import register_setup
|
||||
|
||||
from .classes import AccessHolder, AccessObjectClass, ClassAccessHolder
|
||||
from .classes import (AccessHolder, AccessObjectClass, ClassAccessHolder,
|
||||
AccessObject)
|
||||
from .permissions import (ACLS_EDIT_ACL, ACLS_VIEW_ACL,
|
||||
ACLS_CLASS_EDIT_ACL, ACLS_CLASS_VIEW_ACL)
|
||||
|
||||
@@ -14,6 +15,7 @@ acl_list = {'text': _(u'ACLs'), 'view': 'acl_list', 'famfam': 'lock', 'permissio
|
||||
acl_detail = {'text': _(u'details'), 'view': 'acl_detail', 'args': ['access_object.gid', 'object.gid'], 'famfam': 'key_go', 'permissions': [ACLS_VIEW_ACL]}
|
||||
acl_grant = {'text': _(u'grant'), 'view': 'acl_multiple_grant', 'famfam': 'key_add', 'permissions': [ACLS_EDIT_ACL]}
|
||||
acl_revoke = {'text': _(u'revoke'), 'view': 'acl_multiple_revoke', 'famfam': 'key_delete', 'permissions': [ACLS_EDIT_ACL]}
|
||||
acl_holder_new = {'text': _(u'New holder'), 'view': 'acl_holder_new', 'args': 'access_object.gid', 'famfam': 'user', 'permissions': [ACLS_EDIT_ACL]}
|
||||
|
||||
acl_setup_valid_classes = {'text': _(u'Default ACLs'), 'view': 'acl_setup_valid_classes', 'icon': 'lock.png', 'permissions': [ACLS_CLASS_VIEW_ACL]}
|
||||
acl_class_list = {'text': _(u'List of classes'), 'view': 'acl_setup_valid_classes', 'famfam': 'package', 'permissions': [ACLS_CLASS_VIEW_ACL]}
|
||||
@@ -26,6 +28,8 @@ acl_class_revoke = {'text': _(u'revoke'), 'view': 'acl_class_multiple_revoke', '
|
||||
register_links(AccessHolder, [acl_detail])
|
||||
register_multi_item_links(['acl_detail'], [acl_grant, acl_revoke])
|
||||
|
||||
register_links([AccessObject], [acl_holder_new], menu_name='sidebar')
|
||||
|
||||
register_setup(acl_setup_valid_classes)
|
||||
register_links(['acl_setup_valid_classes', 'acl_class_acl_list', 'acl_class_new_holder_for', 'acl_class_acl_detail'], [acl_class_list], menu_name='secondary_menu')
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ urlpatterns = patterns('acls.views',
|
||||
url(r'^new_holder_for/(?P<app_label>[-\w]+)/(?P<model_name>[-\w]+)/(?P<object_id>\d+)/$', 'acl_new_holder_for', (), 'acl_new_holder_for'),
|
||||
url(r'^list_for/(?P<app_label>[-\w]+)/(?P<model_name>[-\w]+)/(?P<object_id>\d+)/$', 'acl_list', (), 'acl_list'),
|
||||
url(r'^details/(?P<access_object_gid>[.\w]+)/holder/(?P<holder_object_gid>[.\w]+)/$', 'acl_detail', (), 'acl_detail'),
|
||||
url(r'^holder/new/(?P<access_object_gid>[.\w]+)/$', 'acl_holder_new', (), 'acl_holder_new'),
|
||||
|
||||
url(r'^multiple/grant/$', 'acl_grant', (), 'acl_multiple_grant'),
|
||||
url(r'^multiple/revoke/$', 'acl_revoke', (), 'acl_multiple_revoke'),
|
||||
|
||||
@@ -55,7 +55,12 @@ def acl_list_for(request, obj, extra_context=None):
|
||||
{'name': _(u'permissions'), 'attribute': encapsulate(lambda x: _permission_titles(AccessEntry.objects.get_holder_permissions_for(obj, x.source_object)))},
|
||||
],
|
||||
'hide_object': True,
|
||||
'access_object': AccessObject.encapsulate(obj)
|
||||
'access_object': AccessObject.encapsulate(obj),
|
||||
'object': obj,
|
||||
'navigation_object_list': [
|
||||
{'object': 'object'},
|
||||
{'object': 'access_object'}
|
||||
],
|
||||
}
|
||||
|
||||
if extra_context:
|
||||
@@ -78,12 +83,10 @@ def acl_detail(request, access_object_gid, holder_object_gid):
|
||||
except ObjectDoesNotExist:
|
||||
raise Http404
|
||||
|
||||
navigation_object = request.GET.get('navigation_object')
|
||||
logger.debug('navigation_object: %s' % navigation_object)
|
||||
return acl_detail_for(request, holder.source_object, access_object.source_object, navigation_object)
|
||||
return acl_detail_for(request, holder.source_object, access_object.source_object)
|
||||
|
||||
|
||||
def acl_detail_for(request, actor, obj, navigation_object=None):
|
||||
def acl_detail_for(request, actor, obj):
|
||||
try:
|
||||
Permission.objects.check_permissions(request.user, [ACLS_VIEW_ACL])
|
||||
except PermissionDenied:
|
||||
@@ -123,15 +126,13 @@ def acl_detail_for(request, actor, obj, navigation_object=None):
|
||||
'permission_pk': lambda x: x.pk,
|
||||
'holder_gid': lambda x: AccessHolder(actor).gid,
|
||||
'object_gid': lambda x: AccessObject(obj).gid,
|
||||
}
|
||||
},
|
||||
'access_object': AccessObject.encapsulate(obj),
|
||||
'navigation_object_list': [
|
||||
{'object': 'object'},
|
||||
{'object': 'access_object'}
|
||||
],
|
||||
}
|
||||
|
||||
if navigation_object:
|
||||
context.update(
|
||||
{
|
||||
navigation_object: obj
|
||||
}
|
||||
)
|
||||
|
||||
return render_to_response(
|
||||
'generic_detail.html',
|
||||
@@ -359,13 +360,28 @@ def acl_new_holder_for(request, obj, extra_context=None, navigation_object=None)
|
||||
'title': _(u'add new holder for: %s') % obj,
|
||||
'submit_label': _(u'Select'),
|
||||
'submit_icon_famfam': 'tick',
|
||||
'object': obj,
|
||||
'access_object': AccessObject.encapsulate(obj),
|
||||
'navigation_object_list': [
|
||||
{'object': 'object'},
|
||||
{'object': 'access_object'},
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
if extra_context:
|
||||
context.update(extra_context)
|
||||
|
||||
return render_to_response('generic_form.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def acl_holder_new(request, access_object_gid):
|
||||
try:
|
||||
access_object = AccessObject.get(gid=access_object_gid)
|
||||
except ObjectDoesNotExist:
|
||||
raise Http404
|
||||
|
||||
return acl_new_holder_for(request, access_object.source_object)#, extra_context={'access_object': access_object})
|
||||
|
||||
|
||||
# Setup views
|
||||
@@ -435,7 +451,6 @@ def acl_class_acl_detail(request, access_object_class_gid, holder_object_gid):
|
||||
'attribute': encapsulate(lambda x: two_state_template(DefaultAccessEntry.objects.has_access(x, actor.source_object, access_object_class.source_object)))
|
||||
},
|
||||
],
|
||||
#'hide_link': True,
|
||||
'hide_object': True,
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user