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

add sifrovacka detail page + models

parent 5702a9fd
Branches
No related tags found
No related merge requests found
Showing
with 382 additions and 22 deletions
......@@ -104,3 +104,4 @@ GitHub.sublime-settings
!.vscode/launch.json
!.vscode/extensions.json
.history
db.sqlite3
......@@ -129,5 +129,5 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
# Custom settings AUTH
LOGIN_REDIRECT_URL = 'index'
LOGIN_REDIRECT_URL = 'home'
LOGOUT_REDIRECT_URL = 'index'
appdirs==1.4.4
asgiref==3.3.4
asn1crypto==0.24.0
asn1crypto==1.4.0
backcall==0.2.0
cffi==1.14.6
confusable-homoglyphs==3.2.0
cryptography==2.6.1
cryptography==3.3.2
dbus-python==1.2.16
decorator==5.0.9
distlib==0.3.1
Django==3.2.3
django-registration==3.1.2
django-registration==3.2
entrypoints==0.3
keyring==17.1.1
keyrings.alt==3.1.1
filelock==3.0.12
importlib-metadata==1.6.0
ipython==7.27.0
ipython-genutils==0.2.0
jedi==0.18.0
jeepney==0.6.0
keyring==22.0.1
keyrings.alt==4.0.2
Mako==1.1.3
Markdown==3.3.4
MarkupSafe==1.1.1
matplotlib-inline==0.1.2
more-itertools==4.2.0
parso==0.8.2
pexpect==4.8.0
pickleshare==0.7.5
prompt-toolkit==3.0.20
ptyprocess==0.7.0
pycairo==1.20.1
pycparser==2.20
pycrypto==2.6.1
PyGObject==3.30.4
pycryptodomex==3.9.7
Pygments==2.7.1
PyGObject==3.38.0
pytz==2021.1
pyxdg==0.25
SecretStorage==2.3.1
six==1.12.0
pyxdg==0.27
PyYAML==5.3.1
SecretStorage==3.3.1
six==1.16.0
sqlparse==0.4.1
traitlets==5.0.5
typing-extensions==3.10.0.0
virtualenv==15.1.0
virtualenv==20.4.0+ds
wcwidth==0.2.5
xdg==5
zipp==1.0.0
from django.contrib import admin
# Register your models here.
from . import models
admin.site.register(models.Sifrovacka)
admin.site.register(models.Stages)
admin.site.register(models.Participants)
# Generated by Django 3.2.3 on 2021-08-12 06:56
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Sifrovacka',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('siftovacka_name', models.CharField(max_length=200)),
('pub_date', models.DateTimeField(verbose_name='date published')),
('startdate_sifrovacka', models.DateField()),
('enddate_sifrovacka', models.DateField()),
],
),
migrations.CreateModel(
name='Stages',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('stage_number', models.IntegerField()),
('choice_text', models.CharField(max_length=200)),
('votes', models.IntegerField(default=0)),
('startdate_stages', models.DateField()),
('enddate_stages', models.DateField()),
('sifrovacka', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sifrovacka.sifrovacka')),
],
),
]
# Generated by Django 3.2.3 on 2021-08-12 07:14
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('sifrovacka', '0001_initial'),
]
operations = [
migrations.RemoveField(
model_name='stages',
name='enddate_stages',
),
migrations.RemoveField(
model_name='stages',
name='startdate_stages',
),
migrations.RemoveField(
model_name='stages',
name='votes',
),
]
# Generated by Django 3.2.3 on 2021-08-12 07:33
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('sifrovacka', '0002_auto_20210812_0714'),
]
operations = [
migrations.RenameField(
model_name='sifrovacka',
old_name='siftovacka_name',
new_name='sifrovacka_name',
),
migrations.RenameField(
model_name='stages',
old_name='choice_text',
new_name='stage_name',
),
]
# Generated by Django 3.2.3 on 2021-08-12 12:09
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('sifrovacka', '0003_auto_20210812_0733'),
]
operations = [
migrations.CreateModel(
name='Participants',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('participate', models.BooleanField()),
('sifrovacka', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sifrovacka.sifrovacka')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
]
# Generated by Django 3.2.3 on 2021-08-30 10:41
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('sifrovacka', '0004_participants'),
]
operations = [
migrations.RenameField(
model_name='participants',
old_name='participate',
new_name='is_active',
),
]
# Generated by Django 3.2.3 on 2021-08-30 10:43
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('sifrovacka', '0005_rename_participate_participants_is_active'),
]
operations = [
migrations.RenameField(
model_name='participants',
old_name='is_active',
new_name='Inactive',
),
]
# Generated by Django 3.2.3 on 2021-08-30 10:52
from django.conf import settings
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('sifrovacka', '0006_rename_is_active_participants_inactive'),
]
operations = [
migrations.AlterUniqueTogether(
name='participants',
unique_together={('user', 'sifrovacka')},
),
]
from django.db import models
# Create your models here.
from django.conf import settings
class Sifrovacka(models.Model):
'''
model which describes sifrovacka
'''
sifrovacka_name = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
startdate_sifrovacka = models.DateField()
enddate_sifrovacka = models.DateField()
def __str__(self):
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()
# 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)
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()
def __str__(self):
return str(self.user) + " - " + str(self.sifrovacka)
class Meta:
unique_together = [['user', 'sifrovacka']]
{% extends "base.html" %}
{% if request.user.is_authenticated %}
{% block content %}
<ul>
<p> <b>Dostupne sifrovacky: </b> <a href={% url 'index' %}a> Zde </a></p>
{% comment %}
{% if available_sifrovacky_list %}
{% for sifrovacka in avalable_sifrovacky_list %}
<li><a href={% url 'detail' sifrovacka.id %}>{{ sifrovacka }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>Žádné šifrovačky nejsou aktivní.</p>
{% endif %}
{% endcomment %}
{% if participation_sifrovacky_list %}
<ul>
<p> <b>Přihlášené sifrovacky: </b> </p>
{% for sifrovacka in participation_sifrovacky_list %}
<li><a href={% url 'detail' sifrovacka.id %}>{{ sifrovacka }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>Žádné šifrovačky nejsou aktivní.</p>
{% endif %}
{% endblock %}
{{% endif %}
{% comment %}
{% block content %}
{% if active_sifrovacky_list %}
<ul>
<p> <b>Aktivni sifrovacky: </b> </p>
{% for sifrovacka in active_sifrovacky_list %}
<li><a href={% url 'detail' sifrovacka.id %}>{{ sifrovacka.sifrovacka_name }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>Žádné šifrovačky nejsou aktivní.</p>
{% endif %}
{% endblock %}
{% endcomment %}
{% extends "base.html" %}
{% block content %}
{% if active_sifrovacka_list %}
<ul>
{% for sifrovacka in active_sifrovacka_list %}
<li><a href="/sifrovacka/{{ sifrovacka.id }}/">{{ sifrovacka.sifrovacka_name }}</a></li>
{% endfor %}
</ul>
{% if sifrovacky_list %}
<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 %}
{% for sifrovacka in participants.all %}
<li><a href="/sifrovacka/{{ sifrovacka.id }}">{{ sifrovacka.sifrovacka_name }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>Žádné šifrovačky nejsou aktivní.</p>
{% endif %}
......
{% extends "base.html" %}
{% 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>
</br>
</br>
</br>
</br>
Debug:
<div>
{% for stage in sifrovacka_stages %}
{{ stage }}</br>
{% endfor %}
</div>
{% endblock %}
......@@ -6,6 +6,10 @@ urlpatterns = [
# accounts uls
path('accounts/', include('django_registration.backends.one_step.urls')),
path('accounts/', include('django.contrib.auth.urls')),
# the 'name' value as called by the {% url %} template tag
path('<int:sifrovacka_id>/', views.detail, name='detail'),
# home page
path('home/', views.home, name='home'),
# /
path('', views.index, name='index'),
]
......@@ -4,14 +4,46 @@ from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader
from django.contrib.auth import login,logout
from .models import Sifrovacka, Stages, Participants
def detail(request, 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()
context = {"sifrovacka_id": sifrovacka_id,
"sifrovacka_detail": sifrovacka_detail,
"sifrovacka_stages": sifrovacka_stages,
"sifrovacka_stage_count": sifrovacka_stage_count}
return render(request, 'sifrovacka.html', context)
def home(request):
all_sifrovacky_list = Sifrovacka.objects.order_by('id')
# only for auth users
if request.user.is_authenticated:
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)
else:
participation_sifrovacky_list = None
# sifrovacka_name = Sifrovacka.objects.get(id = sifrovacka_id)
context = {"active_sifrovacky_list": all_sifrovacky_list,
"participation_sifrovacky_list": participation_sifrovacky_list}
# import pdb
# pdb.set_trace()
return render(request, 'home.html', context)
#def index(request):
# return HttpResponse("Hello, world. You're at the polls index.")
def index(request):
template = loader.get_template('index.html')
context = {"": ""}
list_all_sifrovacky = Sifrovacka.objects.all()
context = {"sifrovacky_list": list_all_sifrovacky}
#context = {"": ""}
return HttpResponse(template.render(context, request))
return render(request, 'index.html', context)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment