Skip to content
Snippets Groups Projects
Commit 359dcf18 authored by Zdenek Kubala's avatar Zdenek Kubala
Browse files

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
parent 49119af4
No related branches found
No related tags found
1 merge request!2Added stage web page
Showing
with 277 additions and 20 deletions
...@@ -104,4 +104,7 @@ GitHub.sublime-settings ...@@ -104,4 +104,7 @@ GitHub.sublime-settings
!.vscode/launch.json !.vscode/launch.json
!.vscode/extensions.json !.vscode/extensions.json
.history .history
# Custom #
db.sqlite3 db.sqlite3
media/*
# 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),
),
]
# 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),
),
]
# 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),
),
]
# 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),
),
]
# 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),
),
]
# 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),
),
]
# 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),
),
]
# 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),
),
]
...@@ -3,7 +3,14 @@ from django.db import models ...@@ -3,7 +3,14 @@ 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
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): class Sifrovacka(models.Model):
''' '''
...@@ -19,15 +26,19 @@ class Sifrovacka(models.Model): ...@@ -19,15 +26,19 @@ 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()
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: # if not stage_name_text models:
# stage_name = getattr(Stages, sifrovacka_name) # stage_name = getattr(Stages, sifrovacka_name)
# "-" + getattr(Stages, stage_number)) # "-" + getattr(Stages, stage_number))
...@@ -44,14 +55,15 @@ class Stages(models.Model): ...@@ -44,14 +55,15 @@ 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)
def __str__(self): def __str__(self):
return str(self.user) + " - " + str(self.sifrovacka) return str(self.user) + " - " + str(self.sifrovacka)
......
...@@ -11,6 +11,18 @@ ...@@ -11,6 +11,18 @@
{% if request.user.is_authenticated %} {% if request.user.is_authenticated %}
<form action="{% url 'home' %}" method="post"> <form action="{% url 'home' %}" method="post">
{% csrf_token %} {% 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 %} {% comment %}
<form action="{% url 'sifrovacka:home' sifrovacka.id %}" method="post"> <form action="{% url 'sifrovacka:home' sifrovacka.id %}" method="post">
{% csrf_token %} {% csrf_token %}
...@@ -26,16 +38,4 @@ ...@@ -26,16 +38,4 @@
</fieldset> </fieldset>
<input type="submit" name="signupsif" value={{ sifrovacka_id }}> <input type="submit" name="signupsif" value={{ sifrovacka_id }}>
{% endcomment %} {% 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 %} {% endblock %}
{% 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 %}
...@@ -9,7 +9,49 @@ from django.contrib.auth import login,logout ...@@ -9,7 +9,49 @@ from django.contrib.auth import login,logout
from .models import Sifrovacka, Stages, Participants 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): def detail(request, sifrovacka_id):
print(request)
sifrovacka_detail = Sifrovacka.objects.get(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()
...@@ -25,8 +67,6 @@ def home(request): ...@@ -25,8 +67,6 @@ 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"]
...@@ -35,11 +75,12 @@ def home(request): ...@@ -35,11 +75,12 @@ def home(request):
p = Participants.objects.create(user=request.user, p = Participants.objects.create(user=request.user,
sifrovacka_id=post_signupsif) sifrovacka_id=post_signupsif)
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