From a1be9644f97b49045f3f5b04f42208edd6a4ea24 Mon Sep 17 00:00:00 2001 From: Zdenek Kubala <zdenek.kubala@pirati.cz> Date: Tue, 7 Sep 2021 14:49:23 +0000 Subject: [PATCH] enhanced stage + sifrovacka page + miscs * assigment of first stage * finish button at last stage * removed some debug stuff --- django_apps/settings.py | 5 +- sifrovacka/forms.py | 5 +- .../0029_alter_stages_stage_urlhash.py | 18 +++ sifrovacka/templates/404.html | 8 + sifrovacka/templates/405.html | 9 ++ sifrovacka/templates/500.html | 8 + sifrovacka/templates/base.html | 4 +- sifrovacka/templates/index.html | 65 +++++--- sifrovacka/templates/sifrovacka.html | 114 +++++++------- sifrovacka/templates/stage.html | 144 +++++++++--------- sifrovacka/views.py | 116 +++++++++----- 11 files changed, 296 insertions(+), 200 deletions(-) create mode 100644 sifrovacka/migrations/0029_alter_stages_stage_urlhash.py create mode 100644 sifrovacka/templates/404.html create mode 100644 sifrovacka/templates/405.html create mode 100644 sifrovacka/templates/500.html diff --git a/django_apps/settings.py b/django_apps/settings.py index c6f7342..012e16b 100644 --- a/django_apps/settings.py +++ b/django_apps/settings.py @@ -23,9 +23,10 @@ BASE_DIR = Path(__file__).resolve().parent.parent SECRET_KEY = 'django-insecure-kog+-x*xtt5e7shmxa-ddldzdtz@u#*tj^s9jzm#%&ghy*a8x%' # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True +DEBUG = False +#DEBUG = True -ALLOWED_HOSTS = [] +ALLOWED_HOSTS = ['*'] # Application definition diff --git a/sifrovacka/forms.py b/sifrovacka/forms.py index 363bbdc..7771891 100644 --- a/sifrovacka/forms.py +++ b/sifrovacka/forms.py @@ -2,7 +2,10 @@ from django import forms #from .models import Sifrovacka, Stages, Participants class PassphraseForm(forms.Form): - passphrase = forms.CharField(label='Vloz heslo k dalsi fazi', max_length=30) + passphrase = forms.CharField(label='Vloz heslo k dalsi fazi', + max_length=30, widget=forms.TextInput(attrs={'class': + 'text-input form-field__contro','placeholder': + 'sem vloz heslo pro postup do dalsi faze'})) stage_current_urlhash = forms.CharField() # def clean(self) diff --git a/sifrovacka/migrations/0029_alter_stages_stage_urlhash.py b/sifrovacka/migrations/0029_alter_stages_stage_urlhash.py new file mode 100644 index 0000000..ccf7108 --- /dev/null +++ b/sifrovacka/migrations/0029_alter_stages_stage_urlhash.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.3 on 2021-09-07 10:48 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sifrovacka', '0028_auto_20210906_1357'), + ] + + operations = [ + migrations.AlterField( + model_name='stages', + name='stage_urlhash', + field=models.CharField(default='219a29ae0fc911ecb2d12016b9b07b5b', max_length=32), + ), + ] diff --git a/sifrovacka/templates/404.html b/sifrovacka/templates/404.html new file mode 100644 index 0000000..e6da427 --- /dev/null +++ b/sifrovacka/templates/404.html @@ -0,0 +1,8 @@ +{% extends "base.html" %} +{% load static %} + +{% block content %} +<div class="alert alert--red-600"> + <span> Stranka nenalezena. </span> +</div> +{% endblock %} diff --git a/sifrovacka/templates/405.html b/sifrovacka/templates/405.html new file mode 100644 index 0000000..86cec24 --- /dev/null +++ b/sifrovacka/templates/405.html @@ -0,0 +1,9 @@ +{% extends "base.html" %} +{% load static %} + +{% block content %} +<div class="alert alert--red-600"> +<!-- intentionally wrong encoded text - JUST FOR TESTING 500.html ERROR page --> +<span>Omlouváme se, ale nastala <b>chyba serveru</b>. </br>Pokud se chyba stala pżi bżżné operaci, prosím kontaktujte správce a popiżte mu situaci vżetnż screenshotu, kontakt je níże. </span> +</div> +{% endblock %} diff --git a/sifrovacka/templates/500.html b/sifrovacka/templates/500.html new file mode 100644 index 0000000..be87cb1 --- /dev/null +++ b/sifrovacka/templates/500.html @@ -0,0 +1,8 @@ +{% extends "base.html" %} +{% load static %} + +{% block content %} +<div class="alert alert--red-600"> + <span>Omlouvame se, ale nastala <b>chyba serveru</b>. </br>Pokud se chyba stala pri bezne operaci, prosim kontaktujte spravce a popiste mu situaci vcetne screenshotu, kontakt je nize. </span> +</div> +{% endblock %} diff --git a/sifrovacka/templates/base.html b/sifrovacka/templates/base.html index 457cbb4..d82b1d4 100644 --- a/sifrovacka/templates/base.html +++ b/sifrovacka/templates/base.html @@ -59,7 +59,7 @@ {% include "shared/matomo_snippet.html" with matomo_id=settings.ONBOARDING_MATOMO_ID %} {% endif %} - <title>Ĺ ifrovaÄŤky</title> + <title>Ĺ ifrovaÄŤka</title> </head> <body> @@ -74,7 +74,7 @@ <div class="navbar__brand my-4 flex items-center lg:pr-8 lg:my-0"> <a href="/"><img src="https://styleguide.pir-test.eu/2.3.x/images/logo-round-white.svg" class="w-8"></a> <span class="pl-4 font-bold text-xl lg:border-r lg:border-grey-300 lg:pr-8"> - <a href={% url "index"%}>Sifrovacky</a> + <a href={% url "index"%}>Sifrovacka</a> {% if settings.SIFROVACKA_ENV == "dev" %}<sup class="text-cyan-100">(DEV)</sup>{% endif %} </span> </div> diff --git a/sifrovacka/templates/index.html b/sifrovacka/templates/index.html index f33ceda..b1220ae 100644 --- a/sifrovacka/templates/index.html +++ b/sifrovacka/templates/index.html @@ -1,37 +1,52 @@ {% extends "base.html" %} {% block content %} + <div class="container container--default"> {% if sifrovacky_list %} -{% comment %} - {% if request.user.is_authenticated %} - {% for sifrovacka in available_sifrovacky_list %} -{% endcomment %} - <ul> - <p> <b>Aktivni sifrovacky: </b> </p> - {% for sifrovacka in sifrovacky_list %} - <li><a href={% url 'detail' sifrovacka.id %}>{{ sifrovacka.sifrovacka_name }}</a></li> - {% endfor %} - </ul> - {% if request.user.is_authenticated %} - <ul> - <p> <b>Prihlasene sifrovacky: </b> </p> - {% for sifrovacka in user_active_sifrovacky %} - <li><a href={% url 'detail' sifrovacka.sifrovacka.id %}>{{ sifrovacka }}</a></li> - {% endfor %} - </ul> - {% endif %} - <ul> - <p> <b>Ukoncene sifrovacky: </b> </p> - {% for sifrovacka in archived_sifrovacky %} - <li><a href={% url 'detail' sifrovacka.id %}>{{ sifrovacka.sifrovacka_name }}</a></li> - {% endfor %} - </ul> + <ul> + <h1 class="head-alt-md">Aktivni sifrovacky:</h1> + {% for sifrovacka in sifrovacky_list %} + <li><a href={% url 'detail' sifrovacka.id %}>{{ sifrovacka.sifrovacka_name }}</a></li> + {% endfor %} + {% else %} + {% if not request.user.is_authenticated %} + <div class="alert alert--grey-125"> + <span>Je nam lito, ale zadne sifrovacky nejsou aktualne dostupne.</span> + </div> + {% else %} + <h1 class="head-alt-md">Aktivni sifrovacky:</h1> + <p>Je nam lito, ale zadne sifrovacky nejsou aktualne dostupne.</p> + {% endif %} + {% endif %} + </ul> + + {% if request.user.is_authenticated %} + <ul> + <h1 class="head-alt-base">Prihlasene sifrovacky:</h1> + {% if user_active_sifrovacky %} + {% for sifrovacka in user_active_sifrovacky %} + <li><a href={% url 'detail' sifrovacka.sifrovacka.id %}>{{ sifrovacka }}</a></li> + {% endfor %} + {% else %} + <p>Nemate zapsane zadne sifrovacky.</p> + {% endif %} + </ul> + {% endif %} + <ul> + {% if archived_sifrovacky %} + <h1 class="head-alt-base">Ukoncene sifrovacky:</h1> + {% for sifrovacka in archived_sifrovacky %} + <li><a href={% url 'detail' sifrovacka.id %}>{{ sifrovacka.sifrovacka_name }}</a></li> + {% endfor %} + {% endif %} + </ul> {% comment %} {% else %} <p>Zadne sifrovacky nejsou aktivni nebo se ucastnite vsech dostupnych.</p> {% endif %} -{% endcomment %} {% else %} <p>Je nam lito, ale zadne sifrovacky nejsou aktualne dostupne.</p> {% endif %} +{% endcomment %} + </div> {% endblock %} diff --git a/sifrovacka/templates/sifrovacka.html b/sifrovacka/templates/sifrovacka.html index 1dded66..8c49b30 100644 --- a/sifrovacka/templates/sifrovacka.html +++ b/sifrovacka/templates/sifrovacka.html @@ -2,68 +2,62 @@ {% load static %} {% block content %} -<p> Toto je detail sifrovacky se jmenem: <b>{{sifrovacka_detail}} </b> a id: {{sifrovacka_id}}. </p> -</br> -<p> Pocet ukolu: <b> {{ sifrovacka_stage_count }} </b> </br> -<!-- - Obtiznost: NONE</br> - Casova narocnost: NONE</p> ---> + <div class="container container--default"> + <h1 class="head-alt-md">{{sifrovacka_detail}}</h1> + </br> + <p> Pocet ukolu: <b> {{ sifrovacka_stage_count }} </b> </br> + <!-- + Obtiznost: NONE</br> + Casova narocnost: NONE</p> + --> -</br> -{{ sifrovacka_detail.sifrovacka_description | safe }} -{% if sifrovacka_detail.sifrovacka_img %} - <figure class="figure"> - <img src=" {% get_media_prefix %}{{sifrovacka_detail.sifrovacka_img}}" alt="16x9 Image"> - <figcaption> - Autor: Junius Koolen CC-BY-SA - </figcaption> -</figure> - {{ sifrovacka_detail.sifrovacka_img }} -{% endif%} -{% if request.user.is_authenticated %} - {% if not sifrovacka_current_stage_urlhash %} - <form action="{% url 'home' %}" method="post"> - {% csrf_token %} - <button type="submit" value={{ sifrovacka_id }} name='signupsif'>Prihlasit se k sifrovacce</button> - </form> - {% else %} - <p> Vase Aktualni uroven: </p> + <h1 class="head-alt-sm">Pruvodni slovo</h1> + <hr> + </br> + {{ sifrovacka_detail.sifrovacka_description | safe }} + {% if sifrovacka_detail.sifrovacka_img %} + <figure class="figure"> + <img src=" {% get_media_prefix %}{{sifrovacka_detail.sifrovacka_img}}" alt="16x9 Image"> + <figcaption> + Autor: Junius Koolen CC-BY-SA + </figcaption> + </figure> + {% endif%} + <hr> + {% if request.user.is_authenticated %} + {% if not sifrovacka_stage_count == 0 %} + {% if not sifrovacka_current_stage_urlhash %} + <form action="{% url 'home' %}" method="post"> + {% csrf_token %} + <button class="btn btn--autowidth btn--hoveractive btn--to-grey-500" type="submit" value={{ sifrovacka_id }} name='signupsif'> + <div class="btn__body ">Prihlasit se k sifrovacce</div> + </button> + </form> + {% else %} + <h1 class="head-alt-sm">Vase Aktualni uroven</h1> + {% for stage in sifrovacka_stages %} + {% if sifrovacka_current_stage_urlhash.at_stage == stage.stage_urlhash %} + <li><a href={% url 'stage' stage.sifrovacka_id stage.stage_urlhash %}>{{ stage }}</a></li> + {% endif %} + {% endfor %} + {% endif %} + {% else %} + <div class="alert alert--grey-125"> + <span> Sifrovacka zatim nema zadne urovne, proto neni mozne se k ni prihlasit.</span> + </div> + {% endif %} + {% endif %} + </div> + {% comment %} + </br> + </br> + </br> + Debug: + <div> {% for stage in sifrovacka_stages %} - {% if sifrovacka_current_stage_urlhash.at_stage == stage.stage_urlhash %} <li><a href={% url 'stage' stage.sifrovacka_id stage.stage_urlhash %}>{{ stage }}</a></li> - {% endif %} {% endfor %} - {% endif %} -{% endif %} -</br> -</br> -</br> -Debug: -<div> -{% for stage in sifrovacka_stages %} - <li><a href={% url 'stage' stage.sifrovacka_id stage.stage_urlhash %}>{{ stage }}</a></li> -{% endfor %} -</br> -</div> -{% comment %} -<form action="{% url 'sifrovacka:home' sifrovacka.id %}" method="post"> - - - <img src="{{ MEDIA_URL }}{{sifrovacka_detail.sifrovacka_img}}" alt="16x9 Image"> - - -{% csrf_token %} -<button type="submit" value=signupsif name='signupsif'>Prihlasit se k sifrovacce</button> -<button type="submit" value=signupsif onclick="location.href='{% url 'home' %}'" name='_signupsif'>Prihlasit se k sifrovacce</button> -<fieldset> - <legend><h1>{{ sifrovacka_detail }}</h1></legend> - {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %} - {% for choice in question.choice_set.all %} - <input type="radio" name="signupsif" id="signupsif" value="{{ sifrovacka_id }}"> - <label for="signupsif"> ZaÄŤĂt šifrovaÄŤku</label><br> - {% endfor %} -</fieldset> -<input type="submit" name="signupsif" value={{ sifrovacka_id }}> -{% endcomment %} + </br> + </div> + {% endcomment %} {% endblock %} diff --git a/sifrovacka/templates/stage.html b/sifrovacka/templates/stage.html index 061d085..2e55697 100644 --- a/sifrovacka/templates/stage.html +++ b/sifrovacka/templates/stage.html @@ -1,98 +1,104 @@ -{% extends "sifrovacka.html" %} +{% extends "base.html" %} {% load static %} -{% comment %} - {{ sifrovacka_current_id }} - {{ sifrovacka_current_stage_url_hash.at_stage }} - -{% endcomment %} {% block content %} +<div class="container container--default"> {% if stage_current_id %} {% if request.user.is_authenticated %} - <p> <b>{{ sifrovacka_current_stage_urlhash }} </b> - krok cislo {{ stage_current_id.stage_number }} z {{ sifrovacka_stage_count }}. </p> - {{ stage_current_id.stage_description | safe }} + <h1 class="head-alt-md">{{ sifrovacka_current_stage_urlhash }}</h1> + <p>Krok: <b>{{ stage_current_id.stage_number }}</b> z {{ sifrovacka_stage_count }}. </p> + {% if error_passphrase %} + <div class="alert alert--red-600"> + <span>Zadali jste Spatne heslo pro vstup do dalsi urovne. </span> + </div> + {% endif %} + <h1 class="head-alt-sm">Pruvodni slovo</h1> + <hr> + {{ stage_current_id.stage_description | safe }} + {% if stage_current_id.stage_img %} <figure class="figure"> <img src=" {% get_media_prefix %}{{stage_current_id.stage_img}}" alt="16x9 Image"> - <figcaption> - Autor: Junius Koolen CC-BY-SA - </figcaption> +{% comment %} +<!-- mozna doprovodny text k fotce --> + <figcaption> + Autor: Junius Koolen CC-BY-SA {{ stage_current_picture_extra_text } + </figcaption> +{% endcomment %} + </figure> {% endif %} {% if not last_stage %} - {{ stage_current_id.stage_img }} - {{ stage_current_id.stage_urlhash }} <form action="{% url 'stage' sifrovacka_id stage_current_id.stage_urlhash %}" method="post"> {% csrf_token %} - {{ form.non_field_errors }} </br> </br> -<!-- <div class="inline-flex flex-col sm:flex-row space-y-8 sm:space-y-0 sm:space-x-8"> --> -<button class="collapsible btn btn--fullwidth btn--grey-700 "> - <div class="btn__body "> Klikni pro napovedu</div> -</button> -<!-- </div> --> -<!-- <button type="button" class="collapsible">Klikni pro napovedu</button> --> - <div class="content"> + <div> + <button class="collapsible btn btn--fullwidth btn--grey-700 " type="button"> + <div class="btn__body "> Klikni pro napovedu</div> + </button> + <div class="content"> <p>{{ stage_current_id.stage_help }}</p> + </div> + <script> + var coll = document.getElementsByClassName("collapsible"); + var i; + + for (i = 0; i < coll.length; i++) { + coll[i].addEventListener("click", function() { + this.classList.toggle("active"); + var content = this.nextElementSibling; + if (content.style.maxHeight){ + content.style.maxHeight = null; + } else { + content.style.maxHeight = content.scrollHeight + "px"; + } + }); + } + </script> </div> -<script> -var coll = document.getElementsByClassName("collapsible"); -var i; - -for (i = 0; i < coll.length; i++) { - coll[i].addEventListener("click", function() { - this.classList.toggle("active"); - var content = this.nextElementSibling; - if (content.style.maxHeight){ - content.style.maxHeight = null; - } else { - content.style.maxHeight = content.scrollHeight + "px"; - } - }); -} -</script> + <hr> </br> - <div class="form-field "> - <div class="form-field__wrapper form-field__wrapper--shadowed"> - {{ passphrase_form.passphrase.errors }} - <label for="{{ passphrase_form.passphrase.id_for_label }}">Zadejte heslo pro pristup do dalsi urovne: </label> - {{ passphrase_form.passphrase }} - </div> - </div> - <div class="form-field "> - <div class="form-field__wrapper form-field__wrapper--shadowed"> - {{ passphrase_form.stage_current_urlhash.errors }} -{% comment %} - <label for="{{ passphrase_form.stage_current_urlhash.id_for_label }}">URLHASH: </label> -{% endcomment %} - <input id="id_stage_current_urlhash" type="hidden" name="stage_current_urlhash" required="" value="{{stage_current_id.stage_urlhash}}"> - </div> - </div> -{% comment %} - {{ passphrase_form.passphrase }}</br> - {{ passphrase_form.stage_current_urlhash }} -{% endcomment %} - +<!-- Form field--> + <div class="form-field "> + <div class="fieldWrapper"> + {{ passphrase_form.non_field_errors }} + {{ passphrase_form.errors }} + {{ passphrase_form.passphrase.errors }} + </div> + <div class="form-field__wrapper form-field__wrapper--shadowed"> + {{ passphrase_form.passphrase }} + <input id="id_stage_current_urlhash" type="hidden" name="stage_current_urlhash" required="" value="{{stage_current_id.stage_urlhash}}"> - <button class="btn btn--autowidth {{ classes }}"> - <div class="btn__body">Odeslat</div> - </button> -<!-- <input type="submit" value= 'Odeslat' name='passphrase_form'> --> - </form> + <button class="btn btn--autowidth "> + <div class="btn__body">Odeslat</div> + </button> + </div> + </div> +<!-- End Form field --> + </form> {% else %} - nejaky else + {% if not participant_sifrovacka.finished %} + {% comment %} + {% endcomment %} + <form action="{% url 'stage' sifrovacka_id stage_current_id.stage_urlhash %}" method="post"> + {% csrf_token %} + <button id="id_finish" class="btn btn--autowidth btn--hoveractive btn--to-grey-500" type="submit" value=True name="finish"> + <div class="btn__body ">Dokoncit</div> + </button> + </form> + {% else %} + <div class="alert alert--green-400"> + <span>Tuto sifrovacku mate dokoncenou.</span> + </div> + {% endif %} {% endif%} - {% comment %} - {% endcomment %} {% endif %} {% else %} <div class="alert alert--red-600"> <span> Stranka neni dostupna </span> </div> {% endif %} - </br> - </br> - </br> - Debug: +</div> {% endblock %} diff --git a/sifrovacka/views.py b/sifrovacka/views.py index 2907547..4cf0b27 100644 --- a/sifrovacka/views.py +++ b/sifrovacka/views.py @@ -1,9 +1,9 @@ -from django.shortcuts import get_object_or_404, render, redirect +from django.shortcuts import get_object_or_404, redirect, render # Create your views here. from django.db import IntegrityError from django.utils import timezone -from django.http import HttpResponse +from django.http import HttpResponse, Http404 from django.template import loader from django.contrib.auth import login,logout from .models import Sifrovacka, Stages, Participants @@ -12,18 +12,16 @@ from .models import Sifrovacka, Stages, Participants from .forms import PassphraseForm def stage(request, sifrovacka_id, stage_urlhash): -# print(dir(request.user.participants_set.values)) -# print(stage_urlhash) -# print(request.user.participants_set.values()) -# sifrovacka_current_stage = request.user.participants_set.values_list('id') passphrase_form = None sifrovacka_next_stage = None sifrovacka_current_stage_urlhash = None - sifrovacka_detail = Sifrovacka.objects.get(id = sifrovacka_id) + sifrovacka_detail = get_object_or_404(Sifrovacka,id = sifrovacka_id) sifrovacka_stages = Stages.objects.filter(sifrovacka__sifrovacka_name = sifrovacka_detail) sifrovacka_stage_count = sifrovacka_stages.count() stage_current_id = None + participant_sifrovacka = None last_stage = False + error_passphrase= False if request.user.is_authenticated: sifrovacka_all_user_current_stages= Participants.objects.filter(user = \ request.user).filter(sifrovacka_id = \ @@ -31,19 +29,22 @@ def stage(request, sifrovacka_id, stage_urlhash): for s in sifrovacka_all_user_current_stages: if s['sifrovacka_id'] == sifrovacka_id: print("---SIFROVACKA---") -# print(s['id']) tmp_stage_id = s['id'] sifrovacka_current_stage_urlhash = Participants.objects.get(id = \ tmp_stage_id) + tmp_participant_sifrovacka = Participants.objects.filter(user = \ + request.user).filter(sifrovacka_id = \ + sifrovacka_id) + participant_sifrovacka = Participants.objects.get(id = \ + tmp_participant_sifrovacka[0].id) if (sifrovacka_current_stage_urlhash.at_stage == stage_urlhash): print('hehe') - stage_current_id = Stages.objects.get(stage_urlhash = + stage_current_id = get_object_or_404(Stages,stage_urlhash = sifrovacka_current_stage_urlhash.at_stage) - #sifrovacka_current = Participants.objects.get(id = \ - # tmp_stage_id) print(stage_current_id) else: print('not same') + raise Http404 if stage_current_id.stage_number < sifrovacka_stage_count: if request.method == 'POST': @@ -56,9 +57,9 @@ def stage(request, sifrovacka_id, stage_urlhash): print("----BETWEEN STAGES----") tmp_next_stage_number = stage_current_id.stage_number + 1 print(tmp_next_stage_number) - sifrovacka_current = sifrovacka_stages.filter(stage_number = tmp_next_stage_number) - print(sifrovacka_current) - sifrovacka_next_stage = sifrovacka_current.get(stage_number = tmp_next_stage_number) + tmp_sifrovacka_current = sifrovacka_stages.filter(stage_number = tmp_next_stage_number) + print(tmp_sifrovacka_current) + sifrovacka_next_stage = tmp_sifrovacka_current.get(stage_number = tmp_next_stage_number) print(sifrovacka_next_stage) tmp_stage_next_urlhash = sifrovacka_next_stage.stage_urlhash tmp_stage_next_passphrase = sifrovacka_next_stage.stage_passphrase @@ -68,25 +69,62 @@ def stage(request, sifrovacka_id, stage_urlhash): if tmp_stage_next_passphrase == request.POST['passphrase']: print('correct passphrase') - setattr(sifrovacka_current_stage_urlhash, 'at_stage', tmp_stage_next_urlhash) - sifrovacka_current_stage_urlhash.save() - tmp_stage_url = request.path.split('/') - tmp_stage_url[3] = tmp_stage_next_urlhash - tmp_stage_next_url = "/".join(tmp_stage_url) - print(tmp_stage_next_url) - return redirect(tmp_stage_next_url) - + try: + setattr(sifrovacka_current_stage_urlhash, 'at_stage', tmp_stage_next_urlhash) + except IntegrityError as e: + print(e) + context = {"sifrovacka_id": sifrovacka_id, + "sifrovacka_detail": sifrovacka_detail, + "sifrovacka_stages": sifrovacka_stages, + "sifrovacka_stage_count": sifrovacka_stage_count, + "sifrovacka_current_stage_urlhash": sifrovacka_current_stage_urlhash, + "stage_current_id": stage_current_id, + "last_stage": last_stage, + "passphrase_form": passphrase_form, + "error_alreadysigned": e + } + return render(request, 'stage.html', context) + else: + sifrovacka_current_stage_urlhash.save() + tmp_stage_url = request.path.split('/') + tmp_stage_url[3] = tmp_stage_next_urlhash + tmp_stage_next_url = "/".join(tmp_stage_url) + print(tmp_stage_next_url) + return redirect(tmp_stage_next_url) + else: + error_passphrase = True + passphrase_form = PassphraseForm() print("ENDHASH") - else: print("---GET---") passphrase_form = PassphraseForm() - - else: - print("VETSI") + elif stage_current_id.stage_number == sifrovacka_stage_count: last_stage = True - + print("---Participant---") + print(participant_sifrovacka.finished) + if (sifrovacka_current_stage_urlhash.at_stage == stage_urlhash): + try: + if request.POST['finish']: + print("FINISH") + except KeyError as e: + pass + else: + print("not key") + try: + setattr(participant_sifrovacka, 'finished', True) + except IntegrityError as e: + print(e) + else: + print("xx") + participant_sifrovacka.save() + + + + +# else: +# print("VETSI") + print(last_stage) context = {"sifrovacka_id": sifrovacka_id, @@ -95,8 +133,10 @@ def stage(request, sifrovacka_id, stage_urlhash): "sifrovacka_stage_count": sifrovacka_stage_count, "sifrovacka_current_stage_urlhash": sifrovacka_current_stage_urlhash, "stage_current_id": stage_current_id, + "participant_sifrovacka": participant_sifrovacka, "last_stage": last_stage, - 'passphrase_form': passphrase_form + 'passphrase_form': passphrase_form, + "error_passphrase": error_passphrase } return render(request, 'stage.html', context) @@ -104,7 +144,8 @@ def detail(request, sifrovacka_id): # print(dir(request)) sifrovacka_current_stage_urlhash = None sifrovacka_current_id = None - sifrovacka_detail = Sifrovacka.objects.get(id = sifrovacka_id) + sifrovacka_detail = get_object_or_404(Sifrovacka,id = sifrovacka_id) + #sifrovacka_detail = Sifrovacka.objects.get(id = sifrovacka_id) sifrovacka_stages = Stages.objects.filter(sifrovacka__sifrovacka_name = sifrovacka_detail) sifrovacka_stage_count = sifrovacka_stages.count() if request.user.is_authenticated: @@ -118,14 +159,7 @@ def detail(request, sifrovacka_id): tmp_stage_id = s['id'] sifrovacka_current_stage_urlhash = Participants.objects.get(id = \ tmp_stage_id) -# if (sifrovacka_current_stage_urlhash.at_stage == stage_urlhash): -# print('hehe') sifrovacka_current_id = tmp_stage_id - #sifrovacka_current_id = Participants.objects.get(id = \ - # tmp_stage_id) - -# else: -# print('not same') context = {"sifrovacka_id": sifrovacka_id, "sifrovacka_detail": sifrovacka_detail, @@ -144,14 +178,14 @@ def home(request): participation_sifrovacky_list = Participants.objects.filter(user = request.user).order_by('sifrovacka_id') if request.method == 'POST': - if request.POST["signupsif"]: + if request.POST['signupsif']: - post_signupsif = request.POST["signupsif"] + post_signupsif = request.POST['signupsif'] print(post_signupsif) sifrovacka_detail = Sifrovacka.objects.get(id = post_signupsif) sifrovacka_stages = Stages.objects.filter(sifrovacka__sifrovacka_name = - sifrovacka_detail).filter(stage_number = "1") + sifrovacka_detail).filter(stage_number = "1") stage_current_urlhash = sifrovacka_stages[0].stage_urlhash print(stage_current_urlhash) try: @@ -161,8 +195,8 @@ def home(request): except IntegrityError as e: print(e) context = {"active_sifrovacky_list": all_sifrovacky_list, - "participation_sifrovacky_list": participation_sifrovacky_list, - "error_alreadysigned": e + "participation_sifrovacky_list": participation_sifrovacky_list, + "error_alreadysigned": e } return render(request, 'home.html', context) else: -- GitLab