Пример #1
0
def p_portail_home(request):
    """ Portail d'accueil de CRUDY """
    crudy = Crudy(request, "portail")
    title = crudy.application["title"]
    crudy.folder_id = None
    crudy.layout = "portail"
    return render(request, 'p_portail_home.html', locals())
Пример #2
0
def f_tarot_jeu_prime(request, record_id):
    """ Saisie des primes """
    crudy = Crudy(request, APP_NAME)
    crudy.layout = "form"
    obj = get_object_or_404(TarotJeu, id=record_id)
    title = "Saisie des primes pour %s" % (
        obj.participant.joueur.pseudo.upper())
    form = forms.TarotJeuPrimeForm(request.POST or None,
                                   request=request,
                                   instance=obj)
    if form.is_valid():
        form.save()
        # un seul ptbout par jeu
        if obj.ptbout:
            jeux = TarotJeu.objects.all().filter(
                participant__partie__id=obj.participant.partie_id, jeu=obj.jeu)
            for jeu in jeux:
                if jeu.id != obj.id:
                    jeu.ptbout = False
                    jeu.save()
        partie = get_object_or_404(TarotPartie, id=crudy.folder_id)
        partie.modified = True
        partie.save()

        return redirect("v_tarot_jeu_list", obj.jeu)
    return render(request, "f_crudy_form.html", locals())
Пример #3
0
def f_tarot_jeu_pari(request, record_id):
    """ Saisie pari d'un joueur """
    crudy = Crudy(request, APP_NAME)
    crudy.layout = "form"
    obj = get_object_or_404(TarotJeu, id=record_id)
    title = "Enchère de %s" % (obj.participant.joueur.pseudo.upper())
    form = forms.TarotJeuPariForm(request.POST or None,
                                  request=request,
                                  instance=obj)
    if form.is_valid():
        form.save()
        partie = get_object_or_404(TarotPartie, id=crudy.folder_id)
        jeu_courant = get_object_or_404(TarotJeu, id=record_id)
        jeu_courant.prenneur = True
        if partie.qparticipant < 5:
            jeu_courant.partenaire = True
        jeu_courant.real = 0
        jeu_courant.save()
        if jeu_courant.pari != "...":
            # Nettoyage des enchères des autres joueurs
            jeux = TarotJeu.objects.all().filter(
                participant__partie__id=obj.participant.partie_id, jeu=obj.jeu)
            for jeu in jeux:
                if jeu.id != jeu_courant.id:
                    jeu.pari = "..."
                    jeu.prenneur = False
                    if partie.qparticipant < 5:
                        jeu.partenaire = False
                    jeu.real = 99
                    jeu.save()
        return redirect("v_tarot_jeu_list", obj.jeu)
    return render(request, "f_crudy_form.html", locals())
Пример #4
0
def p_whist_help(request):
    """ Guide """
    crudy = Crudy(request, APP_NAME)
    title = crudy.application.get("title")
    crudy.url_actions = []
    crudy.layout = "help"
    form = None
    return render(request, 'p_crudy_help.html', locals())
Пример #5
0
def f_tarot_partie_folder(request, record_id):
    """ Enregistrement d'une partie dans folder"""
    crudy = Crudy(request, APP_NAME)
    crudy.layout = "form"

    obj = get_object_or_404(TarotPartie, id=record_id)
    crudy.folder_id = obj.id
    crudy.folder_name = obj.name
    return redirect("v_tarot_participant_select")
Пример #6
0
def f_whist_partie_folder(request, record_id):
    """ Sélection d'une partie dans folder"""
    crudy = Crudy(request, APP_NAME)
    crudy.layout = "form"

    obj = get_object_or_404(WhistPartie, id=record_id)
    crudy.folder_id = obj.id
    crudy.folder_name = obj.name
    return redirect("v_whist_participant_select")
