src/cm/role_models.py
author raph
Thu, 10 Dec 2009 16:36:04 +0100
changeset 46 ceb529ef3ec6
parent 0 40c8f766c9b8
child 47 7a64d8892f70
permissions -rw-r--r--
no verbosity while loading fixtures (breaks wsgi)
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
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
     7
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
TEMP_MANAGER_ID = 5464567
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
TEMP_MANAGER_NAME = 'qsdqsdyjj54654QEsfdhfgbuk'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
TEMP_USER_ID = 808987897
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
TEMP_USER_NAME = 'sy6573kpoksdjklsdsd734'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
def change_role_model(role_model):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
    from cm.models import Role, UserRole
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
    # create fake manager/usr role to remember managers/users _roles
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
    temp_manager = Role.objects.create(id=TEMP_MANAGER_ID, name=TEMP_MANAGER_NAME)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
    temp_user = Role.objects.create(id=TEMP_USER_ID, name=TEMP_USER_NAME)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
    manager = Role.objects.get(id=1)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
    for user_userrole in UserRole.objects.filter(~Q(role=manager) & ~Q(role=None)):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
        user_userrole.role = temp_user
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
        user_userrole.save()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
    for manager_userrole in UserRole.objects.filter(role=manager):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
        manager_userrole.role = temp_manager
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
        manager_userrole.save()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
    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
    33
    
46
ceb529ef3ec6 no verbosity while loading fixtures (breaks wsgi)
raph
parents: 0
diff changeset
    34
    management.call_command('loaddata', 'roles_' + role_model, verbosity=0)
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
    new_manager = Role.objects.get(id=1)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
    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
    38
    new_user = Role.objects.get(id=id_max)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
    for user_userrole in UserRole.objects.filter(role=temp_user):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
        user_userrole.role = new_user
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
        user_userrole.save()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
    for manager_userrole in UserRole.objects.filter(role=temp_manager):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
        manager_userrole.role = new_manager
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
        manager_userrole.save()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
    # cleanup
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
    Role.objects.get(id=TEMP_MANAGER_ID).delete()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
    Role.objects.get(id=TEMP_USER_ID).delete()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51