Browse Source

Merge branch 'data_migrations' into test

middleware_test
Pavel "LEdoian" Turinsky 3 years ago
parent
commit
5db62cf94c
  1. 2
      data/flat.json
  2. 17
      seminar/migrations/0051_resitel_to_osoba.py
  3. 10
      seminar/migrations/0052_user_to_organizator.py
  4. 2
      seminar/urls.py

2
data/flat.json

@ -121,7 +121,7 @@
},
{
"fields": {
"content": "<p>Svá řešení či případné dotazy nám můžete&nbsp;posílat buď klasickou, nebo elektronickou poštou:</p>\r\n\r\n<p><strong>Adresa redakce</strong>:</p>\r\n\r\n<p>M&amp;M, OPMK MFF UK<br />\r\nKe Karlovu 3<br />\r\n121&nbsp;16 Praha&nbsp;2</p>\r\n\r\n<p><strong>E-mail</strong>:<a href=\"mailto:mam@matfyz.cz\" style=\"color: rgb(133, 49, 1); line-height: 20.8px;\"> mam@matfyz.cz</a></p>\r\n\r\n<p>&nbsp;</p>\r\n\r\n<p><strong>Facebook:</strong>&nbsp;<a href=\"https://www.facebook.com/casopis.MaM?fref=ts\">Korespondenční seminář M&amp;M</a></p>\r\n\r\n<p><strong>Google Kalendář:</strong>&nbsp;<a href=\"https://calendar.google.com/calendar/embed?src=casopis.mam%40gmail.com&amp;ctz=Europe%2FPrague\">casopis.mam@gmail.com</a></p>\r\n\r\n<p>&nbsp;</p>\r\n\r\n<p>Během školního roku je velká část <a href=\"/o-nas/organizatori/\"><strong>organizátorů</strong></a> k zastižení na koleji 17. listopadu či jinde po Praze.</p>",
"content": "<p>Svá řešení nahrávejte do <strong><a href=\"/resitel/nahraj_reseni\">odevzdávátka</a></strong>.</p>\r\n\r\n<p>&nbsp;</p>\r\n\r\n<p>Máte-li nějaké dotazy, neváhejte nás kontaktovat.</p>\r\n\r\n<p><strong>E-mail</strong>: <a href=\"mailto:mam@matfyz.cz\" style=\"color: rgb(133, 49, 1); line-height: 20.8px;\">mam@matfyz.cz</a></p>\r\n\r\n<p><strong>Facebook:</strong>&nbsp;<a href=\"https://www.facebook.com/casopis.MaM?fref=ts\">Korespondenční seminář M&amp;M</a></p>\r\n\r\n<p><strong>Adresa redakce</strong>:</p>\r\n\r\n<p>M&amp;M, OPMK MFF UK<br />\r\nKe Karlovu 3<br />\r\n121&nbsp;16 Praha&nbsp;2</p>\r\n\r\n<p>&nbsp;</p>\r\n\r\n<p>Akce a termíny pro odevzdávání řešení najdete v našem kalendáři.</p>\r\n\r\n<p><strong>Google Kalendář:</strong>&nbsp;<a href=\"https://calendar.google.com/calendar/embed?src=casopis.mam%40gmail.com&amp;ctz=Europe%2FPrague\">casopis.mam@gmail.com</a></p>\r\n\r\n<p>&nbsp;</p>\r\n\r\n<p>Během školního roku je velká část <a href=\"/o-nas/organizatori/\"><strong>organizátorů</strong></a> k zastižení na koleji 17. listopadu či jinde po Praze.</p>",
"enable_comments": false,
"registration_required": false,
"sites": [

17
seminar/migrations/0051_resitel_to_osoba.py

@ -4,13 +4,15 @@ from __future__ import unicode_literals
from django.db import migrations
from datetime import date
def resitel_to_osoba(apps,schema_editor):
Resitel = apps.get_model('seminar','Resitel')
Osoba = apps.get_model('seminar','Osoba')
for r in Resitel.objects.all():
o = Osoba()
o.datum_narozeni = r.datum_narozeni
o.datum_registrace = r.datum_prihlaseni
o.datum_registrace = r.datum_prihlaseni if r.datum_prihlaseni else date.max # Myslím si, že None by způsobilo použití defaultu
o.datum_souhlasu_udaje = r.datum_souhlasu_udaje
o.datum_souhlasu_zasilani = r.datum_souhlasu_zasilani
o.email = r.email
@ -28,26 +30,23 @@ def resitel_to_osoba(apps,schema_editor):
if u.first_name:
if not o.jmeno:
o.jmeno = u.first_name
u.first_name = 'Použij osobu!'
u.first_name += ' (Uživatel!)'
elif o.jmeno == u.first_name:
u.first_name = 'Použij osobu!'
u.first_name += ' (Uživatel!)'
else:
raise ValueError('jmeno a first_name rozdílné: "{}" vs. "{}"'.format(o.jmeno, u.first_name))
if u.last_name:
if not o.prijmeni:
o.prijmeni = u.last_name
u.last_name = 'Použij osobu!'
u.last_name += ' (Uživatel!)'
elif o.prijmeni == u.last_name:
u.last_name = 'Použij osobu!'
u.last_name += ' (Uživatel!)'
else:
raise ValueError('prijmeni a last_name rozdílné: "{}" vs. "{}"'.format(o.prijmeni, u.last_name))
if u.email:
if not o.email:
o.email = u.email
u.email = 'Použij osobu!'
elif o.email == u.email:
u.email = 'Použij osobu!'
else:
elif o.email != u.email:
raise ValueError('o.email a u.email rozdílné: "{}" vs. "{}"'.format(o.email, u.email))
u.save()

10
seminar/migrations/0052_user_to_organizator.py

@ -4,6 +4,8 @@ from __future__ import unicode_literals
from django.db import migrations
from datetime import date
import logging
logger = logging.getLogger(__name__)
@ -23,6 +25,8 @@ def spoj_k_organizatorum_osoby(apps, scema_editor):
# Je to podezřelé, ale prostě vyrobíme novou osobu.
osoba = Osoba(user=user)
# Téhle osobě nejdou nastavit detaily, protože žádné nemáme.
# Datum registrace budiž minimální
osoba.datum_registrace = date.min
else:
logger.info(f'Org {org.user.email}(ID: {org.id}) má uživatele {user}')
# 💢💢💢 Python nemá goto, ale prý má výjimky… 💢💢💢
@ -53,9 +57,9 @@ def spoj_k_organizatorum_osoby(apps, scema_editor):
osoba.jmeno = user.first_name
osoba.prijmeni = user.last_name
osoba.email = user.email
user.jmeno = "Použij osobu!"
user.prijmeni = "Použij osobu!"
user.email = "Použij osobu!"
user.jmeno += " (Uživatel!)"
user.prijmeni += " (Uživatel!)"
osoba.datum_registrace = min(osoba.datum_registrace, user.date_joined, key=lambda d: d if d is not None else date.max)
user.save()
except EndException: pass

2
seminar/urls.py

@ -156,7 +156,7 @@ urlpatterns = [
path('api/autocomplete/problem/odevzdatelny',views.OdevzdatelnyProblemAutocomplete.as_view(), name='autocomplete_problem_odevzdatelny'),
path('temp/add_solution', org_required(views.AddSolutionView.as_view()), name='seminar_vloz_reseni'),
path('temp/nahraj_reseni', resitel_required(views.NahrajReseniView.as_view()), name='seminar_nahraj_reseni'),
path('resitel/nahraj_reseni', resitel_required(views.NahrajReseniView.as_view()), name='seminar_nahraj_reseni'),
re_path(r'^temp/vue/.*$',views.VueTestView.as_view(),name='vue_test_view'),
path('temp/image_upload/', views.NahrajObrazekKTreeNoduView.as_view()),

Loading…
Cancel
Save