def view(request, name):
    title = name
    cat = name
    if "_" in name:
        title = name.split("_")[0]
        cat = name.split("_")[1]
    ti = TournoiTitle.objects.get(nom=title)
    ca = TournoiCategorie.objects.get(nom=cat)
    tournoi = Tournoi.objects.get(titre=ti, categorie=ca)
    # Liste des tournoi qui ont deja un arbre
    all_tournoi_with_arbre = Tournoi.objects.filter(
        arbre__id__gte=0).exclude(titre=ti, categorie=ca)
    court_list = dict()

    for elem in all_tournoi_with_arbre:
        if elem.arbre.court.id in court_list:
            court_list[elem.arbre.court.id] += "<br>" + str(elem)
        else:
            court_list[elem.arbre.court.id] = str(elem)

    all_tournoi_with_arbre = None

    terrains = Court.objects.filter(valide=True)

    jour = ti.jour
    if jour == "Samedi":
        terrains = terrains.filter(dispoSamedi=True)
    else:
        terrains = terrains.filter(dispoDimanche=True)

    terrains.order_by("id")

    for elem in terrains:
        if elem.id in court_list:
            elem.conflict = court_list[elem.id]
        else:
            elem.conflict = ""

    court_list = None

    def getKey(item):
        return item[1]
    if request.method == "POST":
        if request.POST['action'] == "save":
            treeData = request.POST['treeData']
            treeLabel = request.POST['treeLabel']
            gagnant = request.POST['gagnant']
            finaliste = request.POST['finaliste']
            terrainRecv = request.POST['terrain']
            terrain = Court.objects.get(id=terrainRecv)
            pair_g = None
            if gagnant != "":
                pairgagnante = Pair.objects.get(id=int(gagnant))
                pairgagnante.gagnant = True
                pairgagnante.save()
                pair_g = pairgagnante

            pair_f = None
            if finaliste != "":
                finalistes = finaliste.split("-")
                finaliste1 = Pair.objects.get(id=int(finalistes[0]))
                finaliste2 = Pair.objects.get(id=int(finalistes[1]))
                finaliste1.finaliste = True
                finaliste1.save()
                finaliste2.finaliste = True
                finaliste2.save()
                if pair_g is not None:
                    if pair_g == finaliste1:
                        pair_f = finaliste2
                    else:
                        pair_f = finaliste1

            if pair_g is not None and pair_f is not None:
                # Changement du status du tournoi
                s = TournoiStatus.objects.get(numero=4)
                tournoi.status = s
                tournoi.save()

                # Save des resultats
                for elem in Resultat.objects.filter(tournoi=tournoi):
                    elem.delete()
                ga = pair_g.user1.participant.prenom + u" " + pair_g.user1.participant.nom.upper() + \
                    u" et " + pair_g.user2.participant.prenom + \
                    u" " + pair_g.user2.participant.nom.upper()
                fi = pair_f.user1.participant.prenom + u" " + pair_f.user1.participant.nom.upper() + \
                    u" et " + pair_f.user2.participant.prenom + \
                    u" " + pair_f.user2.participant.nom.upper()
                r = Resultat(tournoi=tournoi, gagnants_alt=ga,
                             finalistes_alt=fi)
                r.save()
                r.gagnants.add(pair_g.user1)
                r.gagnants.add(pair_g.user2)
                r.finalistes.add(pair_f.user1)
                r.finalistes.add(pair_f.user2)
                r.save()
                info = infoTournoi.objects.all()
                info = info.order_by("edition")[len(info) - 1]
                info.resultats.add(r)
                info.save()

            if tournoi.arbre is None:
                arbre = Arbre(data=treeData, label=treeLabel)
                arbre.court = terrain
                arbre.save()
                tournoi.arbre = arbre
                tournoi.save()
            else:
                arbre = tournoi.arbre
                arbre.data = treeData
                arbre.label = treeLabel
                arbre.court = terrain
                arbre.save()
                LogActivity(user=request.user, section="Tournoi",
                    target=""+arbre.id,
                    details="Mise a jour de l'abre du tournoi : " + tournoi.nom()).save()

        elif request.POST['action'] == "deleteTree":
            s = TournoiStatus.objects.get(numero=3)
            tournoi.status = s
            tournoi.save()
            if tournoi.arbre is not None:
                for poule in tournoi.poule_set.all():
                    for pair in poule.paires.all():
                        pair.gagnant = False
                        pair.finaliste = False
                        pair.save()
                arbre = tournoi.arbre
                arbre.data = None
                arbre.label = None
                arbre.save()
                LogActivity(user=request.user, section="Tournoi", target=""+repr(arbre.id),
                            details="Suppression de l'abre du tournoi : " + tournoi.nom()).save()
                return redirect(reverse(knockOff, args={name}))

    if request.user.is_authenticated():

        poules = Poule.objects.filter(tournoi=tournoi)
        dictionnaire = dict()
        allPaires = list()
        for poule in poules:
            if poule.status == PouleStatus.objects.get(numero=2):
                scores = poule.score.all()
                dico = dict()
                for paire in poule.paires.all():
                    dico[paire.id] = 0
                for score in scores:
                    dico[score.paire1.id] = dico[
                        score.paire1.id] + score.point1
                    dico[score.paire2.id] = dico[
                        score.paire2.id] + score.point2
                liste = list()
                for key, value in dico.items():
                    liste.append((key, value))
                liste = sorted(liste, key=getKey, reverse=True)
                dictionnaire[poule.id] = liste
                poule.SortedPair = list()
                x = 1
                for pairID, sc in liste:
                    pai = Pair.objects.get(id=pairID)
                    pai.score = sc
                    pai.poule = poule.id
                    pai.position = x
                    poule.SortedPair.append(pai)
                    allPaires.append(pai)
                    x = x + 1
        if tournoi.arbre is not None:
            arbre = tournoi.arbre
        return render(request, 'knockOff.html', locals())
    return redirect(reverse(home))
	def addResult(self):
		#Information sur l'edition 41
		for elem in infoTournoi.objects.filter(edition=41):
			elem.delete()
		i = infoTournoi(prix=20,date=datetime.date(2015, 9, 12),addr="Place des Carabiniers, 5, 1030 Bruxelles",edition=41)
		i.save()

		#Titre 
		TF = TournoiTitle.objects.get(nom="Tournoi des familles")
		DM = TournoiTitle.objects.get(nom="Double mixte")
		DH = TournoiTitle.objects.get(nom="Double hommes")
		DF = TournoiTitle.objects.get(nom="Double femmes")

		list_categorie = ['Pre minimes', 'Minimes', 'Cadets', 'Scolaires', 'Juniors', 'Seniors', 'Elites']
		#Catégorie
		PM = TournoiCategorie.objects.get(nom="Pre minimes")
		MI = TournoiCategorie.objects.get(nom="Minimes")
		CA = TournoiCategorie.objects.get(nom="Cadets")
		SC = TournoiCategorie.objects.get(nom="Scolaires")
		JU = TournoiCategorie.objects.get(nom="Juniors")
		SE = TournoiCategorie.objects.get(nom="Seniors")
		EL = TournoiCategorie.objects.get(nom="Elites")
		TFC = TournoiCategorie.objects.get(nom="Tournoi des familles")

		#Resultats
		#Double Mixte
		t = Tournoi.objects.get(titre=DM, categorie=MI)
		r = Resultat(tournoi=t,gagnants_alt="Julie RYELANDT et Evrard THIJSSEN",finalistes_alt="Lou COURBIAU et Alaric KALISH")
		r.save()
		i.resultats.add(r)

		t = Tournoi.objects.get(titre=DM, categorie=CA)
		r = Resultat(tournoi=t,gagnants_alt="Amandine PRIOUX et Antoine BOONE",finalistes_alt="Chloe OLESEN et Maxime de RIBAUCOURT")
		r.save()
		i.resultats.add(r)

		t = Tournoi.objects.get(titre=DM, categorie=SC)
		r = Resultat(tournoi=t,gagnants_alt="Eleonore BOONEN et Guillaume-Constant CLAES",finalistes_alt="Maroussia Cattoir et Amaury Cattoir")
		r.save()
		i.resultats.add(r)

		t = Tournoi.objects.get(titre=DM, categorie=JU)
		r = Resultat(tournoi=t,gagnants_alt="Anouchka LAURENT JOSI et Antoine de BORREKENS",finalistes_alt="Anouchka LAURENT JOSI et Antoine de BORREKENS")
		r.save()
		i.resultats.add(r)

		t = Tournoi.objects.get(titre=DM, categorie=EL)
		r = Resultat(tournoi=t,gagnants_alt="Julie RYELANDT et Evrard THIJSSEN",finalistes_alt="Lou COURBIAU et Alaric KALISH")
		r.save()
		i.resultats.add(r)

		#Double Femmes
		t = Tournoi.objects.get(titre=DF, categorie=MI)
		r = Resultat(tournoi=t,gagnants_alt="Julie RYELANDT et Lola SCHMID",finalistes_alt="Zoe VERHOOSEL et Alexia JACOB")
		r.save()
		i.resultats.add(r)

		t = Tournoi.objects.get(titre=DF, categorie=CA)
		r = Resultat(tournoi=t,gagnants_alt="Antoinette ADAM et Victorine ADAM",finalistes_alt="Agathe DE MOL et Louise-Marie DUPREZ")
		r.save()
		i.resultats.add(r)


		t = Tournoi.objects.get(titre=DF, categorie=SC)
		r = Resultat(tournoi=t,gagnants_alt="Delphine SPRUYTTE et Ludivine D'YDEWALLE",finalistes_alt="Juliette DAVIGNON et Charlotte-Lucie DELBECQUE")
		r.save()
		i.resultats.add(r)


		t = Tournoi.objects.get(titre=DF, categorie=JU)
		r = Resultat(tournoi=t,gagnants_alt="Laura DECLETY et Sophie GOFFAU",finalistes_alt="Alexia KASTEEL et Louise MONVILLE")
		r.save()
		i.resultats.add(r)

		#Double Hommes
		t = Tournoi.objects.get(titre=DH, categorie=MI)
		r = Resultat(tournoi=t,gagnants_alt="Arnaud DAVIGNON et Hidde DOMS",finalistes_alt="Alexis MENCIK et Jules RAEMDONCK")
		r.save()
		i.resultats.add(r)

		t = Tournoi.objects.get(titre=DH, categorie=CA)
		r = Resultat(tournoi=t,gagnants_alt="Quentin DAVIGNON et Alexandre VERHULST",finalistes_alt="Diego TIELENS et Alexandre de STAERCKE")
		r.save()
		i.resultats.add(r)

		t = Tournoi.objects.get(titre=DH, categorie=SC)
		r = Resultat(tournoi=t,gagnants_alt="Charles le GRELLE et Martin van der MEERSCHEN",finalistes_alt="François DAVID et Antoine LEGRAND")
		r.save()
		i.resultats.add(r)

		t = Tournoi.objects.get(titre=DH, categorie=JU)
		r = Resultat(tournoi=t,gagnants_alt="Augustin BOSSAERT DERACHE et Diego MOMMAERTS",finalistes_alt="Felix de PATOUL et Nicolas van HAVRE")
		r.save()
		i.resultats.add(r)

		t = Tournoi.objects.get(titre=DH, categorie=EL)
		r = Resultat(tournoi=t,gagnants_alt="Olivier MARTINOT et Didier PERWEZ",finalistes_alt="Philippe DE BRUYNE et Alain VERGAUWEN")
		r.save()
		i.resultats.add(r)

		#Tournoi des familles
		t = Tournoi.objects.get(titre=TF, categorie=TFC)
		r = Resultat(tournoi=t,gagnants_alt="Guillaume van LINT et Eric van LINT",finalistes_alt="Briac LOHEST et Emmanuel LOHEST")
		r.save()
		i.resultats.add(r)

		i.save()