src/cm/role_models.py
author Simon Descarpentries <sid@sopinspace.com>
Mon, 21 Oct 2013 16:37:07 +0200
changeset 553 bf26fb47a14c
parent 47 7a64d8892f70
permissions -rw-r--r--
To allow scrolling in Safari mobile, we set the content of text_view_comments frame in a jQuery UI layout. So the automated scrolling operations in c_sync.js must be adjustable to the right part to scroll. Also, if a comment have to be shown outside of the current viewport, we scroll the correct part to that viewport and then set the comment top Y offset to juste what it needs to avoid the "Add comment" button after scrolling operation. If not in Safari mobile, we add an offset here to avoid comment to display under the "Add comment" button.
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