diff --git a/requirements.txt b/requirements.txt index 83d66431530342db426469989fa4a293a3928085..e245cfaee3958c44f943b0d846424917a0c01ca1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,9 @@ appdirs==1.4.4 asgiref==3.3.4 asn1crypto==1.4.0 backcall==0.2.0 +certifi==2021.5.30 cffi==1.14.6 +charset-normalizer==2.0.4 confusable-homoglyphs==3.2.0 cryptography==3.3.2 dbus-python==1.2.16 @@ -10,8 +12,10 @@ decorator==5.0.9 distlib==0.3.1 Django==3.2.3 django-registration==3.2 +django-tinymce==3.3.0 entrypoints==0.3 filelock==3.0.12 +idna==3.2 importlib-metadata==1.6.0 ipython==7.27.0 ipython-genutils==0.2.0 @@ -27,6 +31,7 @@ more-itertools==4.2.0 parso==0.8.2 pexpect==4.8.0 pickleshare==0.7.5 +Pillow==8.3.2 prompt-toolkit==3.0.20 ptyprocess==0.7.0 pycairo==1.20.1 @@ -38,11 +43,13 @@ PyGObject==3.38.0 pytz==2021.1 pyxdg==0.27 PyYAML==5.3.1 +requests==2.26.0 SecretStorage==3.3.1 six==1.16.0 sqlparse==0.4.1 traitlets==5.0.5 typing-extensions==3.10.0.0 +urllib3==1.26.6 virtualenv==20.4.0+ds wcwidth==0.2.5 xdg==5 diff --git a/sifrovacka/migrations/0022_auto_20210905_1653.py b/sifrovacka/migrations/0022_auto_20210905_1653.py new file mode 100644 index 0000000000000000000000000000000000000000..4baf52cf4a1bc4e0d62c5828391967c13250ad0e --- /dev/null +++ b/sifrovacka/migrations/0022_auto_20210905_1653.py @@ -0,0 +1,28 @@ +# Generated by Django 3.2.3 on 2021-09-05 16:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sifrovacka', '0021_auto_20210905_0835'), + ] + + operations = [ + migrations.AlterField( + model_name='sifrovacka', + name='sifrovacka_description', + field=models.CharField(max_length=800), + ), + migrations.AlterField( + model_name='stages', + name='stage_description', + field=models.CharField(max_length=800), + ), + migrations.AlterField( + model_name='stages', + name='stage_urlhash', + field=models.CharField(default='baacf3800e6911eca1db2016b9b07b5b', max_length=32), + ), + ] diff --git a/sifrovacka/migrations/0023_auto_20210905_1654.py b/sifrovacka/migrations/0023_auto_20210905_1654.py new file mode 100644 index 0000000000000000000000000000000000000000..c84bfc6e24b37e25913d52a4f049026a5efc516e --- /dev/null +++ b/sifrovacka/migrations/0023_auto_20210905_1654.py @@ -0,0 +1,28 @@ +# Generated by Django 3.2.3 on 2021-09-05 16:54 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sifrovacka', '0022_auto_20210905_1653'), + ] + + operations = [ + migrations.AlterField( + model_name='sifrovacka', + name='sifrovacka_description', + field=models.CharField(max_length=2000), + ), + migrations.AlterField( + model_name='stages', + name='stage_description', + field=models.CharField(max_length=2000), + ), + migrations.AlterField( + model_name='stages', + name='stage_urlhash', + field=models.CharField(default='f70c86ec0e6911ecb6a22016b9b07b5b', max_length=32), + ), + ] diff --git a/sifrovacka/migrations/0024_auto_20210905_1719.py b/sifrovacka/migrations/0024_auto_20210905_1719.py new file mode 100644 index 0000000000000000000000000000000000000000..4fc421d8a01f5d5132038ebedc8358ca929370da --- /dev/null +++ b/sifrovacka/migrations/0024_auto_20210905_1719.py @@ -0,0 +1,29 @@ +# Generated by Django 3.2.3 on 2021-09-05 17:19 + +from django.db import migrations, models +import tinymce.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sifrovacka', '0023_auto_20210905_1654'), + ] + + operations = [ + migrations.AlterField( + model_name='sifrovacka', + name='sifrovacka_description', + field=tinymce.models.HTMLField(), + ), + migrations.AlterField( + model_name='stages', + name='stage_description', + field=tinymce.models.HTMLField(), + ), + migrations.AlterField( + model_name='stages', + name='stage_urlhash', + field=models.CharField(default='60bf43560e6d11ecba282016b9b07b5b', max_length=32), + ), + ] diff --git a/sifrovacka/migrations/0025_alter_stages_stage_urlhash.py b/sifrovacka/migrations/0025_alter_stages_stage_urlhash.py new file mode 100644 index 0000000000000000000000000000000000000000..834eaab1a20e6ad3772d52a4e884e726461ed1fc --- /dev/null +++ b/sifrovacka/migrations/0025_alter_stages_stage_urlhash.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.3 on 2021-09-05 17:32 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sifrovacka', '0024_auto_20210905_1719'), + ] + + operations = [ + migrations.AlterField( + model_name='stages', + name='stage_urlhash', + field=models.CharField(default='3f5301b00e6f11ecbda72016b9b07b5b', max_length=32), + ), + ] diff --git a/sifrovacka/migrations/0026_alter_stages_stage_urlhash.py b/sifrovacka/migrations/0026_alter_stages_stage_urlhash.py new file mode 100644 index 0000000000000000000000000000000000000000..0ab4de590b264debbcc0e0cb1ecf2150bad98ada --- /dev/null +++ b/sifrovacka/migrations/0026_alter_stages_stage_urlhash.py @@ -0,0 +1,18 @@ +# 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), + ), + ] diff --git a/sifrovacka/models.py b/sifrovacka/models.py index 1920448eab9f85673b0921204e371c1b74132cf7..dbd2b2acf7e753b8149503d0d08f75e6fda277f1 100644 --- a/sifrovacka/models.py +++ b/sifrovacka/models.py @@ -5,19 +5,28 @@ from django.db import models from django.conf import settings from uuid import uuid1 from django.utils import encoding +from tinymce.models import HTMLField def UserDirectoryPath(instance, filename): - # file will be uploaded to MEDIA_ROOT/sifrovacka_<id>/<filename> - return 'sifrovacka_{0}/stage{1}/{2}'.format(instance.sifrovacka_id, + 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): ''' model which describes sifrovacka ''' sifrovacka_name = models.CharField(max_length=200) - sifrovacka_description = models.CharField(max_length=500) + 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.DateTimeField('date published') @@ -35,21 +44,13 @@ class Stages(models.Model): 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_description = HTMLField() + #sifrovacka_description = models.CharField(max_length=2000) 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)) -# else: -# stage_name = stage_name_text -# votes = models.IntegerField(default=0) -# startdate_stages = models.DateField() -# enddate_stages= models.DateField() - def __str__(self): return str(self.sifrovacka) + " - Stage " + str(self.stage_number) diff --git a/sifrovacka/templates/sifrovacka.html b/sifrovacka/templates/sifrovacka.html index dea9fff8f974f19429348e0e0cd3692e11c1c96d..237f4902893d42a4a804756f3203cd085ffa6611 100644 --- a/sifrovacka/templates/sifrovacka.html +++ b/sifrovacka/templates/sifrovacka.html @@ -1,4 +1,5 @@ {% extends "base.html" %} +{% load static %} {% block content %} <p> Toto je detail sifrovacky se jmenem: <b>{{sifrovacka_detail}} </b> a id: {{sifrovacka_id}}. </p> @@ -8,8 +9,18 @@ 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 %} + {% 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> @@ -35,6 +46,11 @@ Debug: </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> diff --git a/sifrovacka/templates/stage.html b/sifrovacka/templates/stage.html index 4c153e6c4094f3347ee3986d37bab2bc144f43f5..bcb15c870fdd424fc720db5c90407f695c82d381 100644 --- a/sifrovacka/templates/stage.html +++ b/sifrovacka/templates/stage.html @@ -1,8 +1,26 @@ {% extends "sifrovacka.html" %} +{% load static %} + +{% comment %} + + {{ sifrovacka_current_id }} - {{ sifrovacka_current_stage_url_hash.at_stage }} + +{% endcomment %} {% block content %} - {% if sifrovacka_current %} + {% if sifrovacka_current_stage_urlhash %} {% if request.user.is_authenticated %} - {{ sifrovacka_current }} - {{ sifrovacka_current.at_stage }} + + <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 }} + {% 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> + </figure> + {{ sifrovacka_detail.sifrovacka_img }} + {% endif%} {% endif %} {% else %} <div class="alert alert--red-600"> diff --git a/sifrovacka/urls.py b/sifrovacka/urls.py index c5c0d1f37cd42a145f257f5b1b4fc7c6247065e3..f1d65ad9378bd3f6b1ae4d2932e1f0a2f36c4bbf 100644 --- a/sifrovacka/urls.py +++ b/sifrovacka/urls.py @@ -1,4 +1,4 @@ -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 @@ -13,10 +13,14 @@ urlpatterns = [ path('<int:sifrovacka_id>/<slug:stage_urlhash>/', views.stage, name='stage'), # home page path('home/', views.home, name='home'), + # rich test editor + re_path(r'^tinymce/', include('tinymce.urls')), # / path('', views.index, name='index'), - ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) -#if settings.DEBUG: -# urlpatterns += static(settings.MEDIA_URL, -# document_root=settings.MEDIA_ROOT) + ] +# ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) +if settings.DEBUG: + print("XXXXXX") + urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) diff --git a/sifrovacka/views.py b/sifrovacka/views.py index 064f596ce6a616da62b35b6ea2768858f0ff9c0c..a011d658e639c6d6477c6aa04067d89ca1ca61d1 100644 --- a/sifrovacka/views.py +++ b/sifrovacka/views.py @@ -14,7 +14,8 @@ def stage(request, sifrovacka_id, stage_urlhash): # print(stage_urlhash) # print(request.user.participants_set.values()) # sifrovacka_current_stage = request.user.participants_set.values_list('id') - sifrovacka_current = None + sifrovacka_current_stage_urlhash = None + sifrovacka_current_id = 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() @@ -31,26 +32,29 @@ def stage(request, sifrovacka_id, stage_urlhash): tmp_stage_id) if (sifrovacka_current_stage_urlhash.at_stage == stage_urlhash): print('hehe') - sifrovacka_current = Participants.objects.get(id = \ - tmp_stage_id) + stage_current_id = Stages.objects.get(stage_urlhash = + sifrovacka_current_stage_urlhash.at_stage) + #sifrovacka_current = Participants.objects.get(id = \ + # tmp_stage_id) else: print('not same') # else: # sifrovacka_current = None - print(sifrovacka_current) + print(sifrovacka_current_id) context = {"sifrovacka_id": sifrovacka_id, "sifrovacka_detail": sifrovacka_detail, "sifrovacka_stages": sifrovacka_stages, "sifrovacka_stage_count": sifrovacka_stage_count, - "sifrovacka_current": sifrovacka_current + "stage_current_id": stage_current_id, + "sifrovacka_current_stage_urlhash": sifrovacka_current_stage_urlhash } return render(request, 'stage.html', context) def detail(request, sifrovacka_id): # print(dir(request)) sifrovacka_current_stage_urlhash = None - sifrovacka_current = None + sifrovacka_current_id = 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() @@ -67,8 +71,9 @@ def detail(request, sifrovacka_id): tmp_stage_id) # if (sifrovacka_current_stage_urlhash.at_stage == stage_urlhash): # print('hehe') - sifrovacka_current = Participants.objects.get(id = \ - tmp_stage_id) + sifrovacka_current_id = tmp_stage_id + #sifrovacka_current_id = Participants.objects.get(id = \ + # tmp_stage_id) # else: # print('not same') @@ -77,7 +82,7 @@ def detail(request, sifrovacka_id): "sifrovacka_detail": sifrovacka_detail, "sifrovacka_stages": sifrovacka_stages, "sifrovacka_stage_count": sifrovacka_stage_count, - "sifrovacka_current": sifrovacka_current, + "sifrovacka_current_id": sifrovacka_current_id, "sifrovacka_current_stage_urlhash": sifrovacka_current_stage_urlhash }