Browse Source

Merge branch 'data_migrations' into test

middleware_test
Jonas Havelka 4 years ago
parent
commit
b8ae1a3fc4
  1. 2
      Makefile
  2. 10
      data/flat.json
  3. 12
      data/fotka_header.json
  4. 14
      data/sitetree.json
  5. 2
      mamweb/settings_common.py
  6. 2
      mamweb/templates/400.html
  7. 2
      mamweb/templates/403.html
  8. 2
      mamweb/templates/404.html
  9. 3
      mamweb/templates/500.html
  10. 8
      mamweb/templates/graph.svg
  11. 38
      seminar/admin.py
  12. 6
      seminar/templates/seminar/cojemam/organizatori.html
  13. 3
      seminar/templates/seminar/pracuje_se.html
  14. 2
      seminar/templates/seminar/tematka/rozcestnik.html
  15. 2
      seminar/templates/seminar/titulnistrana.html
  16. 2
      seminar/templates/seminar/zadani/Temata.html
  17. 6
      seminar/urls.py
  18. 2
      vue_frontend/src/router/index.js

2
Makefile

@ -35,7 +35,7 @@ install_web: venv_check
# Instalace závislostí webu # Instalace závislostí webu
pip install -r requirements.txt --upgrade pip install -r requirements.txt --upgrade
# Po vygenerování testdat spusť ./manage.py loaddata data/*, ať máš menu a další modely # Po vygenerování testdat spusť ./manage.py loaddata data/*, ať máš menu a další modely
:x # Pro synchronizaci flatpages spusť make sync_prod_flatpages
install_venv: install_venv:
${VENV} ${VENV_PATH} ${VENV} ${VENV_PATH}

10
data/flat.json

File diff suppressed because one or more lines are too long

12
data/fotka_header.json

@ -118,7 +118,7 @@
"model": "header_fotky.fotkaurlvazba", "model": "header_fotky.fotkaurlvazba",
"pk": 4, "pk": 4,
"fields": { "fields": {
"url": "/zadani/", "url": "/aktualni/",
"fotka": "baliky.jpg", "fotka": "baliky.jpg",
"denni_doba": "den" "denni_doba": "den"
} }
@ -127,7 +127,7 @@
"model": "header_fotky.fotkaurlvazba", "model": "header_fotky.fotkaurlvazba",
"pk": 5, "pk": 5,
"fields": { "fields": {
"url": "/zadani/", "url": "/aktualni/",
"fotka": "stiny.jpg", "fotka": "stiny.jpg",
"denni_doba": "noc" "denni_doba": "noc"
} }
@ -136,7 +136,7 @@
"model": "header_fotky.fotkaurlvazba", "model": "header_fotky.fotkaurlvazba",
"pk": 6, "pk": 6,
"fields": { "fields": {
"url": "/co-je-MaM/", "url": "/o-nas/",
"fotka": "vikendovka.jpg", "fotka": "vikendovka.jpg",
"denni_doba": "den" "denni_doba": "den"
} }
@ -145,7 +145,7 @@
"model": "header_fotky.fotkaurlvazba", "model": "header_fotky.fotkaurlvazba",
"pk": 7, "pk": 7,
"fields": { "fields": {
"url": "/co-je-MaM/", "url": "/o-nas/",
"fotka": "noc.jpg", "fotka": "noc.jpg",
"denni_doba": "noc" "denni_doba": "noc"
} }
@ -172,7 +172,7 @@
"model": "header_fotky.fotkaurlvazba", "model": "header_fotky.fotkaurlvazba",
"pk": 10, "pk": 10,
"fields": { "fields": {
"url": "/login/", "url": "/prihlasit/",
"fotka": "baliky.jpg", "fotka": "baliky.jpg",
"denni_doba": "den" "denni_doba": "den"
} }
@ -181,7 +181,7 @@
"model": "header_fotky.fotkaurlvazba", "model": "header_fotky.fotkaurlvazba",
"pk": 11, "pk": 11,
"fields": { "fields": {
"url": "/login/", "url": "/prihlasit/",
"fotka": "stiny.jpg", "fotka": "stiny.jpg",
"denni_doba": "noc" "denni_doba": "noc"
} }

14
data/sitetree.json