Пример #7
0
def f_whist_jeu_pari(request, record_id):
    """ Saisie pari d'un joueur """
    crudy = Crudy(request, APP_NAME)
    obj = get_object_or_404(WhistJeu, id=record_id)
    title = "Pari de %s" % (obj.participant.joueur.pseudo.upper())
    crudy.message = "**%s**, Combien penses-tu faire de plis ?" % (
        obj.participant.joueur.pseudo.upper())
    form = forms.WhistJeuPariForm(request.POST or None,
                                  request=request,
                                  instance=obj)
    if form.is_valid():
        form.save()
        return redirect(crudy.url_view, obj.jeu)
    return render(request, "f_crudy_form.html", locals())
Пример #8
0
def f_whist_joueur_update(request, record_id):
    """ mise à jour d'un joueur """
    crudy = Crudy(request, APP_NAME)
    crudy.layout = "form"
    crudy.url_delete = "f_whist_joueur_delete"
    title = "Modification d'un Joueur"
    crudy.message = ""
    obj = get_object_or_404(WhistJoueur, id=record_id)
    form = forms.WhistJoueurForm(request.POST or None,
                                 instance=obj,
                                 request=request)
    if form.is_valid():
        form.save()
        return redirect("v_whist_participant_select")
    return render(request, "f_crudy_form.html", locals())
Пример #9
0
    def get_queryset(self):
        """ queryset générique """
        crudy = Crudy(self.request, APP_NAME)
        objs = self.meta.model.objects.all()\
        .filter(partie_id=crudy.folder_id)\
        .order_by(*self.meta.order_by)\
        .values(*self.meta.cols_ordered)
        # tri des colonnes si version python 3.5
        self.objs = self.sort_cols(objs)

        crudy.url_participant_update = 'f_whist_participant_update'
        crudy.action_param = 0
        if len(self.objs) == 0:
            self.meta.url_actions = []

        return self.objs
Пример #10
0
def f_whist_partie_update(request, record_id):
    """ Modification d'une partie """
    crudy = Crudy(request, APP_NAME)
    crudy.layout = "form"
    title = "Modification d'une Partie"
    crudy.message = ""
    crudy.url_delete = "f_whist_partie_delete"
    obj = get_object_or_404(WhistPartie, id=record_id)
    model = WhistPartie
    form = forms.WhistPartieForm(request.POST or None,
                                 request=request,
                                 instance=obj)
    if form.is_valid():
        form.save()
        return redirect("v_whist_partie_select")
    return render(request, "f_crudy_form.html", locals())
Пример #11
0
def f_whist_jeu_create(request, id):
    """ création des jeux (tours) de la partie """
    crudy = Crudy(request, APP_NAME)
    jeu = WhistJeu()
    jeu.create_jeux(crudy)

    return redirect("v_whist_jeu_list", 1)
Пример #12
0
def p_portail_help(request):
    """ Aide de CRUDY """
    crudy = Crudy(request, "portail")
    readme = ""
    with open(os.path.dirname(__file__) + "/../README.md", mode="r", encoding='utf-8') as fichier:
	    readme = fichier.read()
    return render(request, 'p_portail_help.html', locals())
Пример #13
0
def f_tarot_jeu_real(request, record_id):
    """ Saisie du réalisé 0 1 2 """
    crudy = Crudy(request, APP_NAME)
    crudy.layout = "form"
    obj = get_object_or_404(TarotJeu, id=record_id)
    title = "Nombre de points réalisé par %s" % (
        obj.participant.joueur.pseudo.upper())
    form = forms.TarotJeuRealForm(request.POST or None,
                                  request=request,
                                  instance=obj)
    if form.is_valid():
        form.save()
        partie = get_object_or_404(TarotPartie, id=crudy.folder_id)
        partie.modified = True
        partie.save()
        return redirect("v_tarot_jeu_list", obj.jeu)
    return render(request, "f_crudy_form.html", locals())
