src/cm/role_models.py
changeset 0 40c8f766c9b8
child 46 ceb529ef3ec6
equal deleted inserted replaced
-1:000000000000 0:40c8f766c9b8
       
     1 from django.core import management
       
     2 from django.db.models import Q
       
     3 from django.db.models import Max
       
     4 from django.utils.translation import ugettext as _, ugettext_lazy
       
     5 
       
     6 role_models_choices = [('generic', ugettext_lazy(u'Generic')), ('teacher', ugettext_lazy(u'Class (education)'))]
       
     7 
       
     8 
       
     9 TEMP_MANAGER_ID = 5464567
       
    10 TEMP_MANAGER_NAME = 'qsdqsdyjj54654QEsfdhfgbuk'
       
    11 
       
    12 TEMP_USER_ID = 808987897
       
    13 TEMP_USER_NAME = 'sy6573kpoksdjklsdsd734'
       
    14 
       
    15 def change_role_model(role_model):
       
    16     from cm.models import Role, UserRole
       
    17 
       
    18     # create fake manager/usr role to remember managers/users _roles
       
    19     temp_manager = Role.objects.create(id=TEMP_MANAGER_ID, name=TEMP_MANAGER_NAME)
       
    20     temp_user = Role.objects.create(id=TEMP_USER_ID, name=TEMP_USER_NAME)
       
    21     
       
    22     manager = Role.objects.get(id=1)
       
    23     
       
    24     for user_userrole in UserRole.objects.filter(~Q(role=manager) & ~Q(role=None)):
       
    25         user_userrole.role = temp_user
       
    26         user_userrole.save()
       
    27 
       
    28     for manager_userrole in UserRole.objects.filter(role=manager):
       
    29         manager_userrole.role = temp_manager
       
    30         manager_userrole.save()
       
    31 
       
    32     Role.objects.filter(~Q(id=TEMP_MANAGER_ID) & ~Q(id=TEMP_USER_ID)).delete()
       
    33     
       
    34     management.call_command('loaddata', 'roles_' + role_model, verbosity=10)
       
    35 
       
    36     new_manager = Role.objects.get(id=1)
       
    37     id_max = Role.objects.filter(~Q(id=TEMP_MANAGER_ID) & ~Q(id=TEMP_USER_ID)).aggregate(Max('id'))['id__max']
       
    38     new_user = Role.objects.get(id=id_max)
       
    39     
       
    40     for user_userrole in UserRole.objects.filter(role=temp_user):
       
    41         user_userrole.role = new_user
       
    42         user_userrole.save()
       
    43 
       
    44     for manager_userrole in UserRole.objects.filter(role=temp_manager):
       
    45         manager_userrole.role = new_manager
       
    46         manager_userrole.save()
       
    47     
       
    48     # cleanup
       
    49     Role.objects.get(id=TEMP_MANAGER_ID).delete()
       
    50     Role.objects.get(id=TEMP_USER_ID).delete()
       
    51