src/cm/role_models.py
author gibus
Wed, 11 Sep 2013 23:13:01 +0200
changeset 532 0bad3613f59d
parent 47 7a64d8892f70
permissions -rw-r--r--
Reverse to YUI 3.0.0 since with YUI.3.10.3, comment content including words 'paragraph' or 'section' do not show up on Firefox, this is weird and has to be investigated.
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