Пример #14
0
def f_tarot_jeu_add(request):
    """ ajout d'un jeu dans la partie """
    crudy = Crudy(request, APP_NAME)
    jeu = TarotJeu()
    jeu.add_jeux(crudy)

    partie = get_object_or_404(TarotPartie, id=crudy.folder_id)
    return redirect("v_tarot_jeu_list", partie.jeu)
Пример #15
0
 def get_queryset(self):
     """ queryset générique """
     crudy = Crudy(self.request, "whist")
     objs = self.meta.model.objects.all().filter(owner=self.request.user.username)\
     .filter(**self.meta.filters)\
     .order_by(*self.meta.order_by)\
     .values(*self.meta.cols_ordered)
     # tri des colonnes si version python 3.5
     self.objs = self.sort_cols(objs)
     # Cochage des participants dans la liste des joueurs
     participants = WhistParticipant.objects.all().filter(
         partie__id__exact=crudy.folder_id)
     crudy.joined = []
     for obj in self.objs:
         for participant in participants:
             if participant.joueur_id == obj["id"]:
                 crudy.joined.append(obj["id"])
     return self.objs
Пример #16
0
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     crudy = Crudy(self.request, "whist")
     whistJeu = kwargs["instance"]
     choices = []
     for i in range(0, whistJeu.carte + 1):
         choices.append((i, "%s pli" % (i, )))
     self.fields['real'].choices = choices
     self.fields['real'].label = ""
Пример #17
0
def f_whist_joueur_create(request):
    """ création d'un joueur """
    crudy = Crudy(request, APP_NAME)
    crudy.layout = "form"
    title = "Nouveau Joueur"
    crudy.message = ""
    model = WhistJoueur
    if request.POST:
        form = forms.WhistJoueurForm(request.POST, request=request)
        if form.is_valid():
            post = form.save(commit=False)
            post.owner = request.user.username
            post.pseudo = post.pseudo.upper()
            post.save()
            return redirect("v_whist_participant_select")
    else:
        form = forms.WhistJoueurForm(request=request)
    return render(request, 'f_crudy_form.html', locals())
Пример #18
0
def f_tarot_jeu_partenaire(request, record_id, checked):
    """ Saisie du partenaire """
    crudy = Crudy(request, APP_NAME)
    crudy.layout = "form"
    tarotJeu = get_object_or_404(TarotJeu, id=record_id)
    jeux = TarotJeu.objects.all().filter(
        participant__partie_id=tarotJeu.participant.partie_id,
        jeu=tarotJeu.jeu)
    for jeu in jeux:
        if jeu.id == int(record_id):
            jeu.partenaire = False if checked == "True" else True
        else:
            jeu.partenaire = False
        jeu.save()
    partie = get_object_or_404(TarotPartie, id=crudy.folder_id)
    partie.modified = True
    partie.save()

    return redirect("v_tarot_jeu_list", tarotJeu.jeu)
Пример #19
0
def f_whist_partie_create(request):
    """ Nouvelle partie """
    crudy = Crudy(request, APP_NAME)
    crudy.layout = "form"
    title = "Nouvelle Partie"
    model = WhistPartie
    crudy.message = ""
    if request.POST:
        form = forms.WhistPartieForm(request.POST, request=request)
        if form.is_valid():
            form.save()
            post = form.save(commit=False)
            post.owner = request.user.username
            post.name = post.name.upper()
            post.save()
            return redirect("v_whist_partie_select")
    else:
        form = forms.WhistPartieForm(request=request)
    return render(request, 'f_crudy_form.html', locals())
Пример #20
0
def v_whist_participant_order(request, record_id, orientation):
    """ On remonte le joueur dans la liste """
    crudy = Crudy(request, APP_NAME)
    iid = int(record_id)

    participant = get_object_or_404(WhistParticipant, id=iid)
    participant.order += int(orientation) * 3
    participant.save()
    participant.compute_order()

    return redirect("v_whist_participant_list")
