src/cm/role_models.py
author Simon Descarpentries <sid@sopinspace.com>
Fri, 20 Sep 2013 16:28:40 +0200
changeset 536 0c625ce49a81
parent 47 7a64d8892f70
permissions -rw-r--r--
- updating jQuery (1.3.2 -> 1.10.2), jQuery UI, jQuery modules - [text_view_frame.html] Add some JS driven CSS tricks for iPad - [text_view_frame.html] move throbber's hiding-call in nested text_view_comments iframe onload signal (so it works with jQuery 1.10.2 and the hiding timing is good) - [text_view_frame.html][base.html] factorize req_yui.html et req_jquery.html - [main_tabs][text_tabs][f_client-min.js] rewrite jQuery UI Tabs API calls select in active - [base.css] CSS fix grey frame appearence for all tabs - hg remove bgiframe -> not loaded in templates anymore - hg remove header_custom.html -> the file has been empty since 4 years - hg remove controls.html -> the file has been empty since 4 years

from django.core import management
from django.db.models import Q
from django.db.models import Max
from django.utils.translation import ugettext as _, ugettext_lazy
import random

role_models_choices = [('generic', ugettext_lazy(u'Generic')), ('teacher', ugettext_lazy(u'Class (education)'))]


def change_role_model(role_model):
    TEMP_MANAGER_ID = random.randint(1000,10000000) 
    TEMP_MANAGER_NAME = str(random.randint(1000,10000000))
    
    TEMP_USER_ID = random.randint(1000,10000000)
    TEMP_USER_NAME = str(random.randint(1000,10000000))

    from cm.models import Role, UserRole

    # create fake manager/usr role to remember managers/users _roles
    temp_manager = Role.objects.create(id=TEMP_MANAGER_ID, name=TEMP_MANAGER_NAME)
    temp_user = Role.objects.create(id=TEMP_USER_ID, name=TEMP_USER_NAME)
    
    manager = Role.objects.get(id=1)
    
    for user_userrole in UserRole.objects.filter(~Q(role=manager) & ~Q(role=None)):
        user_userrole.role = temp_user
        user_userrole.save()

    for manager_userrole in UserRole.objects.filter(role=manager):
        manager_userrole.role = temp_manager
        manager_userrole.save()

    Role.objects.filter(~Q(id=TEMP_MANAGER_ID) & ~Q(id=TEMP_USER_ID)).delete()
    
    management.call_command('loaddata', 'roles_' + role_model, verbosity=0)

    new_manager = Role.objects.get(id=1)
    id_max = Role.objects.filter(~Q(id=TEMP_MANAGER_ID) & ~Q(id=TEMP_USER_ID)).aggregate(Max('id'))['id__max']
    new_user = Role.objects.get(id=id_max)
    
    for user_userrole in UserRole.objects.filter(role=temp_user):
        user_userrole.role = new_user
        user_userrole.save()

    for manager_userrole in UserRole.objects.filter(role=temp_manager):
        manager_userrole.role = new_manager
        manager_userrole.save()
    
    # cleanup
    Role.objects.get(id=TEMP_MANAGER_ID).delete()
    Role.objects.get(id=TEMP_USER_ID).delete()