Beispiel #1
0
def change_user(request):
    '''
        change l'utilisateur assoié à une compétence et ses sous-compétences
        note : si mis à 'aucun' (NULL) les utilisateurs ont libre accès (sauf suppression)
            (utile pour donner un accès temporaire pour modfier les liens/arbres)
        sinon seul le propriétaire ou l'administrateur peut agir, 
        y compris pour la création de liens
        TODO : créer une procédure pour mettre à jour les liens lors du changement d'utilisateur
        (recherche des cibles de même compétence et m^utilisateurs, maj du user sur le nouvel utilisateur)
        hmmm a voir.... 
    ''' 
    admin=request.user.has_perm('application.est_admin')
    if not admin:
        return {'success':False,'msg':u'Vous n\'avez pas les permissions nécessaires.'}
    if not('id' in request.POST and 'prof' in request.POST):
        return {'success':False,'msg':u'Clés manquantes.'}
    try:
        comp=Competence.objects.get(id=request.POST['id'])        
    except:
        return {'success':False,'msg':u'Compétence (%s) inexistante' % request.POST['id']}
    user_id=request.POST['prof']
    if user_id=='-':
        user=None
        user_name='Aucun'
    elif user_id=='admin':
        user=request.user
        user_name='Administrateur'
    else:
        try:
            user=Prof.objects.get(id=user_id).user
            user_name=user.first_name
        except:
            return {'success':False,'msg':u'Utilisateur (%s) inexistant' % user_id}
    comp.user=user
    comp.save()
    nbcomps=comp.get_descendants().update(user=user)
    #maj des liens A TESTER
    liste_id=[comp.id]+list(comp.get_descendants().values_list('id',flat=True))
    cible=Graphe_competences.get_graphe(comp.id)
    if (cible is not None):
        cibles=Graphe_competences.objects.filter(type_lien__isnull=False,graphe__lt=cible.graphe).extra(where=['competence_id in %s'],params=[liste_id])
        nbliens=cibles.update(user=user)
    else:
        nbliens=0
    nom=comp.nom
    return {'success':True,'msg':u'Compétence %s et ses %s descendants ont pour nouvel utilisateur %s ( %s liens)'
            % (nom,nbcomps,user_name,nbliens)}