@ -25,7 +25,7 @@
"sort_order": 1, "sort_order": 1,
"title": "Co je M&M", "title": "Co je M&M",
"tree": 1, "tree": 1,
"url": "/co-je-MaM/uvod/", "url": "/o-nas/uvod/",
"urlaspattern": false "urlaspattern": false
}, },
"model": "sitetree.treeitem", "model": "sitetree.treeitem",
@ -169,7 +169,7 @@
"sort_order": 7, "sort_order": 7,
"title": "Úvod", "title": "Úvod",
"tree": 1, "tree": 1,
"url": "/co-je-MaM/uvod/", "url": "/o-nas/uvod/",
"urlaspattern": false "urlaspattern": false
}, },
"model": "sitetree.treeitem", "model": "sitetree.treeitem",
@ -217,7 +217,7 @@
"sort_order": 9, "sort_order": 9,
"title": "FAQ", "title": "FAQ",
"tree": 1, "tree": 1,
"url": "/co-je-MaM/FAQ/", "url": "/o-nas/FAQ/",
"urlaspattern": false "urlaspattern": false
}, },
"model": "sitetree.treeitem", "model": "sitetree.treeitem",
@ -241,7 +241,7 @@
"sort_order": 10, "sort_order": 10,
"title": "Kontakt", "title": "Kontakt",
"tree": 1, "tree": 1,
"url": "/co-je-MaM/kontakt/", "url": "/o-nas/kontakt/",
"urlaspattern": false "urlaspattern": false
}, },
"model": "sitetree.treeitem", "model": "sitetree.treeitem",
@ -313,7 +313,7 @@
"sort_order": 13, "sort_order": 13,
"title": "Odměny", "title": "Odměny",
"tree": 1, "tree": 1,
"url": "/co-je-MaM/odmeny/", "url": "/o-nas/odmeny/",
"urlaspattern": false "urlaspattern": false
}, },
"model": "sitetree.treeitem", "model": "sitetree.treeitem",
@ -727,8 +727,8 @@
"sort_order": 38, "sort_order": 38,
"title": "Odhlásit se", "title": "Odhlásit se",
"tree": 1, "tree": 1,
"url": "/logout/", "url": "logout",
"urlaspattern": false "urlaspattern": true
}, },
"model": "sitetree.treeitem", "model": "sitetree.treeitem",
"pk": 38 "pk": 38

2
mamweb/settings_common.py

@ -43,7 +43,7 @@ STATICFILES_FINDERS = (
) )
# Where redirect for login required services # Where redirect for login required services
LOGIN_URL = '/admin/login' LOGIN_URL = 'login'
# Modules configuration # Modules configuration

2
mamweb/templates/400.html

@ -12,7 +12,7 @@
<p> <p>
Chybička se vloudila. Chybička se vloudila.
Zkuste přejít na <a href="/">titulní stránku</a> Zkuste přejít na <a href="/">titulní stránku</a>
nebo se podívat na <a href="/zadani/aktualni/">aktuální zadání</a>. nebo se podívat na <a href="{% url 'seminar_aktualni_zadani' %}">aktuální zadání</a>.
</p> </p>
<img src="{% static '500.png' %}"> <img src="{% static '500.png' %}">
{% endblock %} {% endblock %}

2
mamweb/templates/403.html

@ -12,7 +12,7 @@
<p> <p>
Tady pravděpodobně nemáte co dělat. Tady pravděpodobně nemáte co dělat.
Zkuste přejít na <a href="/">titulní stránku</a> Zkuste přejít na <a href="/">titulní stránku</a>
nebo se podívat na <a href="/zadani/aktualni/">aktuální zadání</a>. nebo se podívat na <a href="{% url 'seminar_aktualni_zadani' %}">aktuální zadání</a>.
</p> </p>
<img src="{% static '500.png' %}"> <img src="{% static '500.png' %}">
{% endblock %} {% endblock %}

2
mamweb/templates/404.html

@ -12,7 +12,7 @@
<p> <p>
Tuto stránku jsme na našem serveru nenalezli. Tuto stránku jsme na našem serveru nenalezli.
Zkuste přejít na <a href="/">titulní stránku</a> Zkuste přejít na <a href="/">titulní stránku</a>
nebo se podívat na <a href="/zadani/aktualni/">aktuální zadání</a>. nebo se podívat na <a href="{% url 'seminar_aktualni_zadani' %}">aktuální zadání</a>.
</p> </p>
<img src="{% static '404.png' %}"> <img src="{% static '404.png' %}">
{% endblock %} {% endblock %}

