1
0
mirror of https://github.com/django/django.git synced 2025-07-05 18:29:11 +00:00

[per-object-permissions] Removed commented (unused) code

git-svn-id: http://code.djangoproject.com/svn/django/branches/per-object-permissions@3623 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Christopher Long 2006-08-20 18:02:58 +00:00
parent 722d0dbf42
commit 19ece7470d
6 changed files with 59 additions and 89 deletions

View File

@ -11,8 +11,8 @@ class ChangeRLPManipulator(forms.Manipulator):
self.ct = ct self.ct = ct
perm_list = [(o.id, o.name) for o in self.ct.permission_set.order_by("name")] perm_list = [(o.id, o.name) for o in self.ct.permission_set.order_by("name")]
obj_list = [('user', User.objects.order_by("username"))] obj_list = [(User, User.objects.order_by("username"))]
obj_list.extend([('group', Group.objects.order_by("name"))]) obj_list.extend([(Group, Group.objects.order_by("name"))])
self.fields = ( self.fields = (
MultipleObjSelectField(field_name="owner", obj_list=obj_list), MultipleObjSelectField(field_name="owner", obj_list=obj_list),
@ -52,8 +52,8 @@ class AddRLPManipulator(ChangeRLPManipulator):
def __init__(self, obj_instance, ct): def __init__(self, obj_instance, ct):
self.ct = ct self.ct = ct
self.obj_instance = obj_instance self.obj_instance = obj_instance
obj_list = [('user', User.objects.order_by("username"))] obj_list = [(User, User.objects.order_by("username"))]
obj_list.extend([('group', Group.objects.order_by("name"))]) obj_list.extend([(Group, Group.objects.order_by("name"))])
perm_list = [(o.id, o.name) for o in self.ct.permission_set.order_by("name")] perm_list = [(o.id, o.name) for o in self.ct.permission_set.order_by("name")]
self.fields = ( self.fields = (
MultipleObjSelectField(field_name="owner", obj_list=obj_list, default_text=_("Select an option")), MultipleObjSelectField(field_name="owner", obj_list=obj_list, default_text=_("Select an option")),
@ -73,6 +73,7 @@ class AddRLPManipulator(ChangeRLPManipulator):
for i in new_data.getlist('perm'): for i in new_data.getlist('perm'):
perm = Permission.objects.get(pk=i) perm = Permission.objects.get(pk=i)
#Check that the new row level perms are unique
field_name_list = ('owner_ct', 'owner_id', 'model_ct', 'model_id', 'permission') field_name_list = ('owner_ct', 'owner_id', 'model_ct', 'model_id', 'permission')
field_data = ct.id field_data = ct.id
all_data = {'owner_id':owner.id, 'model_ct_id':self.ct.id, 'model_id':self.obj_instance.id, 'permission_id':perm.id} all_data = {'owner_id':owner.id, 'model_ct_id':self.ct.id, 'model_id':self.obj_instance.id, 'permission_id':perm.id}
@ -81,41 +82,38 @@ class AddRLPManipulator(ChangeRLPManipulator):
rlp = RowLevelPermission.objects.create_row_level_permission(self.obj_instance, owner, perm, negative=new_data['negative']) rlp = RowLevelPermission.objects.create_row_level_permission(self.obj_instance, owner, perm, negative=new_data['negative'])
rlp_list.append(rlp) rlp_list.append(rlp)
return rlp_list return rlp_list
#def validate_unique_together(orig_obj, field_name_list, all_data):
#field_list = [opts.get_field(field_name) for field_name in field_name_list]
#kwargs = {}
#for f in field_list:
#field_val = all_data.get(f.attname, None)
#if field_val is None:
#return
#if isinstance(f.rel, ManyToOneRel):
#kwargs['%s__pk' % f.name] = field_val
#else:
#kwargs['%s__iexact' % f.name] = field_val
#try:
#old_obj = self.manager.get(**kwargs)
#except ObjectDoesNotExist:
#return
#if hasattr(self, 'original_object') and self.original_object._get_pk_val() == old_obj._get_pk_val():
#pass
#else:
#raise validators.ValidationError, _("%(object)s with this %(type)s already exists for the given %(field)s.") % \
#{'object': capfirst(opts.verbose_name), 'type': field_list[0].verbose_name, 'field': get_text_list(field_name_list[1:], 'and')}
class MultipleObjSelectField(forms.SelectField): class MultipleObjSelectField(forms.SelectField):
"""
Extends a select field to use more then one type of model in a select field.
Uses optgroup in the select field to differentiate between object types.
obj_list should be a list of lists containing the model and a list of objects.
E.g. ((User, User.objects.all()), (Group, Group.objects.all))
If you wish to define a default text to be shown as the default option, use the
default_text parameter. An example of default text would be "Select an option"
The remaining parameters are very similiar to the normal SelectField.
To return the object selected pass the string result to MultipleObjSelectField.returnObject(string),
it returns the object instance.
To create a key for a specific object, use: MultipleObjSelectField.returnKey(object). It has an optional
parameter for the content type (ct), if you have already determined the content type and want to save on
db queries.
"""
def __init__(self, field_name, obj_list=None, def __init__(self, field_name, obj_list=None,
default_text=None, size=1, is_required=False, validator_list=None, default_text=None, size=1, is_required=False, validator_list=None,
member_name=None): member_name=None):
choice_list = [] choice_list = []
self.default_text = default_text self.default_text = default_text
#Loop through the object list and create the list to be displayed
for obj, obj_choices in obj_list: for obj, obj_choices in obj_list:
ct = ContentType.objects.get(model__exact=obj) ct = ContentType.objects.get_for_model(obj)
object_choice = [(MultipleObjSelectField.returnKey(o, ct=ct), str(o)) for o in obj_choices] object_choice = [(MultipleObjSelectField.returnKey(o, ct=ct), str(o)) for o in obj_choices]
choice_list.extend([(ct.name.title(), object_choice)]) choice_list.extend([(ct.name.title(), object_choice)])
#choice_list.extend([(MultipleObjSelectField.returnKey(o, ct=ct), str(o)+" ("+ct.name.title()+")") for o in obj_choices])
super(MultipleObjSelectField, self).__init__(field_name, choices=choice_list, super(MultipleObjSelectField, self).__init__(field_name, choices=choice_list,
size=size, is_required=is_required, size=size, is_required=is_required,
validator_list=validator_list, validator_list=validator_list,

View File

@ -18,7 +18,7 @@
{% block content %}<div id="content-main"> {% block content %}<div id="content-main">
{% if change %}{% if not is_popup %} {% if change %}{% if not is_popup %}
<ul class="object-tools"><li><a href="history/" class="historylink">{% trans "History" %}</a></li> <ul class="object-tools"><li><a href="history/" class="historylink">{% trans "History" %}</a></li>
{% if has_row_level_permissions %}<li><a href="row_level_permissions/" class="rowlevelpermissions">{% trans "Edit Row Level Permissions" %}</a></li>{% endif %} {% if has_row_level_permissions and has_row_level_permissions %}<li><a href="row_level_permissions/" class="rowlevelpermissions">{% trans "Edit Row Level Permissions" %}</a></li>{% endif %}
{% if has_absolute_url %}<li><a href="../../../r/{{ content_type_id }}/{{ object_id }}/" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif%} {% if has_absolute_url %}<li><a href="../../../r/{{ content_type_id }}/{{ object_id }}/" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif%}
</ul> </ul>
{% endif %}{% endif %} {% endif %}{% endif %}

View File

@ -92,10 +92,7 @@
</tr> </tr>
{% for o in x.1 %} {% for o in x.1 %}
<tr id="editRLP-{{ o.rlp.id }}"> <tr id="editRLP-{{ o.rlp.id }}">
<!--<td colspan="5">-->
<form id="editRLPForm-{{ o.rlp.id }}" class="editRLPForm" method="POST" name="editRLPForm-{{ o.rlp.id }}" action="change/{% objref o.rlp %}/"> <form id="editRLPForm-{{ o.rlp.id }}" class="editRLPForm" method="POST" name="editRLPForm-{{ o.rlp.id }}" action="change/{% objref o.rlp %}/">
<!--<table>
<tr>-->
<td> <td>
<input type="checkbox" name="apply_checkbox"> <input type="checkbox" name="apply_checkbox">
</td> </td>
@ -112,13 +109,9 @@
<input id="applyButton-{{ o.rlp.id }}" type="submit" value="{% trans 'Apply' %}" /> <input id="applyButton-{{ o.rlp.id }}" type="submit" value="{% trans 'Apply' %}" />
<input id="cancelButton-{{ o.rlp.id }}" type="reset" value="{% trans 'Reset' %}"/> <input id="cancelButton-{{ o.rlp.id }}" type="reset" value="{% trans 'Reset' %}"/>
<br/> <br/>
<!--<a href="../../../auth/row_level_permission/{% objref o.rlp %}/delete/" class="deleteLink" onclick="row_level_permission.deleteRLP('{% objref o.rlp %}'); return false;">{% trans 'Delete' %}</a> |-->
<!--<a href="../../../auth/row_level_permission/{% objref o.rlp %}/delete/" class="deletelink">{% trans 'Delete' %}</a> | -->
<a href="delete/{% objref o.rlp %}" class="deletelink">{% trans 'Delete' %}</a> | <a href="delete/{% objref o.rlp %}" class="deletelink">{% trans 'Delete' %}</a> |
<a href="javascript:row_level_permission.copyToNew({{ o.rlp.id }})" class="copyToNewLink">{% trans 'Copy to New' %}</a> <a href="javascript:row_level_permission.copyToNew({{ o.rlp.id }})" class="copyToNewLink">{% trans 'Copy to New' %}</a>
</td> </td>
<!--</tr>
</table>-->
</form> </form>
</td> </td>
</tr> </tr>
@ -133,9 +126,6 @@
{% if is_paginated %} {% if is_paginated %}
<tr align="right"> <tr align="right">
<td colspan="5"> <td colspan="5">
{% comment %}
{% if has_previous %} <a href="?page={{ previous }}"> &lt;&lt; </a> {% endif %} {% if has_next %} <a href="?page={{ next }}"> &gt;&gt; </a>{% endif %}
{% endcomment %}
<div class="paginator">{% paginator %}</div> <div class="paginator">{% paginator %}</div>
</td> </td>
</tr> </tr>

View File

@ -26,20 +26,21 @@ class AdminApplistNode(template.Node):
model_list = [] model_list = []
for m in app_models: for m in app_models:
if m._meta.admin: if m._meta.admin:
perms = { if not m._meta.admin.hidden:
'add': user.has_perm("%s.%s" % (app_label, m._meta.get_add_permission())), perms = {
'change': user.has_perm("%s.%s" % (app_label, m._meta.get_change_permission())), 'add': user.has_perm("%s.%s" % (app_label, m._meta.get_add_permission())),
'delete': user.has_perm("%s.%s" % (app_label, m._meta.get_delete_permission())), 'change': user.has_perm("%s.%s" % (app_label, m._meta.get_change_permission())),
} 'delete': user.has_perm("%s.%s" % (app_label, m._meta.get_delete_permission())),
}
# Check whether user has any perm for this module.
# If so, add the module to the model_list. # Check whether user has any perm for this module.
if True in perms.values(): # If so, add the module to the model_list.
model_list.append({ if True in perms.values():
'name': capfirst(m._meta.verbose_name_plural), model_list.append({
'admin_url': '%s/%s/' % (app_label, m.__name__.lower()), 'name': capfirst(m._meta.verbose_name_plural),
'perms': perms, 'admin_url': '%s/%s/' % (app_label, m.__name__.lower()),
}) 'perms': perms,
})
if model_list: if model_list:
# Sort using verbose decorate-sort-undecorate pattern # Sort using verbose decorate-sort-undecorate pattern

View File

@ -203,7 +203,6 @@ def render_change_form(model, manipulator, context, add=False, change=False, for
'has_change_permission': context['perms'][app_label][opts.get_change_permission()], 'has_change_permission': context['perms'][app_label][opts.get_change_permission()],
'has_file_field': opts.has_field_type(models.FileField), 'has_file_field': opts.has_field_type(models.FileField),
'has_absolute_url': hasattr(model, 'get_absolute_url'), 'has_absolute_url': hasattr(model, 'get_absolute_url'),
'has_row_level_permissions':opts.row_level_permissions,
'auto_populated_fields': auto_populated_fields, 'auto_populated_fields': auto_populated_fields,
'bound_field_sets': bound_field_sets, 'bound_field_sets': bound_field_sets,
'first_form_field_id': first_form_field_id, 'first_form_field_id': first_form_field_id,
@ -400,25 +399,9 @@ def change_stage(request, app_label, model_name, object_id):
'object_id': object_id, 'object_id': object_id,
'original': manipulator.original_object, 'original': manipulator.original_object,
'is_popup': request.REQUEST.has_key('_popup'), 'is_popup': request.REQUEST.has_key('_popup'),
'object_has_row_level_permissions':opts.row_level_permissions,
'has_row_level_permissions':request.user.has_perm("auth.change_rowlevelpermission") and request.user.has_perm(opts.app_label+"."+opts.get_change_permission(), object=manipulator.original_object),
}) })
if model._meta.row_level_permissions:
from django.contrib.admin.row_level_perm_manipulator import AddRLPManipulator, ChangeRLPManipulator
model_instance = manipulator.original_object
model_ct = ContentType.objects.get_for_model(model)
rlp_list = model_instance.row_level_permissions.order_by('owner_ct', 'owner_id')
rlp_errors = rlp_new_data = {}
add_rlp_manip = AddRLPManipulator(model_instance, model_ct)
edit_rlp_manip = ChangeRLPManipulator(model_ct)
new_rlp_form = forms.FormWrapper(add_rlp_manip, rlp_new_data, rlp_errors)
empty_rlp_form = forms.FormWrapper(edit_rlp_manip, rlp_new_data, rlp_errors)
rlp_form_list = []
for r in rlp_list:
owner_val = str(r.owner_ct)+"-"+str(r.owner_id)
data = {'id':r.id, 'owner':owner_val, 'perm':r.permission.id, 'negative':r.negative}
rlp_form_list.append({'form':forms.FormWrapper(edit_rlp_manip, data, rlp_errors), 'rlp':r})
rlp_context = {'new_rlp_form':new_rlp_form, 'rlp_form_list':rlp_form_list, 'empty_rlp_form':empty_rlp_form}
c.update(rlp_context)
return render_change_form(model, manipulator, c, change=True) return render_change_form(model, manipulator, c, change=True)
change_stage = staff_member_required(never_cache(change_stage)) change_stage = staff_member_required(never_cache(change_stage))

View File

@ -14,6 +14,9 @@ from django.views.decorators.cache import never_cache
def view_row_level_permissions(request, app_label, model_name, object_id): def view_row_level_permissions(request, app_label, model_name, object_id):
"""
Displays a list of row level permisisons for the model instance
"""
model = models.get_model(app_label, model_name) model = models.get_model(app_label, model_name)
object_id = unquote(object_id) object_id = unquote(object_id)
@ -37,9 +40,7 @@ def view_row_level_permissions(request, app_label, model_name, object_id):
'opts':opts, 'opts':opts,
}) })
list_per_page = RowLevelPermission._meta.admin.list_per_page
list_per_page = opts.admin.list_per_page
#list_per_page = 20
paginator = ObjectPaginator(model_instance.row_level_permissions.order_by('owner_ct', 'owner_id'), paginator = ObjectPaginator(model_instance.row_level_permissions.order_by('owner_ct', 'owner_id'),
list_per_page) list_per_page)
page = int(request.GET.get('page', 1))-1 page = int(request.GET.get('page', 1))-1
@ -102,6 +103,9 @@ def view_row_level_permissions(request, app_label, model_name, object_id):
view_row_level_permissions = staff_member_required(never_cache(view_row_level_permissions)) view_row_level_permissions = staff_member_required(never_cache(view_row_level_permissions))
def delete_row_level_permission(request, app_label, model_name, object_id, ct_id, rlp_id, hash): def delete_row_level_permission(request, app_label, model_name, object_id, ct_id, rlp_id, hash):
"""
Deletes the given row level permission.
"""
msg = {} msg = {}
if utils.verify_objref_hash(ct_id, rlp_id, hash): if utils.verify_objref_hash(ct_id, rlp_id, hash):
@ -129,10 +133,9 @@ def delete_row_level_permission(request, app_label, model_name, object_id, ct_id
request.user.message_set.create(message=msg['text']) request.user.message_set.create(message=msg['text'])
request.user.message_set.create(message=msg['text'])
return HttpResponseRedirect(request.META["HTTP_REFERER"]) return HttpResponseRedirect(request.META["HTTP_REFERER"])
# return HttpResponseRedirect("%s?rlp_result=%s&rlp_msg=%s" % (request.META["HTTP_REFERER"], str(msg["result"]), main.quote(msg["text"])))
#return main.change_stage(request, main.quote(obj._meta.app_label), main.quote(obj._meta.object_name),
# main.quote(str(obj.id)), extra_context={"row_level_perm_msg":msg,})
delete_row_level_permission = staff_member_required(never_cache(delete_row_level_permission)) delete_row_level_permission = staff_member_required(never_cache(delete_row_level_permission))
def add_row_level_permission(request, app_label, model_name, object_id): def add_row_level_permission(request, app_label, model_name, object_id):
@ -179,13 +182,9 @@ def add_row_level_permission(request, app_label, model_name, object_id):
resp_list.append({"id":rlp.id, "permission":rlp.permission.id, "hash":hash}) resp_list.append({"id":rlp.id, "permission":rlp.permission.id, "hash":hash})
msg["results"]=resp_list msg["results"]=resp_list
#return main.change_stage(request, main.quote(obj._meta.app_label), main.quote(obj._meta.object_name), request.user.message_set.create(message=msg['text'])
# main.quote(str(obj.id)), extra_context={"row_level_perm_msg":msg,}) return HttpResponseRedirect(request.META["HTTP_REFERER"])
if msg["result"]:
request.user.message_set.create(message=msg['text'])
return HttpResponseRedirect(request.META["HTTP_REFERER"])
else:
return HttpResponseRedirect("../?err_msg=%s" % msg['text'])
add_row_level_permission = staff_member_required(never_cache(add_row_level_permission)) add_row_level_permission = staff_member_required(never_cache(add_row_level_permission))
def change_row_level_permission(request, app_label, model_name, object_id, ct_id, rlp_id, hash): def change_row_level_permission(request, app_label, model_name, object_id, ct_id, rlp_id, hash):
@ -231,10 +230,9 @@ def change_row_level_permission(request, app_label, model_name, object_id, ct_id
else: else:
msg = {"result":True, "text":_("Row level permission has successfully been changed"), "id":rlp_id} msg = {"result":True, "text":_("Row level permission has successfully been changed"), "id":rlp_id}
request.user.message_set.create(message=msg['text'])
request.user.message_set.create(message=msg['text']) request.user.message_set.create(message=msg['text'])
return HttpResponseRedirect(request.META["HTTP_REFERER"]) return HttpResponseRedirect(request.META["HTTP_REFERER"])
# request.POST = {}
# return change_stage(request, main.quote(obj._meta.app_label), main.quote(obj._meta.object_name),
# main.quote(str(obj.id)), extra_context={"row_level_perm_msg":msg,})
change_row_level_permission = staff_member_required(never_cache(change_row_level_permission)) change_row_level_permission = staff_member_required(never_cache(change_row_level_permission))