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