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": { | 		"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, | 			"enable_comments": false, | ||||||
| 			"registration_required": false, | 			"registration_required": false, | ||||||
| 			"sites": [ | 			"sites": [ | ||||||
|  | @ -179,4 +179,4 @@ | ||||||
| 		"model": "flatpages.flatpage", | 		"model": "flatpages.flatpage", | ||||||
| 		"pk": 28 | 		"pk": 28 | ||||||
| 	} | 	} | ||||||
| ] | ] | ||||||
|  | @ -4,13 +4,15 @@ from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations | from django.db import migrations | ||||||
| 
 | 
 | ||||||
|  | from datetime import date | ||||||
|  | 
 | ||||||
| def resitel_to_osoba(apps,schema_editor): | def resitel_to_osoba(apps,schema_editor): | ||||||
| 	Resitel = apps.get_model('seminar','Resitel') | 	Resitel = apps.get_model('seminar','Resitel') | ||||||
| 	Osoba = apps.get_model('seminar','Osoba') | 	Osoba = apps.get_model('seminar','Osoba') | ||||||
| 	for r in Resitel.objects.all(): | 	for r in Resitel.objects.all(): | ||||||
| 		o = Osoba() | 		o = Osoba() | ||||||
| 		o.datum_narozeni = r.datum_narozeni | 		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_udaje = r.datum_souhlasu_udaje | ||||||
| 		o.datum_souhlasu_zasilani = r.datum_souhlasu_zasilani | 		o.datum_souhlasu_zasilani = r.datum_souhlasu_zasilani | ||||||
| 		o.email = r.email | 		o.email = r.email | ||||||
|  | @ -28,26 +30,23 @@ def resitel_to_osoba(apps,schema_editor): | ||||||
| 			if u.first_name: | 			if u.first_name: | ||||||
| 				if not o.jmeno: | 				if not o.jmeno: | ||||||
| 					o.jmeno = u.first_name | 					o.jmeno = u.first_name | ||||||
| 					u.first_name = 'Použij osobu!' | 					u.first_name += ' (Uživatel!)' | ||||||
| 				elif o.jmeno == u.first_name: | 				elif o.jmeno == u.first_name: | ||||||
| 					u.first_name = 'Použij osobu!' | 					u.first_name += ' (Uživatel!)' | ||||||
| 				else: | 				else: | ||||||
| 					raise ValueError('jmeno a first_name rozdílné: "{}" vs. "{}"'.format(o.jmeno, u.first_name)) | 					raise ValueError('jmeno a first_name rozdílné: "{}" vs. "{}"'.format(o.jmeno, u.first_name)) | ||||||
| 			if u.last_name: | 			if u.last_name: | ||||||
| 				if not o.prijmeni: | 				if not o.prijmeni: | ||||||
| 					o.prijmeni = u.last_name | 					o.prijmeni = u.last_name | ||||||
| 					u.last_name = 'Použij osobu!' | 					u.last_name += ' (Uživatel!)' | ||||||
| 				elif o.prijmeni == u.last_name: | 				elif o.prijmeni == u.last_name: | ||||||
| 					u.last_name = 'Použij osobu!' | 					u.last_name += ' (Uživatel!)' | ||||||
| 				else: | 				else: | ||||||
| 					raise ValueError('prijmeni a last_name rozdílné: "{}" vs. "{}"'.format(o.prijmeni, u.last_name)) | 					raise ValueError('prijmeni a last_name rozdílné: "{}" vs. "{}"'.format(o.prijmeni, u.last_name)) | ||||||
| 			if u.email: | 			if u.email: | ||||||
| 				if not o.email: | 				if not o.email: | ||||||
| 					o.email = u.email | 					o.email = u.email | ||||||
| 					u.email = 'Použij osobu!' | 				elif o.email != u.email: | ||||||
| 				elif o.email == u.email: |  | ||||||
| 					u.email = 'Použij osobu!' |  | ||||||
| 				else: |  | ||||||
| 					raise ValueError('o.email a u.email rozdílné: "{}" vs. "{}"'.format(o.email, u.email)) | 					raise ValueError('o.email a u.email rozdílné: "{}" vs. "{}"'.format(o.email, u.email)) | ||||||
| 			u.save() | 			u.save() | ||||||
| 					 | 					 | ||||||
|  |  | ||||||
|  | @ -4,6 +4,8 @@ from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations | from django.db import migrations | ||||||
| 
 | 
 | ||||||
|  | from datetime import date | ||||||
|  | 
 | ||||||
| import logging | import logging | ||||||
| 
 | 
 | ||||||
| logger = logging.getLogger(__name__) | 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. | 			# Je to podezřelé, ale prostě vyrobíme novou osobu. | ||||||
| 			osoba = Osoba(user=user) | 			osoba = Osoba(user=user) | ||||||
| 			# Téhle osobě nejdou nastavit detaily, protože žádné nemáme. | 			# Téhle osobě nejdou nastavit detaily, protože žádné nemáme. | ||||||
|  | 			# Datum registrace budiž minimální | ||||||
|  | 			osoba.datum_registrace = date.min | ||||||
| 		else: | 		else: | ||||||
| 			logger.info(f'Org {org.user.email}(ID: {org.id}) má uživatele {user}') | 			logger.info(f'Org {org.user.email}(ID: {org.id}) má uživatele {user}') | ||||||
| 			# 💢💢💢 Python nemá goto, ale prý má výjimky… 💢💢💢 | 			# 💢💢💢 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.jmeno = user.first_name | ||||||
| 				osoba.prijmeni = user.last_name | 				osoba.prijmeni = user.last_name | ||||||
| 				osoba.email = user.email | 				osoba.email = user.email | ||||||
| 				user.jmeno = "Použij osobu!" | 				user.jmeno += " (Uživatel!)" | ||||||
| 				user.prijmeni = "Použij osobu!" | 				user.prijmeni += " (Uživatel!)" | ||||||
| 				user.email = "Použij osobu!" | 				osoba.datum_registrace = min(osoba.datum_registrace, user.date_joined, key=lambda d: d if d is not None else date.max) | ||||||
| 				user.save() | 				user.save() | ||||||
| 
 | 
 | ||||||
| 			except EndException: pass | 			except EndException: pass | ||||||
|  |  | ||||||
|  | @ -156,7 +156,7 @@ urlpatterns = [ | ||||||
| 	path('api/autocomplete/problem/odevzdatelny',views.OdevzdatelnyProblemAutocomplete.as_view(), name='autocomplete_problem_odevzdatelny'), | 	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/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'), | 	re_path(r'^temp/vue/.*$',views.VueTestView.as_view(),name='vue_test_view'), | ||||||
| 	path('temp/image_upload/', views.NahrajObrazekKTreeNoduView.as_view()), | 	path('temp/image_upload/', views.NahrajObrazekKTreeNoduView.as_view()), | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Pavel "LEdoian" Turinsky
						Pavel "LEdoian" Turinsky