Пример #21
0
def f_whist_jeu_real(request, record_id):
    """ Saisie du réalisé 0 1 2 """
    crudy = Crudy(request, APP_NAME)
    obj = get_object_or_404(WhistJeu, id=record_id)
    title = "Réalisé de %s" % (obj.participant.joueur.pseudo.upper())
    if obj.pari > 1:
        crudy.message = "**%s**, combien de plis as-tu réalisé ? (**%d** plis avaient été demandés) ?"\
        % (obj.participant.joueur.pseudo.upper(), obj.pari)
    else:
        crudy.message = "**%s**, combien de plis as-tu réalisé ? (**%d** pli avait été demandé) ?"\
        % (obj.participant.joueur.pseudo.upper(), obj.pari)
    form = forms.WhistJeuRealForm(request.POST or None,
                                  request=request,
                                  instance=obj)
    if form.is_valid():
        form.save()
        partie = get_object_or_404(WhistPartie, id=crudy.folder_id)
        partie.modified = True
        partie.save()
        return redirect(crudy.url_view, obj.jeu)
    return render(request, "f_crudy_form.html", locals())
Пример #22
0
    def get_queryset(self):
        """ queryset générique """
        objs = self.meta.model.objects.all().filter(owner=self.request.user.username)\
        .filter(**self.meta.filters)\
        .order_by(*self.meta.order_by)\
        .values(*self.meta.cols_ordered)
        # tri des colonnes si version python 3.5
        self.objs = self.sort_cols(objs)

        crudy = Crudy(self.request, APP_NAME)
        if not crudy.folder_id:
            self.meta.url_next_page = None

        return self.objs
Пример #23
0
def f_whist_participant_update(request, record_id, checked):
    """ Mise à jour du donneur """
    crudy = Crudy(request, APP_NAME)

    participants = WhistParticipant.objects.all().filter(
        partie__id=crudy.folder_id)
    for participant in participants:
        if participant.id == int(record_id):
            participant.donneur = False if checked == "True" else True
        else:
            participant.donneur = False
        participant.save()

    return redirect("v_whist_participant_list")
Пример #24
0
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     crudy = Crudy(self.request, "whist")
     whistJeu = kwargs["instance"]
     # nre de plis demandés
     plis = 0
     for jeu in WhistJeu.objects.all().filter(
             participant__partie_id=crudy.folder_id, jeu=whistJeu.jeu):
         if jeu.donneur != 1:
             plis += jeu.pari
     choices = []
     for i in range(0, whistJeu.carte + 1):
         if whistJeu.carte - plis == i and whistJeu.donneur == 1:
             continue
         choices.append((i, "%s pli" % (i, )))
     self.fields['pari'].choices = choices
     self.fields['pari'].label = ""
Пример #25
0
def f_portail_login(request):
    """ Login """
    crudy = Crudy(request, "portail")
    title = ""

    if request.user.is_authenticated:
        print(request.user.email, 'is connected')
    else:
        print('not connected')

    form = AuthenticationForm(data=request.POST)
    if request.POST and form.is_valid():
        login(request, form.get_user())
        if request.user.is_authenticated:
            print(request.user.email, 'connected')
            return redirect('p_portail_home')

    return render(request, 'f_portail_login.html', locals())
Пример #26
0
def v_whist_participant_join(request, record_id):
    """ Création d'un participant à partir de la sélection dans la vue des joueurs """
    crudy = Crudy(request, APP_NAME)
    iid = int(record_id)

    if iid in crudy.joined:
        participant = WhistParticipant.objects.all().filter(
            partie_id=crudy.folder_id, joueur_id=iid)
        participant.delete()
        crudy.joined.remove(iid)
    else:
        participant = WhistParticipant(partie_id=crudy.folder_id,
                                       joueur_id=iid)
        participant.save()
        participant.compute_order()
        crudy.joined.append(iid)

    return redirect("v_whist_participant_select")