3
mamweb/templates/500.html

@ -12,7 +12,8 @@
<p> <p>
Chybička se vloudila. Chybička se vloudila.
Zkuste přejít na <a href="/">titulní stránku</a> Zkuste přejít na <a href="/">titulní stránku</a>
nebo se podívat na <a href="/zadani/aktualni/">aktuální zadání</a>. {# Při pádu webu nechceme, aby se rozbily odkazy, nevěříme URLconfu. #}
nebo se podívat na <a href="/aktualni/zadani/">aktuální zadání</a>.
</p> </p>
<img src="{% static '500.png' %}"> <img src="{% static '500.png' %}">
{% endblock %} {% endblock %}

8
mamweb/templates/graph.svg

@ -409,7 +409,7 @@
</g> </g>
</a> </a>
<a <a
href="/zadani/temata/" href="/aktualni/temata/"
id="temata" id="temata"
transform="matrix(0.70138313,0,0,0.7462289,-192.38886,20.298351)"> transform="matrix(0.70138313,0,0,0.7462289,-192.38886,20.298351)">
<g <g
@ -439,7 +439,7 @@
</g> </g>
</a> </a>
<a <a
href="/zadani/temata/" href="/aktualni/temata/"
id="a74" id="a74"
transform="matrix(0.70138313,0,0,0.7462289,-192.38886,20.298351)"> transform="matrix(0.70138313,0,0,0.7462289,-192.38886,20.298351)">
<g <g
@ -469,7 +469,7 @@
</g> </g>
</a> </a>
<a <a
href="/zadani/temata/" href="/aktualni/temata/"
id="a80" id="a80"
transform="matrix(0.70138313,0,0,0.7462289,-192.38886,20.298351)"> transform="matrix(0.70138313,0,0,0.7462289,-192.38886,20.298351)">
<g <g
@ -499,7 +499,7 @@
</g> </g>
</a> </a>
<a <a
href="/zadani/temata/" href="/aktualni/temata/"
id="a86" id="a86"
transform="matrix(0.70138313,0,0,0.7462289,-192.38886,20.298351)"> transform="matrix(0.70138313,0,0,0.7462289,-192.38886,20.298351)">
<g <g

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

38
seminar/admin.py

@ -8,6 +8,7 @@ from polymorphic.admin import PolymorphicParentModelAdmin, PolymorphicChildModel
from reversion.admin import VersionAdmin from reversion.admin import VersionAdmin
from django_reverse_admin import ReverseModelAdmin from django_reverse_admin import ReverseModelAdmin
from solo.admin import SingletonModelAdmin from solo.admin import SingletonModelAdmin
from django.utils.safestring import mark_safe
# Todo: reversion # Todo: reversion
@ -25,31 +26,58 @@ class CisloForm(ModelForm):
fields = '__all__' fields = '__all__'
def clean(self): def clean(self):
print("Cleaning...")
print(self.cleaned_data)
if self.cleaned_data.get('verejne_db') == False: if self.cleaned_data.get('verejne_db') == False:
return self.cleaned_data return self.cleaned_data
cn = m.CisloNode.objects.get(cislo=self.instance) cn = m.CisloNode.objects.get(cislo=self.instance)
errors = []
for ch in tl.all_children(cn): for ch in tl.all_children(cn):
if isinstance(ch, m.TemaVCisleNode): if isinstance(ch, m.TemaVCisleNode):
if ch.tema.stav not in \ if ch.tema.stav not in \
(m.Problem.STAV_ZADANY, m.Problem.STAV_VYRESENY): (m.Problem.STAV_ZADANY, m.Problem.STAV_VYRESENY):
raise ValidationError('Téma %(tema)s není zadané ani vyřešené', params={'tema':ch.tema}) errors.append(ValidationError('Téma %(tema)s není zadané ani vyřešené', params={'tema':ch.tema}))
if isinstance(ch, m.UlohaZadaniNode) or isinstance(ch, m.UlohaVzorakNode): if isinstance(ch, m.UlohaZadaniNode) or isinstance(ch, m.UlohaVzorakNode):
if ch.uloha.stav not in \ if ch.uloha.stav not in \
(m.Problem.STAV_ZADANY, m.Problem.STAV_VYRESENY): (m.Problem.STAV_ZADANY, m.Problem.STAV_VYRESENY):
raise ValidationError('Úloha %(uloha)s není zadaná ani vyřešená', params={'uloha':ch.uloha}) errors.append(ValidationError('Úloha %(uloha)s není zadaná ani vyřešená', params={'uloha':ch.uloha}))
if isinstance(ch, m.ReseniNode): if isinstance(ch, m.ReseniNode):
for problem in ch.reseni.problem_set: for problem in ch.reseni.problem_set:
if problem not in \ if problem not in \
(m.Problem.STAV_ZADANY, m.Problem.STAV_VYRESENY): (m.Problem.STAV_ZADANY, m.Problem.STAV_VYRESENY):
raise ValidationError('Problém %s není zadaný ani vyřešený', code=problem) errors.append(ValidationError('Problém %s není zadaný ani vyřešený', code=problem))
if errors:
errors.append(ValidationError(mark_safe('<b>Pokud chceš učinit všechny problémy, co nejsou zadané ani vyřešené, zadanými a číslo zveřejnit, můžeš to udělat pomocí akce v <a href="/admin/seminar/cislo">seznamu čísel</a></b>')))
raise ValidationError(errors)
return self.cleaned_data return self.cleaned_data
@admin.register(m.Cislo) @admin.register(m.Cislo)
class CisloAdmin(admin.ModelAdmin): class CisloAdmin(admin.ModelAdmin):
form = CisloForm form = CisloForm
actions = ['force_publish']
def force_publish(self,request,queryset):
for cislo in queryset:
cn = m.CisloNode.objects.get(cislo=cislo)
for ch in tl.all_children(cn):
if isinstance(ch, m.TemaVCisleNode):
if ch.tema.stav not in (m.Problem.STAV_ZADANY, m.Problem.STAV_VYRESENY):
ch.tema.stav = m.Problem.STAV_ZADANY
ch.tema.save()
if isinstance(ch, m.UlohaZadaniNode) or isinstance(ch, m.UlohaVzorakNode):
if ch.uloha.stav not in (m.Problem.STAV_ZADANY, m.Problem.STAV_VYRESENY):
ch.uloha.stav = m.Problem.STAV_ZADANY
ch.uloha.save()
if isinstance(ch, m.ReseniNode):
for problem in ch.reseni.problem_set:
if problem not in (m.Problem.STAV_ZADANY, m.Problem.STAV_VYRESENY):
problem.stav = m.Problem.STAV_ZADANY
problem.save()
cislo.verejne_db = True
cislo.save()
force_publish.short_description = 'Zveřejnit vybraná čísla a všechny návrhy úloh v nich učinit zadanými'
@admin.register(m.Osoba) @admin.register(m.Osoba)
class OsobaAdmin(admin.ModelAdmin): class OsobaAdmin(admin.ModelAdmin):

6
seminar/templates/seminar/cojemam/organizatori.html

@ -12,7 +12,7 @@
{% if not aktivni %} {% if not aktivni %}
<br> <br>
<a href="/co-je-MaM/organizatori/">Aktivní organizátoři</a><br> <a href="{% url 'organizatori' %}">Aktivní organizátoři</a><br>
<br> <br>
{% endif %} {% endif %}
@ -80,9 +80,9 @@
</div> </div>
{% if aktivni%} {% if aktivni%}
<a href="organizovali/">Vysloužilí organizátoři</a> <a href="{% url 'stari_organizatori' %}">Vysloužilí organizátoři</a>
{% else %} {% else %}
<a href="/co-je-MaM/organizatori/">Aktivní organizátoři</a> <a href="{% url 'organizatori' %}">Aktivní organizátoři</a>
{% endif %} {% endif %}
{% endblock content %} {% endblock content %}

3
seminar/templates/seminar/pracuje_se.html

@ -11,8 +11,7 @@
Na této stránce velmi intenzivně pracujeme. Na této stránce velmi intenzivně pracujeme.
Za dočasnou nedostupnost se omlouváme. Za dočasnou nedostupnost se omlouváme.
Zkuste přejít na <a href="/">titulní stránku</a> Zkuste přejít na <a href="/">titulní stránku</a>
nebo se podívat na <a href="/zadani/aktualni/">aktuální zadání</a>. nebo se podívat na <a href="{% url 'seminar_aktualni_zadani' %}">aktuální zadání</a>.
</p> </p>
<img src="{% static '404.png' %}"> <img src="{% static '404.png' %}">
{% endblock %} {% endblock %}

2
seminar/templates/seminar/tematka/rozcestnik.html

@ -13,7 +13,7 @@
problém a jsou doprovázeny návodnými úlohami. Vaším úkolem je&nbsp;zamyslet se nad daným problém a jsou doprovázeny návodnými úlohami. Vaším úkolem je&nbsp;zamyslet se nad daným
problémem a sepsat vaše úvahy ve formě krátkého textu.</p> problémem a sepsat vaše úvahy ve formě krátkého textu.</p>
<p><a href="/co-je-MaM/jak-resit/">Jak řešit téma?</a></p> <p><a href="{% url 'jak_resit' %}">Jak řešit téma?</a></p>
<div class="rozcestnik_temat"> <div class="rozcestnik_temat">

2
seminar/templates/seminar/titulnistrana.html

@ -84,7 +84,7 @@ function sousdeadline() {
</div> </div>
<span class="zjistit_vic"> <span class="zjistit_vic">
<h2><a href="/co-je-MaM/uvod/">Zjisti víc!</a></h2> <h2><a href="/o-nas/uvod/">Zjisti víc!</a></h2>
<hr> <hr>
</span> </span>
</div> </div>

2
seminar/templates/seminar/zadani/Temata.html

@ -20,7 +20,7 @@
textu. textu.
</p> </p>
<p> <p>
<a href="/co-je-MaM/jak-resit/">Jak řešit téma?</a> <a href="{% url 'jak_resit' %}">Jak řešit téma?</a>
</p> </p>
<!-- <!--
{% if temata %} {% if temata %}

6
seminar/urls.py

@ -57,7 +57,7 @@ urlpatterns = [
), ),
# Zadani # Zadani
# path('zadani/aktualni/', views.AktualniZadaniView.as_view(), name='seminar_aktualni_zadani'), # path('aktualni/zadani/', views.AktualniZadaniView.as_view(), name='seminar_aktualni_zadani'), # Dočasně ad-hoc jednoduchá věc.
path('aktualni/zadani/', views.AktualniZadaniView, name='seminar_aktualni_zadani'), path('aktualni/zadani/', views.AktualniZadaniView, name='seminar_aktualni_zadani'),
#path('aktualni/temata/', views.ZadaniTemataView, name='seminar_temata'), #path('aktualni/temata/', views.ZadaniTemataView, name='seminar_temata'),
path('aktualni/vysledkova-listina/', views.ZadaniAktualniVysledkovkaView, name='seminar_aktualni_vysledky'), path('aktualni/vysledkova-listina/', views.ZadaniAktualniVysledkovkaView, name='seminar_aktualni_vysledky'),
@ -142,7 +142,7 @@ urlpatterns = [
path('reset-hesla/hotovo/', views.PasswordResetCompleteView.as_view(), name='reset_password_complete'), path('reset-hesla/hotovo/', views.PasswordResetCompleteView.as_view(), name='reset_password_complete'),
path( path(
'resitel/osobni-udaje/', 'resitel/osobni-udaje/',
login_required(views.resitelEditView, login_url='/login/'), login_required(views.resitelEditView),
name='seminar_resitel_edit' name='seminar_resitel_edit'
), ),
@ -161,7 +161,7 @@ urlpatterns = [
path('temp/image_upload/', views.NahrajObrazekKTreeNoduView.as_view()), path('temp/image_upload/', views.NahrajObrazekKTreeNoduView.as_view()),
path('', views.TitulniStranaView.as_view(), name='titulni_strana'), path('', views.TitulniStranaView.as_view(), name='titulni_strana'),
path('jak-resit/', views.JakResitView.as_view(), name='jak-resit'), path('jak-resit/', views.JakResitView.as_view(), name='jak_resit'),
# Ceka na autocomplete v3 # Ceka na autocomplete v3
# path('autocomplete/organizatori/', # path('autocomplete/organizatori/',

2
vue_frontend/src/router/index.js

@ -18,7 +18,7 @@ export default new Router({
props: true, props: true,
component: TreeNodeRoot component: TreeNodeRoot
}, { }, {
path: '/zadani/aktualni', path: '/aktualni/zadani',
name: 'treenode_zadani', name: 'treenode_zadani',
props: {'tnid': 1655}, props: {'tnid': 1655},
component: TreeNodeRoot component: TreeNodeRoot

Loading…
Cancel
Save