|
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 |