src/cm/role_models.py
author raph
Fri, 11 Jun 2010 11:04:23 +0200
changeset 282 b5deb8e32219
parent 47 7a64d8892f70
permissions -rw-r--r--
add STORE_ACTIVITY_IP parameter to avoid storing ips for activities. (workaround for #50)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
from django.core import management
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
from django.db.models import Q
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
from django.db.models import Max
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
from django.utils.translation import ugettext as _, ugettext_lazy
47
7a64d8892f70 add randomness to temporary roles
raph
parents: 46
diff changeset
     5
import random
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
role_models_choices = [('generic', ugettext_lazy(u'Generic')), ('teacher', ugettext_lazy(u'Class (education)'))]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
47
7a64d8892f70 add randomness to temporary roles
raph
parents: 46
diff changeset
    10
def change_role_model(role_model):
7a64d8892f70 add randomness to temporary roles
raph
parents: 46
diff changeset
    11
    TEMP_MANAGER_ID = random.randint(1000,10000000) 
7a64d8892f70 add randomness to temporary roles
raph
parents: 46
diff changeset
    12
    TEMP_MANAGER_NAME = str(random.randint(1000,10000000))
7a64d8892f70 add randomness to temporary roles
raph
parents: 46
diff changeset
    13
    
7a64d8892f70 add randomness to temporary roles
raph
parents: 46
diff changeset
    14
    TEMP_USER_ID = random.randint(1000,10000000)
7a64d8892f70 add randomness to temporary roles
raph
parents: 46
diff changeset
    15
    TEMP_USER_NAME = str(random.randint(1000,10000000))
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
    from cm.models import Role, UserRole
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
    # create fake manager/usr role to remember managers/users _roles
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
    temp_manager = Role.objects.create(id=TEMP_MANAGER_ID, name=TEMP_MANAGER_NAME)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
    temp_user = Role.objects.create(id=TEMP_USER_ID, name=TEMP_USER_NAME)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
    manager = Role.objects.get(id=1)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
    for user_userrole in UserRole.objects.filter(~Q(role=manager) & ~Q(role=None)):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
        user_userrole.role = temp_user
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
        user_userrole.save()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
    for manager_userrole in UserRole.objects.filter(role=manager):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
        manager_userrole.role = temp_manager
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
        manager_userrole.save()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
    Role.objects.filter(~Q(id=TEMP_MANAGER_ID) & ~Q(id=TEMP_USER_ID)).delete()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
    
46
ceb529ef3ec6 no verbosity while loading fixtures (breaks wsgi)
raph
parents: 0
diff changeset
    35
    management.call_command('loaddata', 'roles_' + role_model, verbosity=0)
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
    new_manager = Role.objects.get(id=1)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
    id_max = Role.objects.filter(~Q(id=TEMP_MANAGER_ID) & ~Q(id=TEMP_USER_ID)).aggregate(Max('id'))['id__max']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
    new_user = Role.objects.get(id=id_max)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
    for user_userrole in UserRole.objects.filter(role=temp_user):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
        user_userrole.role = new_user
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
        user_userrole.save()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
    for manager_userrole in UserRole.objects.filter(role=temp_manager):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
        manager_userrole.role = new_manager
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
        manager_userrole.save()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
    # cleanup
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
    Role.objects.get(id=TEMP_MANAGER_ID).delete()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
    Role.objects.get(id=TEMP_USER_ID).delete()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52