Пример #27
0
    def get_queryset(self):
        """ fournir les données à afficher dans la vue """
        crudy = Crudy(self.request, APP_NAME)
        self.meta.url_back = "/tarot/jeu/list/%s" % self.participant_id

        prise = TarotJeu.objects.filter(participant__partie__id=crudy.folder_id, jeu=OuterRef('jeu'), prenneur=True)\
        .exclude(pk=OuterRef('pk'))

        partie = get_object_or_404(TarotPartie, id=crudy.folder_id)

        objs = TarotJeu.objects.filter(participant__partie__id=crudy.folder_id, participant__id=self.participant_id)\
        .order_by('jeu')\
        .values(*self.meta.cols_ordered, prise=Subquery(prise.values('pari')))
        # tri des colonnes si version python 3.5
        self.objs = self.sort_cols(objs)

        # Tri des colonnes dans l'ordre de cols + remplissage des colonnes calculées
        participant_name = ""
        for row in self.objs:
            participant_name = row["participant__joueur__pseudo"]
            primes = []
            for key, col in self.meta.cols_list:
                # on remplit la colonne prime avec la catégorie prime
                if col.get("category") == "prime":
                    if row[key]:
                        primes.append((col.get("title")))
            if len(primes) == 0:
                primes.append(("0"))
            row["primes"] = primes

        # on cache la colonne partenaire si jeu à 4 ou 3
        qparticipant = TarotParticipant.objects.all().filter(
            partie__id__exact=crudy.folder_id).count()

        self.meta.title = 'Jeux de "%s"' % participant_name

        if qparticipant == 3 or qparticipant == 4:
            self.meta.cols["partenaire"]["hide"] = True
        else:
            self.meta.cols["partenaire"]["hide"] = False
        return self.objs
Пример #28
0
    def get_queryset(self):
        """ fournir les données à afficher dans la vue """
        crudy = Crudy(self.request, APP_NAME)
        self.meta.url_back = "/whist/jeu/list/%s" % self.participant_id
        partie = get_object_or_404(WhistPartie, id=crudy.folder_id)

        objs = WhistJeu.objects.all()\
        .filter(participant__partie__id=crudy.folder_id, participant__id=self.participant_id, jeu__lt=partie.jeu)\
        .order_by('jeu')\
        .values(*self.meta.cols_ordered)
        # tri des colonnes si version python 3.5
        self.objs = self.sort_cols(objs)

        # Tri des colonnes dans l'ordre de cols
        participant_name = ""
        for row in self.objs:
            participant_name = row["participant__joueur__pseudo"]

        self.meta.title = 'Jeux de "%s"' % participant_name

        return self.objs
