From 20ca1751dc8bbd01dd08ed33744298828a519ac1 Mon Sep 17 00:00:00 2001 From: Christopher Long Date: Sun, 17 Sep 2006 18:32:27 +0000 Subject: [PATCH] [per-object-permissions] Fixes bug described in ticket #2749 [per-object-permissions] Fixes the add manipulator so it does not assume the pk attribute is "id" git-svn-id: http://code.djangoproject.com/svn/django/branches/per-object-permissions@3767 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/admin/row_level_perm_manipulator.py | 3 ++- django/db/models/fields/generic.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/django/contrib/admin/row_level_perm_manipulator.py b/django/contrib/admin/row_level_perm_manipulator.py index ce3175ceeb..7baf10f466 100644 --- a/django/contrib/admin/row_level_perm_manipulator.py +++ b/django/contrib/admin/row_level_perm_manipulator.py @@ -77,7 +77,8 @@ class AddRLPManipulator(ChangeRLPManipulator): #Check that the new row level perms are unique field_name_list = ('owner_ct', 'owner_id', 'model_ct', 'model_id', 'permission') 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} + model_id = self.obj_instance._get_pk_val() + all_data = {'owner_id':owner.id, 'model_ct_id':self.ct.id, 'model_id':model_id, 'permission_id':perm.id} manipulators.manipulator_validator_unique_together(field_name_list, self.opts, self, field_data, all_data) rlp = RowLevelPermission.objects.create_row_level_permission(self.obj_instance, owner, perm, negative=new_data['negative']) diff --git a/django/db/models/fields/generic.py b/django/db/models/fields/generic.py index 5f4de40e69..7d7651029c 100644 --- a/django/db/models/fields/generic.py +++ b/django/db/models/fields/generic.py @@ -117,7 +117,7 @@ class GenericRelation(RelatedField, Field): return self.object_id_field_name def m2m_reverse_name(self): - return self.model._meta.pk.attname + return self.object_id_field_name def contribute_to_class(self, cls, name): super(GenericRelation, self).contribute_to_class(cls, name)