Merge branch 'data_migrations' into test
This commit is contained in:
		
						commit
						5db62cf94c
					
				
					 4 changed files with 18 additions and 15 deletions
				
			
		|  | @ -121,7 +121,7 @@ | |||
| 	}, | ||||
| 	{ | ||||
| 		"fields": { | ||||
| 			"content": "<p>Svá řešení či případné dotazy nám můžete 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&M, OPMK MFF UK<br />\r\nKe Karlovu 3<br />\r\n121 16 Praha 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> </p>\r\n\r\n<p><strong>Facebook:</strong> <a href=\"https://www.facebook.com/casopis.MaM?fref=ts\">Korespondenční seminář M&M</a></p>\r\n\r\n<p><strong>Google Kalendář:</strong> <a href=\"https://calendar.google.com/calendar/embed?src=casopis.mam%40gmail.com&ctz=Europe%2FPrague\">casopis.mam@gmail.com</a></p>\r\n\r\n<p> </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> </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> <a href=\"https://www.facebook.com/casopis.MaM?fref=ts\">Korespondenční seminář M&M</a></p>\r\n\r\n<p><strong>Adresa redakce</strong>:</p>\r\n\r\n<p>M&M, OPMK MFF UK<br />\r\nKe Karlovu 3<br />\r\n121 16 Praha 2</p>\r\n\r\n<p> </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> <a href=\"https://calendar.google.com/calendar/embed?src=casopis.mam%40gmail.com&ctz=Europe%2FPrague\">casopis.mam@gmail.com</a></p>\r\n\r\n<p> </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": [ | ||||
|  |  | |||
|  | @ -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() | ||||
| 					 | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
|  | @ -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…
	
		Reference in a new issue
	
	 Pavel "LEdoian" Turinsky
						Pavel "LEdoian" Turinsky