Пример #29
0
def f_whist_jeu_compute(request, ijeu):
    """ Calcul des points du jeux, du score et du rang du joueur """
    crudy = Crudy(request, APP_NAME)
    jeux = WhistJeu.objects.all()\
    .filter(participant__partie__id=crudy.folder_id)\
    .order_by("jeu")
    score = {}
    for jeu in jeux:
        joueur_id = jeu.participant.joueur_id
        if jeu.jeu <= int(ijeu):
            if jeu.pari == jeu.real:
                jeu.points = 10 + 2 * jeu.pari
            else:
                jeu.points = -10
            score[joueur_id] = score.get(joueur_id, 0) + jeu.points
        jeu.score = score[joueur_id]
        jeu.save()
    # Attribution des médailles
    jeux = WhistJeu.objects.all()\
    .filter(participant__partie__id=crudy.folder_id)\
    .order_by("jeu", "-score")
    gold = 1000
    silver = 1000
    bronze = 1000
    rupt_jeu = 0
    last_pk = 0
    for jeu in jeux:
        if rupt_jeu != jeu.jeu:
            # changement de jeu
            rupt_jeu = jeu.jeu
            gold = 1000
            silver = 1000
            bronze = 1000
            # Médaille de chocolat
            if last_pk != 0:
                last_jeu = get_object_or_404(WhistJeu, pk=last_pk)
                last_jeu.medal = 9
                last_jeu.save()
        last_pk = jeu.pk
        jeu.medal = 0
        if gold == 1000:
            gold = jeu.score
            jeu.medal = 1
        elif gold == jeu.score:
            jeu.medal = 1
        elif silver == 1000:
            silver = jeu.score
            jeu.medal = 2
        elif silver == jeu.score:
            jeu.medal = 2
        elif bronze == 1000:
            bronze = jeu.score
            jeu.medal = 3
        elif bronze == jeu.score:
            jeu.medal = 3
        jeu.save()
    # Médaille de chocolat
    if last_pk != 0:
        last_jeu = get_object_or_404(WhistJeu, pk=last_pk)
        last_jeu.medal = 9
        last_jeu.save()
    # maj partie jeu en cours
    partie = get_object_or_404(WhistPartie, id=crudy.folder_id)
    if partie.jeu == int(ijeu) and int(ijeu) <= last_jeu.jeu:
        partie.jeu = int(ijeu) + 1
    partie.modified = False
    partie.save()

    return redirect("v_whist_jeu_list", partie.jeu)
Пример #30
0
    def get_queryset(self):
        """ fournir les données à afficher dans la vue """
        crudy = Crudy(self.request, APP_NAME)
        # prise en compte de la colonne à trier en fonction de sort
        if self.sort == "score":
            crudy.sort = "score"

        if self.sort == "participant":
            crudy.sort = "participant"

        if crudy.sort == "score":
            order_by = (
                'jeu',
                '-score',
            )
        else:
            order_by = (
                'jeu',
                'participant__order',
            )

        partie = get_object_or_404(WhistPartie, id=crudy.folder_id)
        self.meta.whist_carte = partie.cartes
        crudy.modified = partie.modified

        objs = self.meta.model.objects.all()\
        .filter(participant__partie__id__exact=crudy.folder_id)\
        .order_by(*order_by)\
        .values(*self.meta.cols_ordered)
        objs_all = self.sort_cols(objs)
        qparticipant = WhistParticipant.objects.all().filter(
            partie__id__exact=crudy.folder_id).count()
        if qparticipant > 0:
            self.paginator = Paginator(objs_all, qparticipant)

            self.objs = self.paginator.page(self.page)
            # comptage de nombre de plis demandés et réalisés
            qplis = 0
            qreal = 0
            qcarte = 0
            for obj in self.objs:
                qplis += obj["pari"]
                qreal += obj["real"]
                qcarte = obj["carte"]

            crudy.cartes = []
            for pp in range(1, self.paginator.num_pages + 1):
                if pp <= self.paginator.num_pages / 2:
                    crudy.cartes.append((pp, pp))
                else:
                    crudy.cartes.append(
                        (pp, self.paginator.num_pages - pp + 1))
            crudy.action_param = self.page
            crudy.jeu = int(self.page)
            partie = get_object_or_404(WhistPartie, id=crudy.folder_id)
            crudy.jeu_current = partie.jeu
            if int(crudy.jeu) > partie.jeu + 1:
                self.meta.url_actions = []
            if qreal != qcarte:
                self.meta.url_actions = []

            self.meta.cols["pari"]["subtitle"] = "%s / %s" % (qplis, qcarte)
            self.meta.cols["real"]["subtitle"] = "%s / %s" % (qreal, qcarte)
        else:
            self.meta.url_actions = []

        self.meta.url_actions = []
        if crudy.modified:
            self.meta.url_actions.append(
                ("f_whist_jeu_compute", "Calculer les points"))

        crudy.url_sort = 'v_whist_jeu_sort'
        return self.objs