diff --git a/.gitignore b/.gitignore index b0af3886860594515460f1df3d25c624bed52200..cb6d38b4f9984f617b359064ea46e0ba964cd909 100644 --- a/.gitignore +++ b/.gitignore @@ -104,4 +104,7 @@ GitHub.sublime-settings !.vscode/launch.json !.vscode/extensions.json .history + +# Custom # db.sqlite3 +media/* diff --git a/sifrovacka/migrations/0012_auto_20210904_1228.py b/sifrovacka/migrations/0012_auto_20210904_1228.py new file mode 100644 index 0000000000000000000000000000000000000000..9c811965ad15ec6bc596218f3e30a2c074564a6d --- /dev/null +++ b/sifrovacka/migrations/0012_auto_20210904_1228.py @@ -0,0 +1,28 @@ +# Generated by Django 3.2.3 on 2021-09-04 12:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sifrovacka', '0011_alter_sifrovacka_pub_date'), + ] + + operations = [ + migrations.AddField( + model_name='stages', + name='stage_img', + field=models.ImageField(blank=True, upload_to='UserDirectoryPath'), + ), + migrations.AddField( + model_name='stages', + name='stage_passphrase', + field=models.CharField(default='hesl0Sifrovacka', max_length=30), + ), + migrations.AlterField( + model_name='stages', + name='stage_name', + field=models.CharField(max_length=80), + ), + ] diff --git a/sifrovacka/migrations/0013_stages_stage_urlhash.py b/sifrovacka/migrations/0013_stages_stage_urlhash.py new file mode 100644 index 0000000000000000000000000000000000000000..5e52464d3fb7037f1f54b3e5605bddb3997ffe92 --- /dev/null +++ b/sifrovacka/migrations/0013_stages_stage_urlhash.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.3 on 2021-09-04 12:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sifrovacka', '0012_auto_20210904_1228'), + ] + + operations = [ + migrations.AddField( + model_name='stages', + name='stage_urlhash', + field=models.CharField(default='5f2500a80d7d11ec9b142016b9b07b5b', max_length=32), + ), + ] diff --git a/sifrovacka/migrations/0014_auto_20210904_1318.py b/sifrovacka/migrations/0014_auto_20210904_1318.py new file mode 100644 index 0000000000000000000000000000000000000000..1db0ed6ab50e6a08ea2ec0d279317d205b5fce0a --- /dev/null +++ b/sifrovacka/migrations/0014_auto_20210904_1318.py @@ -0,0 +1,34 @@ +# Generated by Django 3.2.3 on 2021-09-04 13:18 + +from django.db import migrations, models +import sifrovacka.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sifrovacka', '0013_stages_stage_urlhash'), + ] + + operations = [ + migrations.RenameField( + model_name='participants', + old_name='Inactive', + new_name='inactive', + ), + migrations.AddField( + model_name='participants', + name='at_stage', + field=models.IntegerField(default=1), + ), + migrations.AlterField( + model_name='stages', + name='stage_img', + field=models.ImageField(blank=True, upload_to=sifrovacka.models.UserDirectoryPath), + ), + migrations.AlterField( + model_name='stages', + name='stage_urlhash', + field=models.CharField(default='a3c350e80d8211ec9b5f2016b9b07b5b', max_length=32), + ), + ] diff --git a/sifrovacka/migrations/0015_auto_20210904_1328.py b/sifrovacka/migrations/0015_auto_20210904_1328.py new file mode 100644 index 0000000000000000000000000000000000000000..d5fcbcba0326390ae81ba5f69dee16153db9e969 --- /dev/null +++ b/sifrovacka/migrations/0015_auto_20210904_1328.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.3 on 2021-09-04 13:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sifrovacka', '0014_auto_20210904_1318'), + ] + + operations = [ + migrations.AddField( + model_name='stages', + name='stage_description', + field=models.CharField(default='', max_length=500), + ), + migrations.AlterField( + model_name='stages', + name='stage_urlhash', + field=models.CharField(default='fcb0adee0d8311ecb18b2016b9b07b5b', max_length=32), + ), + ] diff --git a/sifrovacka/migrations/0016_auto_20210904_1328.py b/sifrovacka/migrations/0016_auto_20210904_1328.py new file mode 100644 index 0000000000000000000000000000000000000000..cd9b6f548ccf62111e893e6ff3067524447fff41 --- /dev/null +++ b/sifrovacka/migrations/0016_auto_20210904_1328.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.3 on 2021-09-04 13:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sifrovacka', '0015_auto_20210904_1328'), + ] + + operations = [ + migrations.AlterField( + model_name='stages', + name='stage_description', + field=models.CharField(max_length=500), + ), + migrations.AlterField( + model_name='stages', + name='stage_urlhash', + field=models.CharField(default='0582c6140d8411ec9c962016b9b07b5b', max_length=32), + ), + ] diff --git a/sifrovacka/migrations/0017_alter_stages_stage_urlhash.py b/sifrovacka/migrations/0017_alter_stages_stage_urlhash.py new file mode 100644 index 0000000000000000000000000000000000000000..ee146bc37273d52285a4ca6e6b90e4941f9a9049 --- /dev/null +++ b/sifrovacka/migrations/0017_alter_stages_stage_urlhash.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.3 on 2021-09-04 13:29 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sifrovacka', '0016_auto_20210904_1328'), + ] + + operations = [ + migrations.AlterField( + model_name='stages', + name='stage_urlhash', + field=models.CharField(default='2aa2950a0d8411ecb3ad2016b9b07b5b', max_length=32), + ), + ] diff --git a/sifrovacka/migrations/0018_alter_stages_stage_urlhash.py b/sifrovacka/migrations/0018_alter_stages_stage_urlhash.py new file mode 100644 index 0000000000000000000000000000000000000000..65e7543b338e63121c7f6b030873f6ef41ab5ec9 --- /dev/null +++ b/sifrovacka/migrations/0018_alter_stages_stage_urlhash.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.3 on 2021-09-04 18:16 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sifrovacka', '0017_alter_stages_stage_urlhash'), + ] + + operations = [ + migrations.AlterField( + model_name='stages', + name='stage_urlhash', + field=models.CharField(default='2d64fb520dac11ecb4c92016b9b07b5b', max_length=32), + ), + ] diff --git a/sifrovacka/migrations/0019_auto_20210904_1913.py b/sifrovacka/migrations/0019_auto_20210904_1913.py new file mode 100644 index 0000000000000000000000000000000000000000..39d67bfd6636730bea8129353927a3f09a283c3a --- /dev/null +++ b/sifrovacka/migrations/0019_auto_20210904_1913.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.3 on 2021-09-04 19:13 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sifrovacka', '0018_alter_stages_stage_urlhash'), + ] + + operations = [ + migrations.AlterField( + model_name='participants', + name='at_stage', + field=models.CharField(default='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', max_length=32), + ), + migrations.AlterField( + model_name='stages', + name='stage_urlhash', + field=models.CharField(default='3b1487ba0db411ecae702016b9b07b5b', max_length=32), + ), + ] diff --git a/sifrovacka/models.py b/sifrovacka/models.py index 6cf73731103779e0a53df9054db62b9f8e01c4eb..f7f5682004f698905f0aff68f5add4a2b8aa2d97 100644 --- a/sifrovacka/models.py +++ b/sifrovacka/models.py @@ -3,7 +3,14 @@ from django.db import models # Create your models here. from django.conf import settings +from uuid import uuid1 +from django.utils import encoding +def UserDirectoryPath(instance, filename): + # file will be uploaded to MEDIA_ROOT/sifrovacka_<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)) class Sifrovacka(models.Model): ''' @@ -19,15 +26,19 @@ class Sifrovacka(models.Model): return self.sifrovacka_name - - class Stages(models.Model): ''' 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) stage_number = models.IntegerField() + stage_name = models.CharField(max_length=80) + stage_description = models.CharField(max_length=500) + stage_passphrase = models.CharField(max_length=30, + default='hesl0Sifrovacka') + stage_img = models.ImageField(blank=True, upload_to=UserDirectoryPath) + stage_urlhash = models.CharField(max_length=32, default=uuid1().hex) + # if not stage_name_text models: # stage_name = getattr(Stages, sifrovacka_name) # "-" + getattr(Stages, stage_number)) @@ -44,14 +55,15 @@ class Stages(models.Model): class Meta: unique_together = [['stage_number', 'sifrovacka']] - class Participants(models.Model): ''' table which connects sifrovacka with users who participate ''' user = models.ForeignKey(settings.AUTH_USER_MODEL, 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) def __str__(self): return str(self.user) + " - " + str(self.sifrovacka) diff --git a/sifrovacka/templates/sifrovacka.html b/sifrovacka/templates/sifrovacka.html index bb322a6288a6c565770dbf452259e7a227249ce0..6796278267f403db8c10bf7f518f7f148c6b141b 100644 --- a/sifrovacka/templates/sifrovacka.html +++ b/sifrovacka/templates/sifrovacka.html @@ -11,6 +11,18 @@ {% if request.user.is_authenticated %} <form action="{% url 'home' %}" method="post"> {% csrf_token %} +<button type="submit" value={{ sifrovacka_id }} name='signupsif'>Prihlasit se k sifrovacce</button> +</form> +{% endif %} +</br> +</br> +</br> +Debug: +<div> +{% for stage in sifrovacka_stages %} + {{ stage }}</br> +{% endfor %} +</div> {% comment %} <form action="{% url 'sifrovacka:home' sifrovacka.id %}" method="post"> {% csrf_token %} @@ -26,16 +38,4 @@ </fieldset> <input type="submit" name="signupsif" value={{ sifrovacka_id }}> {% endcomment %} -<button type="submit" value={{ sifrovacka_id }} name='signupsif'>Prihlasit se k sifrovacce</button> -</form> -{% endif %} -</br> -</br> -</br> -Debug: -<div> -{% for stage in sifrovacka_stages %} - {{ stage }}</br> -{% endfor %} -</div> {% endblock %} diff --git a/sifrovacka/templates/stage.html b/sifrovacka/templates/stage.html new file mode 100644 index 0000000000000000000000000000000000000000..4c153e6c4094f3347ee3986d37bab2bc144f43f5 --- /dev/null +++ b/sifrovacka/templates/stage.html @@ -0,0 +1,16 @@ +{% extends "sifrovacka.html" %} +{% block content %} + {% if sifrovacka_current %} + {% if request.user.is_authenticated %} + {{ sifrovacka_current }} - {{ sifrovacka_current.at_stage }} + {% endif %} + {% else %} + <div class="alert alert--red-600"> + <span> Stranka neni dostupna </span> + </div> + {% endif %} + </br> + </br> + </br> + Debug: +{% endblock %} diff --git a/sifrovacka/views.py b/sifrovacka/views.py index 5eb47d6f78c3e8e7483f338daa68f5d943ac83ac..299ece6d650557ebf4128748af023217ff0c2cb5 100644 --- a/sifrovacka/views.py +++ b/sifrovacka/views.py @@ -9,7 +9,49 @@ from django.contrib.auth import login,logout from .models import Sifrovacka, Stages, Participants +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') + sifrovacka_current = None + 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: +# sifrovacka_current = Participants.objects.filter(user = \ +# request.user).filter(sifrovacka_id = +# sifrovacka_id) + 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("---AA---") + # print(s['at_stage']) + 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 = Participants.objects.get(id = \ + tmp_stage_id) + else: + print('not same') +# else: +# sifrovacka_current = None + + print(sifrovacka_current) + context = {"sifrovacka_id": sifrovacka_id, + "sifrovacka_detail": sifrovacka_detail, + "sifrovacka_stages": sifrovacka_stages, + "sifrovacka_stage_count": sifrovacka_stage_count, + "sifrovacka_current": sifrovacka_current + } + return render(request, 'stage.html', context) + def detail(request, sifrovacka_id): + print(request) sifrovacka_detail = Sifrovacka.objects.get(id = sifrovacka_id) sifrovacka_stages = Stages.objects.filter(sifrovacka__sifrovacka_name = sifrovacka_detail) sifrovacka_stage_count = sifrovacka_stages.count() @@ -25,8 +67,6 @@ def home(request): if request.user.is_authenticated: participation_sifrovacky_list = Participants.objects.filter(user = request.user).order_by('sifrovacka_id') - # available_sifrovacky_list = all_sifrovacky_list.difference( - #participation_sifrovacky_list) if request.method == 'POST': if request.POST["signupsif"]: post_signupsif = request.POST["signupsif"] @@ -35,11 +75,12 @@ def home(request): p = Participants.objects.create(user=request.user, sifrovacka_id=post_signupsif) except IntegrityError as e: - + print(e) context = {"active_sifrovacky_list": all_sifrovacky_list, "participation_sifrovacky_list": participation_sifrovacky_list, "error_alreadysigned": e } + return render(request, 'home.html', context) else: p.save() else: