Skip to content
Snippets Groups Projects
Commit 06ef451c authored by zdenek.kubala's avatar zdenek.kubala
Browse files

Merge branch 'stage_pass' into 'main'

Added stage web page

* adjusted models to reflect open stages for user and some
  fileds added (img, desc uuid passphare etc.)
* new view STAGE which now contains stages and allows to see
  only stage for user on which is currently user at

See merge request djz.88/sifrovacky!2
parents 49119af4 a1be9644
Branches
No related tags found
1 merge request!2Added stage web page
Showing with 546 additions and 92 deletions
# Generated by Django 3.2.3 on 2021-09-05 17:32
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('sifrovacka', '0025_alter_stages_stage_urlhash'),
]
operations = [
migrations.AlterField(
model_name='stages',
name='stage_urlhash',
field=models.CharField(default='43efd7700e6f11ecb08f2016b9b07b5b', max_length=32),
),
]
# Generated by Django 3.2.3 on 2021-09-06 09:19
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('sifrovacka', '0026_alter_stages_stage_urlhash'),
]
operations = [
migrations.AddField(
model_name='stages',
name='stage_help',
field=models.CharField(blank=True, max_length=200),
),
migrations.AlterField(
model_name='stages',
name='stage_urlhash',
field=models.CharField(default='7aa966760ef311eca0fc2016b9b07b5b', max_length=32),
),
]
# Generated by Django 3.2.3 on 2021-09-06 13:57
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('sifrovacka', '0027_auto_20210906_0919'),
]
operations = [
migrations.AddField(
model_name='participants',
name='finished',
field=models.BooleanField(default=False),
),
migrations.AlterField(
model_name='stages',
name='stage_urlhash',
field=models.CharField(default='5b00798c0f1a11ec936e2016b9b07b5b', max_length=32),
),
]
# 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),
),
]
...@@ -3,13 +3,31 @@ from django.db import models ...@@ -3,13 +3,31 @@ from django.db import models
# Create your models here. # Create your models here.
from django.conf import settings from django.conf import settings
from uuid import uuid1
from django.utils import encoding
from tinymce.models import HTMLField
def UserDirectoryPath(instance, filename):
try:
# file will be uploaded to MEDIA_ROOT/sifrovacka_<id>/stage_<id>/<filename>
return 'sifrovacka_{0}/stage_{1}/{2}'.format(instance.sifrovacka_id,
instance.stage_number,
encoding.smart_str(filename, encoding='utf-8', strings_only = True))
except:
pass
finally:
# file will be uploaded to MEDIA_ROOT/sifrovacka_<id>/<filename>
return 'sifrovacka_{0}/{1}'.format(instance.id,
encoding.smart_str(filename, encoding='utf-8', strings_only = True))
class Sifrovacka(models.Model): class Sifrovacka(models.Model):
''' '''
model which describes sifrovacka model which describes sifrovacka
''' '''
sifrovacka_name = models.CharField(max_length=200) sifrovacka_name = models.CharField(max_length=200)
sifrovacka_description = HTMLField()
#sifrovacka_description = models.CharField(max_length=2000)
sifrovacka_img = models.ImageField(blank=True, upload_to=UserDirectoryPath)
#pub_date = models.DateField() #pub_date = models.DateField()
pub_date = models.DateTimeField('date published') pub_date = models.DateTimeField('date published')
startdate_sifrovacka = models.DateField() startdate_sifrovacka = models.DateField()
...@@ -19,23 +37,20 @@ class Sifrovacka(models.Model): ...@@ -19,23 +37,20 @@ class Sifrovacka(models.Model):
return self.sifrovacka_name return self.sifrovacka_name
class Stages(models.Model): class Stages(models.Model):
''' '''
model which describes how many stages are in particular sifrovacka model which describes how many stages are in particular sifrovacka
''' '''
stage_name = models.CharField(max_length=200)
sifrovacka = models.ForeignKey(Sifrovacka, on_delete=models.CASCADE) sifrovacka = models.ForeignKey(Sifrovacka, on_delete=models.CASCADE)
stage_number = models.IntegerField() stage_number = models.IntegerField()
# if not stage_name_text models: stage_name = models.CharField(max_length=80)
# stage_name = getattr(Stages, sifrovacka_name) stage_description = HTMLField()
# "-" + getattr(Stages, stage_number)) stage_help = models.CharField(max_length=200, blank=True)
# else: #sifrovacka_description = models.CharField(max_length=2000)
# stage_name = stage_name_text stage_passphrase = models.CharField(max_length=30,
# votes = models.IntegerField(default=0) default='hesl0Sifrovacka')
# startdate_stages = models.DateField() stage_img = models.ImageField(blank=True, upload_to=UserDirectoryPath)
# enddate_stages= models.DateField() stage_urlhash = models.CharField(max_length=32, default=uuid1().hex)
def __str__(self): def __str__(self):
return str(self.sifrovacka) + " - Stage " + str(self.stage_number) return str(self.sifrovacka) + " - Stage " + str(self.stage_number)
...@@ -44,14 +59,16 @@ class Stages(models.Model): ...@@ -44,14 +59,16 @@ class Stages(models.Model):
class Meta: class Meta:
unique_together = [['stage_number', 'sifrovacka']] unique_together = [['stage_number', 'sifrovacka']]
class Participants(models.Model): class Participants(models.Model):
''' '''
table which connects sifrovacka with users who participate table which connects sifrovacka with users who participate
''' '''
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete = models.CASCADE) user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete = models.CASCADE)
sifrovacka = models.ForeignKey(Sifrovacka, on_delete = models.CASCADE) sifrovacka = models.ForeignKey(Sifrovacka, on_delete = models.CASCADE)
Inactive = models.BooleanField(default = False) #at_stage = models.IntegerField(default=1)
at_stage = models.CharField(max_length=32,default='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
inactive = models.BooleanField(default = False)
finished = models.BooleanField(default = False)
def __str__(self): def __str__(self):
return str(self.user) + " - " + str(self.sifrovacka) return str(self.user) + " - " + str(self.sifrovacka)
......
{% extends "base.html" %}
{% load static %}
{% block content %}
<div class="alert alert--red-600">
<span> Stranka nenalezena. </span>
</div>
{% endblock %}
{% 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>Omlouvme se, ale nastala <b>chyba serveru</b>. </br>Pokud se chyba stala pi bn operaci, prosm kontaktujte sprvce a popite mu situaci vetn screenshotu, kontakt je ne. </span>
</div>
{% endblock %}
{% 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 %}
{% load static %}
<!doctype html> <!doctype html>
{% load static %}
<html lang="cs"> <html lang="cs">
<head> <head>
<!-- Meta --> <!-- Meta -->
...@@ -31,12 +31,35 @@ ...@@ -31,12 +31,35 @@
text-decoration: none !important; text-decoration: none !important;
} }
</style> </style>
<style type="text/css">
.collapsible {
cursor: pointer;
padding: 18px;
width: 100%;
border: none;
text-align: center;
outline: none;
font-size: 15px;
}
.active, .collapsible:hover {
background-color: #555;
}
.content {
padding: 0 18px;
overflow: hidden;
background-color: #f0f0f0;
max-height: 0;
transition: max-height 0.2s ease-out;
}
</style>
{% if settings.SIFROVACKA_ENV == "prod" and settings.ONBOARDING_MATOMO_ID %} {% if settings.SIFROVACKA_ENV == "prod" and settings.ONBOARDING_MATOMO_ID %}
{% include "shared/matomo_snippet.html" with matomo_id=settings.ONBOARDING_MATOMO_ID %} {% include "shared/matomo_snippet.html" with matomo_id=settings.ONBOARDING_MATOMO_ID %}
{% endif %} {% endif %}
<title>Šifrovačky</title> <title>Šifrovačka</title>
</head> </head>
<body> <body>
...@@ -51,7 +74,7 @@ ...@@ -51,7 +74,7 @@
<div class="navbar__brand my-4 flex items-center lg:pr-8 lg:my-0"> <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> <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"> <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 %} {% if settings.SIFROVACKA_ENV == "dev" %}<sup class="text-cyan-100">(DEV)</sup>{% endif %}
</span> </span>
</div> </div>
......
{% extends "base.html" %} {% extends "base.html" %}
{% block content %} {% block content %}
<div class="container container--default">
{% if sifrovacky_list %} {% if sifrovacky_list %}
{% comment %} <ul>
{% if request.user.is_authenticated %} <h1 class="head-alt-md">Aktivni sifrovacky:</h1>
{% for sifrovacka in available_sifrovacky_list %} {% for sifrovacka in sifrovacky_list %}
{% endcomment %} <li><a href={% url 'detail' sifrovacka.id %}>{{ sifrovacka.sifrovacka_name }}</a></li>
<ul> {% endfor %}
<p> <b>Aktivni sifrovacky: </b> </p> {% else %}
{% for sifrovacka in sifrovacky_list %} {% if not request.user.is_authenticated %}
<li><a href={% url 'detail' sifrovacka.id %}>{{ sifrovacka.sifrovacka_name }}</a></li> <div class="alert alert--grey-125">
{% endfor %} <span>Je nam lito, ale zadne sifrovacky nejsou aktualne dostupne.</span>
</ul> </div>
{% if request.user.is_authenticated %} {% else %}
<ul> <h1 class="head-alt-md">Aktivni sifrovacky:</h1>
<p> <b>Prihlasene sifrovacky: </b> </p> <p>Je nam lito, ale zadne sifrovacky nejsou aktualne dostupne.</p>
{% for sifrovacka in user_active_sifrovacky %} {% endif %}
<li><a href={% url 'detail' sifrovacka.sifrovacka.id %}>{{ sifrovacka }}</a></li> {% endif %}
{% endfor %} </ul>
</ul>
{% endif %} {% if request.user.is_authenticated %}
<ul> <ul>
<p> <b>Ukoncene sifrovacky: </b> </p> <h1 class="head-alt-base">Prihlasene sifrovacky:</h1>
{% for sifrovacka in archived_sifrovacky %} {% if user_active_sifrovacky %}
<li><a href={% url 'detail' sifrovacka.id %}>{{ sifrovacka.sifrovacka_name }}</a></li> {% for sifrovacka in user_active_sifrovacky %}
{% endfor %} <li><a href={% url 'detail' sifrovacka.sifrovacka.id %}>{{ sifrovacka }}</a></li>
</ul> {% 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 %} {% comment %}
{% else %} {% else %}
<p>Zadne sifrovacky nejsou aktivni nebo se ucastnite vsech dostupnych.</p> <p>Zadne sifrovacky nejsou aktivni nebo se ucastnite vsech dostupnych.</p>
{% endif %} {% endif %}
{% endcomment %}
{% else %} {% else %}
<p>Je nam lito, ale zadne sifrovacky nejsou aktualne dostupne.</p> <p>Je nam lito, ale zadne sifrovacky nejsou aktualne dostupne.</p>
{% endif %} {% endif %}
{% endcomment %}
</div>
{% endblock %} {% endblock %}
{% extends "base.html" %} {% extends "base.html" %}
{% load static %}
{% block content %} {% block content %}
<p> Toto je detail sifrovacky se jmenem: <b>{{sifrovacka_detail}} </b> a id: {{sifrovacka_id}}. </p> <div class="container container--default">
</br> <h1 class="head-alt-md">{{sifrovacka_detail}}</h1>
<p> Pocet ukolu: <b> {{ sifrovacka_stage_count }} </b> </br> </br>
Obtiznost: NONE</br> <p> Pocet ukolu: <b> {{ sifrovacka_stage_count }} </b> </br>
Casova narocnost: NONE</p> <!--
Obtiznost: NONE</br>
Casova narocnost: NONE</p>
-->
</br> <h1 class="head-alt-sm">Pruvodni slovo</h1>
{% if request.user.is_authenticated %} <hr>
<form action="{% url 'home' %}" method="post"> </br>
{% csrf_token %} {{ sifrovacka_detail.sifrovacka_description | safe }}
{% comment %} {% if sifrovacka_detail.sifrovacka_img %}
<form action="{% url 'sifrovacka:home' sifrovacka.id %}" method="post"> <figure class="figure">
{% csrf_token %} <img src=" {% get_media_prefix %}{{sifrovacka_detail.sifrovacka_img}}" alt="16x9 Image">
<button type="submit" value=signupsif name='signupsif'>Prihlasit se k sifrovacce</button> <figcaption>
<button type="submit" value=signupsif onclick="location.href='{% url 'home' %}'" name='_signupsif'>Prihlasit se k sifrovacce</button> Autor: Junius Koolen CC-BY-SA
<fieldset> </figcaption>
<legend><h1>{{ sifrovacka_detail }}</h1></legend> </figure>
{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %} {% endif%}
{% for choice in question.choice_set.all %} <hr>
<input type="radio" name="signupsif" id="signupsif" value="{{ sifrovacka_id }}"> {% if request.user.is_authenticated %}
<label for="signupsif"> Začít šifrovačku</label><br> {% if not sifrovacka_stage_count == 0 %}
{% endfor %} {% if not sifrovacka_current_stage_urlhash %}
</fieldset> <form action="{% url 'home' %}" method="post">
<input type="submit" name="signupsif" value={{ sifrovacka_id }}> {% csrf_token %}
{% endcomment %} <button class="btn btn--autowidth btn--hoveractive btn--to-grey-500" type="submit" value={{ sifrovacka_id }} name='signupsif'>
<button type="submit" value={{ sifrovacka_id }} name='signupsif'>Prihlasit se k sifrovacce</button> <div class="btn__body ">Prihlasit se k sifrovacce</div>
</form> </button>
{% endif %} </form>
</br> {% else %}
</br> <h1 class="head-alt-sm">Vase Aktualni uroven</h1>
</br> {% for stage in sifrovacka_stages %}
Debug: {% if sifrovacka_current_stage_urlhash.at_stage == stage.stage_urlhash %}
<div> <li><a href={% url 'stage' stage.sifrovacka_id stage.stage_urlhash %}>{{ stage }}</a></li>
{% for stage in sifrovacka_stages %} {% endif %}
{{ stage }}</br> {% endfor %}
{% endfor %} {% endif %}
</div> {% 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 %}
<li><a href={% url 'stage' stage.sifrovacka_id stage.stage_urlhash %}>{{ stage }}</a></li>
{% endfor %}
</br>
</div>
{% endcomment %}
{% endblock %} {% endblock %}
{% extends "base.html" %}
{% load static %}
{% block content %}
<div class="container container--default">
{% if stage_current_id %}
{% if request.user.is_authenticated %}
<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">
{% 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 %}
<form action="{% url 'stage' sifrovacka_id stage_current_id.stage_urlhash %}" method="post">
{% csrf_token %}
</br>
</br>
<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>
<hr>
</br>
<!-- 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 ">
<div class="btn__body">Odeslat</div>
</button>
</div>
</div>
<!-- End Form field -->
</form>
{% 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%}
{% endif %}
{% else %}
<div class="alert alert--red-600">
<span> Stranka neni dostupna </span>
</div>
{% endif %}
</div>
{% endblock %}
from django.urls import include,path from django.urls import include,path,re_path
from django.conf import settings
from django.conf.urls.static import static
from . import views from . import views
...@@ -8,8 +10,13 @@ urlpatterns = [ ...@@ -8,8 +10,13 @@ urlpatterns = [
path('accounts/', include('django.contrib.auth.urls')), path('accounts/', include('django.contrib.auth.urls')),
# the 'name' value as called by the {% url %} template tag # the 'name' value as called by the {% url %} template tag
path('<int:sifrovacka_id>/', views.detail, name='detail'), path('<int:sifrovacka_id>/', views.detail, name='detail'),
path('<int:sifrovacka_id>/<slug:stage_urlhash>/', views.stage, name='stage'),
# home page # home page
path('home/', views.home, name='home'), path('home/', views.home, name='home'),
# rich test editor
re_path(r'^tinymce/', include('tinymce.urls')),
# / # /
path('', views.index, name='index'), path('', views.index, name='index'),
] ]
# ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
from django.shortcuts import get_object_or_404, render from django.shortcuts import get_object_or_404, redirect, render
# Create your views here. # Create your views here.
from django.db import IntegrityError from django.db import IntegrityError
from django.utils import timezone from django.utils import timezone
from django.http import HttpResponse from django.http import HttpResponse, Http404
from django.template import loader from django.template import loader
from django.contrib.auth import login,logout from django.contrib.auth import login,logout
from .models import Sifrovacka, Stages, Participants from .models import Sifrovacka, Stages, Participants
# forms
from .forms import PassphraseForm
def stage(request, sifrovacka_id, stage_urlhash):
passphrase_form = None
sifrovacka_next_stage = None
sifrovacka_current_stage_urlhash = None
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 = \
sifrovacka_id).values('sifrovacka_id','id')
for s in sifrovacka_all_user_current_stages:
if s['sifrovacka_id'] == sifrovacka_id:
print("---SIFROVACKA---")
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 = get_object_or_404(Stages,stage_urlhash =
sifrovacka_current_stage_urlhash.at_stage)
print(stage_current_id)
else:
print('not same')
raise Http404
if stage_current_id.stage_number < sifrovacka_stage_count:
if request.method == 'POST':
print("---POST---")
passphrase_form = PassphraseForm(request.POST)
if passphrase_form.is_valid():
print(request.path)
print(dir(request))
print("----BETWEEN STAGES----")
tmp_next_stage_number = stage_current_id.stage_number + 1
print(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
print(tmp_next_stage_number)
print(tmp_stage_next_urlhash)
print(tmp_stage_next_passphrase)
if tmp_stage_next_passphrase == request.POST['passphrase']:
print('correct passphrase')
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()
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,
"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,
"participant_sifrovacka": participant_sifrovacka,
"last_stage": last_stage,
'passphrase_form': passphrase_form,
"error_passphrase": error_passphrase
}
return render(request, 'stage.html', context)
def detail(request, sifrovacka_id): def detail(request, sifrovacka_id):
sifrovacka_detail = Sifrovacka.objects.get(id = sifrovacka_id) # print(dir(request))
sifrovacka_current_stage_urlhash = None
sifrovacka_current_id = None
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_stages = Stages.objects.filter(sifrovacka__sifrovacka_name = sifrovacka_detail)
sifrovacka_stage_count = sifrovacka_stages.count() sifrovacka_stage_count = sifrovacka_stages.count()
if request.user.is_authenticated:
sifrovacka_all_user_current_stages= Participants.objects.filter(user = \
request.user).filter(sifrovacka_id = \
sifrovacka_id).values('sifrovacka_id','id')
for s in sifrovacka_all_user_current_stages:
if s['sifrovacka_id'] == sifrovacka_id:
print("---SIFROVACKA---")
# print(s['at_stage'])
tmp_stage_id = s['id']
sifrovacka_current_stage_urlhash = Participants.objects.get(id = \
tmp_stage_id)
sifrovacka_current_id = tmp_stage_id
context = {"sifrovacka_id": sifrovacka_id, context = {"sifrovacka_id": sifrovacka_id,
"sifrovacka_detail": sifrovacka_detail, "sifrovacka_detail": sifrovacka_detail,
"sifrovacka_stages": sifrovacka_stages, "sifrovacka_stages": sifrovacka_stages,
"sifrovacka_stage_count": sifrovacka_stage_count} "sifrovacka_stage_count": sifrovacka_stage_count,
"sifrovacka_current_id": sifrovacka_current_id,
"sifrovacka_current_stage_urlhash":
sifrovacka_current_stage_urlhash
}
return render(request, 'sifrovacka.html', context) return render(request, 'sifrovacka.html', context)
def home(request): def home(request):
...@@ -25,21 +177,28 @@ def home(request): ...@@ -25,21 +177,28 @@ def home(request):
if request.user.is_authenticated: if request.user.is_authenticated:
participation_sifrovacky_list = Participants.objects.filter(user = participation_sifrovacky_list = Participants.objects.filter(user =
request.user).order_by('sifrovacka_id') request.user).order_by('sifrovacka_id')
# available_sifrovacky_list = all_sifrovacky_list.difference(
#participation_sifrovacky_list)
if request.method == 'POST': 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) 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")
stage_current_urlhash = sifrovacka_stages[0].stage_urlhash
print(stage_current_urlhash)
try: try:
p = Participants.objects.create(user=request.user, p = Participants.objects.create(user=request.user,
sifrovacka_id=post_signupsif) sifrovacka_id=post_signupsif,
at_stage=stage_current_urlhash )
except IntegrityError as e: except IntegrityError as e:
print(e)
context = {"active_sifrovacky_list": all_sifrovacky_list, context = {"active_sifrovacky_list": all_sifrovacky_list,
"participation_sifrovacky_list": participation_sifrovacky_list, "participation_sifrovacky_list": participation_sifrovacky_list,
"error_alreadysigned": e "error_alreadysigned": e
} }
return render(request, 'home.html', context)
else: else:
p.save() p.save()
else: else:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment