Django

Code

Changeset 3655

Show
Ignore:
Timestamp:
08/24/06 11:07:30 (2 years ago)
Author:
clong
Message:

[per-object-permissions] Fixed two bugs (noticed by Robert). 1) has_add_permission was not part of the new add user context and was causing an error when rendering the submit_row, changed view to have the has_add_permission 2) Custom SQL for checking if permissions exist was causing an error due to an incorrect False statment, corrected now.
[per-object-permissions] Fixed a bug where delete row level permission was giving a PermissionDenied? error falsely

Files:

Legend:

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

    r3583 r3655  
    2828        'add': True, 
    2929        'change': False, 
     30        'has_add_permission': True, 
    3031        'has_delete_permission': False, 
    3132        'has_change_permission': True, 
  • django/branches/per-object-permissions/django/contrib/auth/models.py

    r3631 r3655  
    367367         #WHERE rlp."owner_id" = ug."group_id" 
    368368             #AND ug."user_id"=%s 
    369              #AND rlp."negative" = 0 
     369             #AND rlp."negative" = False 
    370370             #AND rlp."owner_ct_id" = %s 
    371371             #AND rlp."model_ct_id" = %s 
     
    377377            WHERE rlp.%s = ug.%s 
    378378                AND ug.%s=%%s 
    379                 AND rlp.%s = 0 
     379                AND rlp.%s = %%s 
    380380                AND rlp.%s = %%s 
    381381                AND rlp.%s = %%s 
     
    384384            backend.quote_name('django_content_type'), backend.quote_name('owner_id'), 
    385385            backend.quote_name('group_id'), backend.quote_name('user_id'), 
    386             backend.quote_name('negative'), backend.quote_name('owner_ct_id'), 
     386            backend.quote_name('negative'), backend.quote_name('owner_ct_id'), 
    387387            backend.quote_name('model_ct_id'), backend.quote_name('permission_id')) 
    388          
    389         cursor.execute(sql, [self.id, ContentType.objects.get_for_model(Group).id, ct.id, perm.id]) 
     388        cursor.execute(sql, [self.id, False, ContentType.objects.get_for_model(Group).id, ct.id, perm.id]) 
    390389        count = int(cursor.fetchone()[0]) 
    391390        return (count>0) 
     
    404403        #WHERE rlp."model_ct_id" = ct."id" 
    405404            #AND ct."app_label"=%s 
    406             #AND rlp."negative" = 0 
     405            #AND rlp."negative" = False 
    407406            #AND rlp."owner_ct_id" = %s 
    408407            #AND rlp."owner_id" = %s 
     
    413412            WHERE rlp.%s = ct.%s 
    414413                AND ct.%s=%%s 
    415                 AND rlp.%s = 0 
    416                 AND rlp.%s = %%s 
    417                 AND rlp.%s = %%s 
    418                 """ % ( 
     414                AND rlp.%s = %%s 
     415                AND rlp.%s = %%s 
     416                AND rlp.%s = %%s 
     417                """ % (                     
    419418            backend.quote_name('django_content_type'), backend.quote_name('auth_rowlevelpermission'), 
    420419            backend.quote_name('model_ct_id'), backend.quote_name('id'), 
    421             backend.quote_name('app_label'), backend.quote_name('negative'), 
     420            backend.quote_name('app_label'),  
    422421            backend.quote_name('owner_ct_id'), 
    423             backend.quote_name('owner_id'), ) 
    424         cursor.execute(sql, [app_label, ContentType.objects.get_for_model(User).id, self.id])  
     422            backend.quote_name('owner_id'),backend.quote_name('negative'), ) 
     423        #import pdb 
     424        #pdb.set_trace() 
     425        cursor.execute(sql, [app_label, ContentType.objects.get_for_model(User).id, self.id, False])  
    425426        count = int(cursor.fetchone()[0]) 
     427        print "User. App: %s, Count: %d" % (app_label, count) 
    426428        if count>0: 
    427429            return True 
     
    435437            #AND rlp."model_ct_id" = ct."id" 
    436438            #AND ct."app_label"=%s 
    437             #AND rlp."negative" = 0 
     439            #AND rlp."negative" = False 
    438440            #AND rlp."owner_ct_id" = %s 
    439441        cursor = connection.cursor()  
     
    445447                AND rlp.%s = ct.%s 
    446448                AND ct.%s=%%s 
    447                 AND rlp.%s = 0 
     449                AND rlp.%s = %%s 
    448450                AND rlp.%s = %%s""" % ( 
    449451            backend.quote_name('auth_user_groups'), backend.quote_name('auth_rowlevelpermission'),  
     
    453455            backend.quote_name('app_label'), backend.quote_name('negative'), 
    454456            backend.quote_name('owner_ct_id')) 
    455         cursor.execute(sql, [app_label, self.id, ContentType.objects.get_for_model(Group).id,]) 
     457        cursor.execute(sql, [app_label, self.id, False, ContentType.objects.get_for_model(Group).id]) 
    456458        count = int(cursor.fetchone()[0]) 
     459        print "Group. App: %s, Count: %d" % (app_label, count) 
    457460        return (count>0)         
    458461