Django

Code

Changeset 4030

Show
Ignore:
Timestamp:
11/06/06 17:13:30 (2 years ago)
Author:
jkocherhans
Message:

[generic-auth] Added a has_permissions convenience function and did some misc. cleanup. Tests actually run now too, which is nice.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/generic-auth/django/contrib/auth/__init__.py

    r4026 r4030  
    3434 
    3535has_permission = HasPermission() 
     36 
     37def has_permissions(user, permission_list, obj=None): 
     38    for permission in permission_list: 
     39        if not has_permission(user, permission, obj): 
     40            return False 
     41    return True 
    3642 
    3743def load_backend(path): 
  • django/branches/generic-auth/tests/regressiontests/generic_auth/models.py

    r4027 r4030  
    1 """ 
    2 XX. Permissions 
    3  
    4 """ 
    5  
    61from django.db import models 
    72 
    83class Person(models.Model): 
    94    name = models.CharField(maxlength=20) 
    10  
    11 API_TESTS = """ 
    12 >>> from django.contrib.auth.models import User, Permission 
    13 >>> from django.db.models.loading import get_app 
    14 >>> from django.contrib.auth.management import create_permissions 
    15 >>> from django.contrib.auth import has_permission 
    16  
    17 >>> app = get_app('generic_auth') 
    18 >>> create_permissions(app, []) 
    19 Adding permission 'person | Can add person' 
    20 Adding permission 'person | Can change person' 
    21 Adding permission 'person | Can delete person' 
    22  
    23  
    24 Create and register an authorization handler that acts like Django's model 
    25 level permissions 
    26  
    27 >>> def default_has_permission(user, permission, obj): 
    28 ...     p_name = "%s.%s" % (permission.content_type.app_label, permission.codename) 
    29 ...     return user.has_perm(p_name) 
    30 ...      
    31 >>> has_permission.register(default_has_permission, User, Permission, Person) 
    32 >>> has_permission.register(default_has_permission, User, Permission) 
    33  
    34  
    35 Create a new user 
    36  
    37 >>> user = User.objects.create_user('test', 'test@example.com', 'password') 
    38 >>> user.save() 
    39  
    40  
    41 Create a Person that we'll check from access to. 
    42  
    43 >>> person = Person(name='test') 
    44 >>> person.save() 
    45  
    46  
    47 Get permissions from the model 
    48  
    49 >>> opts = Person._meta 
    50 >>> add_permission = opts.get_add_permission() 
    51 >>> change_permission = opts.get_change_permission() 
    52 >>> delete_permission = opts.get_delete_permission() 
    53  
    54  
    55 Give the user add, change, and delete permissions for Person models, then check that permission. 
    56  
    57 >>> user.user_permissions.add(add_permission) 
    58 >>> user.user_permissions.add(change_permission) 
    59 >>> user.user_permissions.add(delete_permission) 
    60 >>> user.save() 
    61  
    62  
    63 The user should have add, change, and delete permissions now. Make sure they do. 
    64  
    65 >>> has_permission(user, add_permission) 
    66 True 
    67 >>> has_permission(user, change_permission, person) 
    68 True 
    69 >>> has_permission(user, delete_permission, person) 
    70 True 
    71  
    72 """