Changeset 3518
- Timestamp:
- 08/02/06 10:47:11 (2 years ago)
- Files:
-
- django/branches/per-object-permissions/django/contrib/admin/row_level_perm_manipulator.py (modified) (2 diffs)
- django/branches/per-object-permissions/django/contrib/admin/templates/admin/change_form.html (modified) (1 diff)
- django/branches/per-object-permissions/django/contrib/admin/templates/admin/row_level_permission.html (modified) (3 diffs)
- django/branches/per-object-permissions/django/contrib/admin/views/row_level_permissions.py (modified) (3 diffs)
- django/branches/per-object-permissions/django/contrib/auth/models.py (modified) (5 diffs)
- django/branches/per-object-permissions/django/db/models/base.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/branches/per-object-permissions/django/contrib/admin/row_level_perm_manipulator.py
r3486 r3518 33 33 owner_ct = ContentType.objects.get_for_model(owner) 34 34 35 model_ct = rlp. type_ct36 model = model_ct.get_object_for_this_type (pk=rlp. type_id)35 model_ct = rlp.model_ct 36 model = model_ct.get_object_for_this_type (pk=rlp.model_id) 37 37 38 38 perm = Permission.objects.get(pk=new_data['perm']) 39 39 40 40 41 field_name_list = ('owner_ct', 'owner_id', ' type_ct', 'type_id', 'permission')41 field_name_list = ('owner_ct', 'owner_id', 'model_ct', 'model_id', 'permission') 42 42 field_data = owner_ct.id 43 all_data = {'owner_id':owner.id, ' type_ct_id':model_ct.id, 'type_id':model.id, 'permission_id':perm.id}43 all_data = {'owner_id':owner.id, 'model_ct_id':model_ct.id, 'model_id':model.id, 'permission_id':perm.id} 44 44 manipulators.manipulator_validator_unique_together(field_name_list, self.opts, self, field_data, all_data) 45 45 … … 75 75 perm = Permission.objects.get(pk=i) 76 76 77 field_name_list = ('owner_ct', 'owner_id', ' type_ct', 'type_id', 'permission')77 field_name_list = ('owner_ct', 'owner_id', 'model_ct', 'model_id', 'permission') 78 78 field_data = ct.id 79 all_data = {'owner_id':owner.id, ' type_ct_id':self.ct.id, 'type_id':self.obj_instance.id, 'permission_id':perm.id}79 all_data = {'owner_id':owner.id, 'model_ct_id':self.ct.id, 'model_id':self.obj_instance.id, 'permission_id':perm.id} 80 80 manipulators.manipulator_validator_unique_together(field_name_list, self.opts, self, field_data, all_data) 81 81 django/branches/per-object-permissions/django/contrib/admin/templates/admin/change_form.html
r3487 r3518 68 68 69 69 {% if new_rlp_form %} 70 <h1>{% trans "Row Level Permissions" %}</h1> 71 <div> 70 72 {% include "admin/row_level_permission.html" %} 73 </div> 71 74 {% endif %} 72 75 django/branches/per-object-permissions/django/contrib/admin/templates/admin/row_level_permission.html
r3486 r3518 1 1 {% load i18n admin_modify %} 2 {% include_admin_script "js/ajax/prototype.js" %} 3 {% include_admin_script "js/ajax/scriptaculous.js" %} 2 4 {% include_admin_script "js/row_level_permission.js" %} 3 5 <table id="rlpTable"> … … 16 18 </th> 17 19 </tr> 18 <form id="addRLPForm" method="POST" name="addRLPForm" action="../../../auth/row_level_permission/add/{{ content_type_id }}/{{ object_id }}/" onSubmit="addButtonPressed({{ obj_ct }}, {{ obj_id }}); return false;">20 <form id="addRLPForm" method="POST" name="addRLPForm" action="../../../auth/row_level_permission/add/{{ content_type_id }}/{{ object_id }}/" onSubmit="addButtonPressed({{ content_type_id }}, {{ object_id }}); return false;"> 19 21 <tr> 20 22 <th colspan=4> … … 74 76 {% endfor %} 75 77 {% else %} 76 <tr><td >No row level permissions</td></tr>78 <tr><td colspan=4><em>No row level permissions</em></td></tr> 77 79 {% endif %} 78 80 </TBODY> django/branches/per-object-permissions/django/contrib/admin/views/row_level_permissions.py
r3487 r3518 12 12 if utils.verify_objref_hash(ct_id, rlp_id, hash): 13 13 rlp = get_object_or_404(RowLevelPermission, pk=rlp_id) 14 ct = rlp. type_ct15 obj = rlp. type14 ct = rlp.model_ct 15 obj = rlp.model 16 16 opts = rlp._meta 17 17 if not request.user.has_perm(opts.app_label + '.' + opts.get_delete_permission()): 18 18 raise PermissionDenied 19 if not request.user.has_perm(obj._meta.app_label + '.' + obj._meta.get_change_permission() ()):19 if not request.user.has_perm(obj._meta.app_label + '.' + obj._meta.get_change_permission()): 20 20 raise PermissionDenied 21 21 rlp.delete() … … 93 93 raise PermissionDenied 94 94 95 object_model = rlp. type_ct.model_class()95 object_model = rlp.model_ct.model_class() 96 96 if not request.user.has_perm(object_model._meta.app_label + '.' + object_model._meta.get_change_permission()): 97 97 raise PermissionDenied … … 112 112 return HttpResponse(simplejson.dumps(msg), 'text/javascript') 113 113 request.user.message_set.create(message=msg['text']) 114 return HttpResponseRedirect("../../../../../../%s/%s/%s" % (object_model._meta.app_label, object_model._meta.module_name , str(rlp. type_id)))114 return HttpResponseRedirect("../../../../../../%s/%s/%s" % (object_model._meta.app_label, object_model._meta.module_name , str(rlp.model_id))) django/branches/per-object-permissions/django/contrib/auth/models.py
r3464 r3518 49 49 50 50 class RowLevelPermissionManager(models.Manager): 51 def create_row_level_permission(self, object_instance, owner, permission, negative=False):51 def create_row_level_permission(self, model_instance, owner, permission, negative=False): 52 52 if isinstance(permission, str): 53 53 permission = Permission.objects.get(codename__exact=permission) 54 type_ct=ContentType.objects.get_for_model(object_instance)55 if type_ct != permission.content_type:54 model_ct=ContentType.objects.get_for_model(model_instance) 55 if model_ct != permission.content_type: 56 56 raise TypeError, "Invalid value: Permission content type(%s) and object content type(%s) do not match" % (permission.content_type, type_ct) 57 57 58 rowLvlPerm = self.model( type_id=object_instance.id, type_ct=ContentType.objects.get_for_model(object_instance),58 rowLvlPerm = self.model(model_id=model_instance.id, model_ct=model_ct, 59 59 owner_id=owner.id, owner_ct=ContentType.objects.get_for_model(owner), 60 60 permission=permission, negative=negative) … … 62 62 return rowLvlPerm 63 63 64 def create_default_row_permissions(self, type, owner, change=True, delete=True, negChange=False, negDel=False):64 def create_default_row_permissions(self, model_instance, owner, change=True, delete=True, negChange=False, negDel=False): 65 65 ret_dict = {} 66 model_ct = ContentType.objects.get_for_model(model_instance) 66 67 if change: 67 change_str = "change_%s" % ( ContentType.objects.get_for_model(type))68 ret_dict[change_str]=self.create_row_level_permission( type, owner, change_str, negative=negChange)68 change_str = "change_%s" % (model_ct) 69 ret_dict[change_str]=self.create_row_level_permission(model_instance, owner, change_str, negative=negChange) 69 70 if delete: 70 delete_str = "delete_%s" % ( ContentType.objects.get_for_model(type))71 ret_dict[delete_str]=self.create_row_level_permission( type, owner, delete_str, negative=negDel)71 delete_str = "delete_%s" % (model_ct) 72 ret_dict[delete_str]=self.create_row_level_permission(model_instance, owner, delete_str, negative=negDel) 72 73 return ret_dict 73 74 … … 77 78 permissions table using a many to one relation. 78 79 """ 79 type_id = models.PositiveIntegerField("'Type' ID")80 type_ct = models.ForeignKey(ContentType, verbose_name="'Type' content type", related_name="type_ct")80 model_id = models.PositiveIntegerField("'Model' ID") 81 model_ct = models.ForeignKey(ContentType, verbose_name="'Model' content type", related_name="model_ct") 81 82 owner_id = models.PositiveIntegerField("'Owner' ID") 82 83 owner_ct = models.ForeignKey(ContentType, verbose_name="'Owner' content type", related_name="owner_ct") … … 84 85 permission = models.ForeignKey(Permission) 85 86 86 type = models.GenericForeignKey(fk_field='type_id', ct_field='type_ct')87 model = models.GenericForeignKey(fk_field='model_id', ct_field='model_ct') 87 88 owner = models.GenericForeignKey(fk_field='owner_id', ct_field='owner_ct') 88 89 … … 92 93 verbose_name = _('row level permission') 93 94 verbose_name_plural = _('row level permissions') 94 unique_together = ((' type_ct', 'type_id', 'owner_id', 'owner_ct', 'permission'),)95 unique_together = (('model_ct', 'model_id', 'owner_id', 'owner_ct', 'permission'),) 95 96 96 97 97 98 def __str__(self): 98 return "%s | %s:%s | %s:%s" % (self.permission, self.owner_ct, self.owner, self. type_ct, self.type)99 return "%s | %s:%s | %s:%s" % (self.permission, self.owner_ct, self.owner, self.model_ct, self.model) 99 100 100 101 def __repr__(self): 101 return "%s | %s:%s | %s:%s" % (self.permission, self.owner_ct, self.owner, self. type_ct, self.type)102 return "%s | %s:%s | %s:%s" % (self.permission, self.owner_ct, self.owner, self.model_ct, self.model) 102 103 103 104 django/branches/per-object-permissions/django/db/models/base.py
r3464 r3518 64 64 if getattr(new_class._meta, 'row_level_permissions', None): 65 65 from django.contrib.auth.models import RowLevelPermission 66 gen_rel = django.db.models.GenericRelation(RowLevelPermission, object_id_field=" type_id", content_type_field="type_ct")66 gen_rel = django.db.models.GenericRelation(RowLevelPermission, object_id_field="model_id", content_type_field="model_ct") 67 67 new_class.add_to_class("row_level_permissions", gen_rel) 68 68
