Django

Code

Changeset 3752

Show
Ignore:
Timestamp:
09/12/06 10:04:29 (2 years ago)
Author:
clong
Message:

[per-object-permissions] Fixes problem with one-to-one relationships as the original code assumed every model had an id attribute, now uses "_get_pk_val()" to determine the model id.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/per-object-permissions/django/contrib/admin/row_level_perm_manipulator.py

    r3716 r3752  
    3434        model_ct = rlp.model_ct 
    3535        model = model_ct.get_object_for_this_type (pk=rlp.model_id) 
     36        model_id = rlp.model_id 
    3637         
    3738        perm = Permission.objects.get(pk=new_data['perm']) 
     
    4041        field_name_list = ('owner_ct', 'owner_id', 'model_ct', 'model_id', 'permission') 
    4142        field_data = owner_ct.id 
    42         all_data = {'owner_id':owner.id, 'model_ct_id':model_ct.id, 'model_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} 
    4344        manipulators.manipulator_validator_unique_together(field_name_list, self.opts, self, field_data, all_data) 
    4445         
  • django/branches/per-object-permissions/django/contrib/admin/views/row_level_permissions.py

    r3731 r3752  
    129129 
    130130        if not request.user.has_perm(rlp._meta.app_label + '.' + rlp._meta.get_delete_permission()): 
    131             print "BAM" 
    132131            raise PermissionDenied    
    133132        if not request.user.has_perm(obj._meta.app_label + '.' + obj._meta.get_change_permission(), object=obj): 
    134             print "BOOM" 
    135133            raise PermissionDenied            
    136134 
     
    219217 
    220218    obj = rlp.model 
    221     if model_instance.id is not obj.id: 
     219    model_id = model_instance._get_pk_val() 
     220    object_id = obj._get_pk_val() 
     221    if model_id is not object_id: 
    222222        raise PermissionDenied 
    223223     
  • django/branches/per-object-permissions/django/contrib/auth/models.py

    r3732 r3752  
    5555        if model_ct != permission.content_type: 
    5656            raise TypeError, "Invalid value: Permission content type(%s) and object content type(%s) do not match" % (permission.content_type, type_ct) 
    57          
    58         rowLvlPerm = self.model(model_id=model_instance.id, model_ct=model_ct, 
     57        model_id = model_instance._get_pk_val() 
     58        rowLvlPerm = self.model(model_id=model_id, model_ct=model_ct, 
    5959                                                 owner_id=owner.id, owner_ct=ContentType.objects.get_for_model(owner), 
    6060                                                 permission=permission, negative=negative) 
     
    288288                return False 
    289289        try: 
    290             row_level_perm=self.row_level_permissions_owned.get(model_id=object.id,  
     290            model_id = object._get_pk_val() 
     291            row_level_perm=self.row_level_permissions_owned.get(model_id=model_id,  
    291292                                                                    model_ct=object_ct.id,  
    292293                                                                    permission=permission.id) 
     
    304305        #AND rlp."model_ct_id"=%s 
    305306        #AND rlp."permission_id"=%s; 
     307        model_id = object._get_pk_val() 
    306308        cursor = connection.cursor()         
    307309        sql = """ 
     
    323325        cursor.execute(sql, [self.id,  
    324326                             ContentType.objects.get_for_model(Group).id,  
    325                              object.id, 
     327                             model_id, 
    326328                             ContentType.objects.get_for_model(object).id, 
    327329                             permission.id,])