Beispiel #1
0
def modif_liens(request):
    try:
        cible=Graphe_competences.objects.get(id=request.POST['cible'])
    except:
        return {'success':False,'msg':u'Compétence liée inexistante'}
    cibles=Graphe_competences.objects.filter(competence__id=cible.competence_id,graphe__lte=cible.graphe)
    #on charge le queryset et on calcule le nombre de cibles
    nb_cibles=len(cibles)   
    #origine=Graphe_competences.objects.get(competence=request.POST['origine_id'],graphe=request.POST['origine_graphe'])
    origines=Graphe_competences.objects.filter(competence=request.POST['origine_id'],graphe__lte=request.POST['origine_graphe'])
    
    #recherche si des liens existent déjà
    lien=False
    for c in cibles:
        for o in origines:
            if o.is_child_of(c):
                lien=True
                break
    if lien:
        return {'success':False,'msg':u'Lien entre compétence %s et %s déjà existant' %(cible.competence_id,request.POST['origine_id'])}
    orig_temp=origines.filter(graphe=request.POST['origine_graphe'])
    if len(orig_temp)==0:
        return {'success':False,'msg':u'Compétence inexistante'}
    else: 
        origine=orig_temp[0]
    if request.POST['type']=='append':
        type_lien='E'
    else:
        type_lien='D'
    nb=0
    for cible in cibles:
        nb+=1
        # on prépare les liens avec un lien temporaire pour les retrouver
        Graphe_competences.creer_lien(cible,origine, 'TMP')
    # on met à jour les liens en rajoutant l'utilisateur
    Graphe_competences.objects.filter(type_lien='TMP').update(user=request.user,type_lien=type_lien)
    return {'success':(nb==nb_cibles),'msg':u'%s liens créés sur %s' % (nb,nb_cibles)}