Merge branch 'test' into data_migrations
This commit is contained in:
		
						commit
						090d7be794
					
				
					 32 changed files with 482 additions and 99 deletions
				
			
		
							
								
								
									
										187
									
								
								MIGRATIONS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										187
									
								
								MIGRATIONS
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,187 @@ | |||
| Jak zvládnout migrace na nový model: | ||||
| 
 | ||||
| - V mojí verzi databáze mají úlohy-Problémy typ "b'uloha'" | ||||
| 
 | ||||
| 
 | ||||
| Log migrace na nový model: | ||||
| 
 | ||||
| Operations to perform: | ||||
|   Apply all migrations: admin, auth, contenttypes, django_comments, flatpages, fluent_comments, galerie, korektury, prednasky, reversion, seminar, sessions, sites, sitetree, taggit, threadedcomments | ||||
| Running migrations: | ||||
|   Applying admin.0003_logentry_add_action_flag_choices... OK | ||||
|   Applying auth.0009_alter_user_last_name_max_length... OK | ||||
|   Applying auth.0010_alter_group_name_max_length... OK | ||||
|   Applying auth.0011_update_proxy_permissions... OK | ||||
|   Applying galerie.0008_auto_20190430_2340... OK | ||||
|   Applying galerie.0009_auto_20190610_2358... OK | ||||
|   Applying galerie.0010_auto_20200819_0947... OK | ||||
|   Applying korektury.0016_auto_20190430_2340... OK | ||||
|   Applying korektury.0017_auto_20190610_2358... OK | ||||
|   Applying prednasky.0011_auto_20190430_2340... OK | ||||
|   Applying prednasky.0012_auto_20190610_2358... OK | ||||
|   Applying seminar.0049_auto_20190430_2354... OK | ||||
|   Applying seminar.0050_auto_20190510_2228... OK | ||||
|   Applying seminar.0051_resitel_to_osoba... OK | ||||
|   Applying seminar.0052_user_to_organizator... OK | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2004-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (1998-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2017-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2017-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2014-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2011-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2013-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2004-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2013-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2012-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2007-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2011-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2009-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2009-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2008-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2005-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2015-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2001-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2010-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2008-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2006-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2002-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2005-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (1999-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2003-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2000-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2002-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2001-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (1996-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2000-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (1999-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (1996-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (1994-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2012-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2016-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2018-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2014-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2019-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2006-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (1995-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2007-12-31 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2015-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2016-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2018-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2019-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
| /aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2020-01-01 00:00:00) while time zone support is active. | ||||
|   RuntimeWarning) | ||||
|   Applying seminar.0053_organizator_organizuje_od_do... OK | ||||
|   Applying seminar.0055_smazat_nemigrovane_zastarale_veci... OK | ||||
|   Applying seminar.0056_vrcholy_pro_rocniky_a_cisla... OK | ||||
|   Applying seminar.0057_reseni_to_reseni_hodnoceni...!!!!!!!!!!!!!!! | ||||
| 31397 Reseni object (31397) | ||||
| !!!!!!!!!!!!!!! | ||||
| !!!!!!!!!!!!!!! | ||||
| 31396 Reseni object (31396) | ||||
| !!!!!!!!!!!!!!! | ||||
| !!!!!!!!!!!!!!! | ||||
| 31395 Reseni object (31395) | ||||
| !!!!!!!!!!!!!!! | ||||
| !!!!!!!!!!!!!!! | ||||
| 31394 Reseni object (31394) | ||||
| !!!!!!!!!!!!!!! | ||||
| !!!!!!!!!!!!!!! | ||||
| 31393 Reseni object (31393) | ||||
| !!!!!!!!!!!!!!! | ||||
|  OK | ||||
|   Applying seminar.0058_problem_to_uloha_tema_clanek... OK | ||||
|   Applying seminar.fix_0058... OK | ||||
|   Applying seminar.0059_vytvorit_pohadkanode... OK | ||||
|   Applying seminar.0060_spoj_stromy... OK | ||||
|   Applying seminar.0061_kill_frankenstein... OK | ||||
|   Applying seminar.0062_redukce_modelu_pohadky... OK | ||||
|   Applying seminar.0063_procisteni_migraci... OK | ||||
|   Applying seminar.0064_auto_20190610_2358... OK | ||||
|   Applying seminar.0065_treenode_polymorphic_ctype... OK | ||||
|   Applying seminar.0066_problem_polymorphic_ctype... OK | ||||
|   Applying seminar.0067_auto_20190814_0805... OK | ||||
|   Applying seminar.0068_treenode_nazev... OK | ||||
|   Applying seminar.0069_auto_20191120_2115... OK | ||||
|   Applying seminar.0070_auto_20191120_2357... OK | ||||
|   Applying seminar.0071_remove_nastaveni_aktualni_rocnik... OK | ||||
|   Applying seminar.0072_auto_20191204_2257... OK | ||||
|   Applying seminar.0073_copy_osoba_email_to_user_email... OK | ||||
|   Applying seminar.0074_auto_20200228_1401... OK | ||||
|   Applying seminar.0075_auto_20200228_2010... OK | ||||
|   Applying seminar.0076_auto_20200228_2013... OK | ||||
|   Applying seminar.0077_auto_20200318_2146... OK | ||||
|   Applying seminar.0078_otistenereseninode... OK | ||||
|   Applying seminar.0079_clanek_resitelsky... OK | ||||
|   Applying seminar.0080_zruseni_claneknode_a_konferanode... OK | ||||
|   Applying seminar.0081_auto_20200408_2221... OK | ||||
|   Applying seminar.0082_auto_20200506_1951... OK | ||||
|   Applying seminar.0083_auto_20200506_1952... OK | ||||
| WARNING 2020-08-20 00:49:07,941 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2215) | ||||
| WARNING 2020-08-20 00:49:07,953 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2221) | ||||
| WARNING 2020-08-20 00:49:07,959 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2212) | ||||
| WARNING 2020-08-20 00:49:07,965 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (1955) | ||||
| WARNING 2020-08-20 00:49:07,968 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2027) | ||||
| WARNING 2020-08-20 00:49:07,971 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (1981) | ||||
| WARNING 2020-08-20 00:49:07,974 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (1970) | ||||
| WARNING 2020-08-20 00:49:07,978 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2001) | ||||
| WARNING 2020-08-20 00:49:07,981 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2004) | ||||
| WARNING 2020-08-20 00:49:07,984 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (1941) | ||||
| WARNING 2020-08-20 00:49:07,990 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2024) | ||||
| WARNING 2020-08-20 00:49:07,993 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2031) | ||||
| WARNING 2020-08-20 00:49:07,997 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2211) | ||||
| WARNING 2020-08-20 00:49:08,005 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2073) | ||||
| WARNING 2020-08-20 00:49:08,017 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2018) | ||||
| WARNING 2020-08-20 00:49:08,022 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2222) | ||||
| WARNING 2020-08-20 00:49:08,028 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (1953) | ||||
| WARNING 2020-08-20 00:49:08,034 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2026) | ||||
|   Applying seminar.0084_clanek_cislo... OK | ||||
|   Applying seminar.0085_nepovinna_prezdivka... OK | ||||
|   Applying seminar.0086_auto_20200819_0959... OK | ||||
|   Applying sitetree.0001_initial... OK | ||||
|   Applying taggit.0003_taggeditem_add_unique_index... OK | ||||
| 
 | ||||
							
								
								
									
										8
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								Makefile
									
									
									
									
									
								
							|  | @ -65,7 +65,7 @@ schema_all.pdf: venv_check | |||
| # Deploy to current *mamweb-test* directory
 | ||||
| deploy_test: venv_check | ||||
| 	@if [ ${USER} != "mam-web" ]; then echo "Only possible by user mam-web"; exit 1; fi | ||||
| 	@if [ `pwd` != "/akce/mam/www/mamweb-test" ]; then echo "Only possible in /akce/mam/www/mamweb-test"; exit 1; fi | ||||
| 	@if [ `readlink -f .` != "/aux/akce/mam/www/mamweb-test" ]; then echo "Only possible in directory mamweb-test"; exit 1; fi | ||||
| 	@echo "Installing version from origin/test ..." | ||||
| 	git pull origin test | ||||
| 	git clean -f | ||||
|  | @ -81,9 +81,9 @@ deploy_test: venv_check | |||
| # Deploy to current *mamweb-prod* directory
 | ||||
| deploy_prod: venv_check | ||||
| 	@if [ ${USER} != "mam-web" ]; then echo "Only possible by user mam-web"; exit 1; fi | ||||
| 	@if [ `pwd` != "/akce/mam/www/mamweb-prod" ]; then echo "Only possible in /akce/mam/www/mamweb-prod"; exit 1; fi | ||||
| 	@if [ `readlink -f .` != "/aux/akce/mam/www/mamweb-prod" ]; then echo "Only possible in directory mamweb-prod"; exit 1; fi | ||||
| 	@echo "Backing up production DB ..." | ||||
| 	( cd .. && ./backup_prod_db.sh ) | ||||
| 	( cd -P .. && ./backup_prod_db.sh ) | ||||
| 	@echo "Installing version from origin/master ..." | ||||
| 	git pull origin master | ||||
| 	git clean -f | ||||
|  | @ -109,7 +109,7 @@ sync_prod_flatpages: venv_check | |||
| # Sync test media directory with production
 | ||||
| sync_test_media: | ||||
| 	@if [ ${USER} != "mam-web" ]; then echo "Only possible by user mam-web"; exit 1; fi | ||||
| 	@if [ `pwd` != "/akce/mam/www/mamweb-test" ]; then echo "Only possible in /akce/mam/www/mamweb-test"; exit 1; fi | ||||
| 	@if [ `readlink -f .` != "/aux/akce/mam/www/mamweb-test" ]; then echo "Only possible in /akce/mam/www/mamweb-test"; exit 1; fi | ||||
| 	rsync -av --delete /akce/mam/www/mamweb-prod/media/ ./media | ||||
| 
 | ||||
| # Sync test database with production database
 | ||||
|  |  | |||
|  | @ -30,14 +30,14 @@ def prepnout_fotogalerii_do_org_rezimu(modeladmin, request, queryset): | |||
| 
 | ||||
| class GalerieInline(admin.TabularInline): | ||||
| 	model = Obrazek | ||||
| 	fields = ['obrazek_velky', 'nazev', 'popis', 'obrazek_maly_tag'] | ||||
| 	fields = ['obrazek_velky', 'nazev', 'popis', 'obrazek_maly_tag', 'poradi'] | ||||
| 	readonly_fields = ['nazev', 'obrazek_maly_tag'] | ||||
| 	formfield_overrides = { | ||||
| 		models.TextField: {'widget': forms.TextInput}, | ||||
| 	} | ||||
| 
 | ||||
| class ObrazekAdmin(admin.ModelAdmin): | ||||
| 	list_display = ('obrazek_velky', 'nazev', 'popis', 'obrazek_maly_tag') | ||||
| 	list_display = ('obrazek_velky', 'nazev', 'popis', 'obrazek_maly_tag', 'poradi') | ||||
| 	search_fields = ['nazev','popis'] | ||||
| 
 | ||||
| class GalerieAdmin(admin.ModelAdmin): | ||||
|  |  | |||
							
								
								
									
										18
									
								
								galerie/migrations/0010_auto_20200819_0947.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								galerie/migrations/0010_auto_20200819_0947.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | |||
| # Generated by Django 2.2.15 on 2020-08-19 07:47 | ||||
| 
 | ||||
| from django.db import migrations, models | ||||
| 
 | ||||
| 
 | ||||
| class Migration(migrations.Migration): | ||||
| 
 | ||||
|     dependencies = [ | ||||
|         ('galerie', '0009_auto_20190610_2358'), | ||||
|     ] | ||||
| 
 | ||||
|     operations = [ | ||||
|         migrations.AlterField( | ||||
|             model_name='galerie', | ||||
|             name='poradi', | ||||
|             field=models.IntegerField(blank=True, default=0, verbose_name='Pořadí'), | ||||
|         ), | ||||
|     ] | ||||
|  | @ -94,7 +94,7 @@ class Galerie(models.Model): | |||
| 		on_delete=models.SET_NULL) | ||||
| 	soustredeni = models.ForeignKey(Soustredeni, blank = True, null = True, | ||||
| 		on_delete=models.PROTECT) | ||||
| 	poradi = models.IntegerField('Pořadí', blank = True, null = True) | ||||
| 	poradi = models.IntegerField('Pořadí', blank = True, null = False, default = 0) | ||||
| 
 | ||||
| 	def __str__(self): | ||||
| 		return self.nazev | ||||
|  |  | |||
|  | @ -38,7 +38,7 @@ def nahled(request, pk, soustredeni): | |||
| 	if not request.user.is_staff: | ||||
| 		podgalerie = podgalerie.filter(zobrazit__lt=1) | ||||
| 
 | ||||
| 	obrazky = Obrazek.objects.filter(galerie = galerie) | ||||
| 	obrazky = Obrazek.objects.filter(galerie = galerie).order_by('poradi', 'nazev') | ||||
| 	preview = zobrazit(galerie, request) | ||||
| 
 | ||||
| 	sourozenci = [] | ||||
|  | @ -82,7 +82,7 @@ def detail(request, pk, fotka, soustredeni): | |||
| 	galerie = get_object_or_404(Galerie, pk=pk) | ||||
| 	preview = zobrazit(galerie, request) | ||||
| 	obrazek = get_object_or_404(Obrazek, pk=fotka) | ||||
| 	obrazky = galerie.obrazek_set.all() | ||||
| 	obrazky = galerie.obrazek_set.all().order_by('poradi', 'nazev') | ||||
| 
 | ||||
| 	# vytvoreni a obslouzeni formulare | ||||
| 	if request.method == 'POST': | ||||
|  | @ -96,22 +96,23 @@ def detail(request, pk, fotka, soustredeni): | |||
| 	# Poradi aktualniho obrazku v galerii/stitku. | ||||
| 	for i in range(len(obrazky)): | ||||
| 		if obrazky[i] == obrazek: | ||||
| 			znacka = i | ||||
| 			poradi = i | ||||
| 			break | ||||
| 	else: | ||||
| 		# Obrazek neni v galerii/stitku. | ||||
| 		raise Http404 | ||||
| 
 | ||||
| 	 | ||||
| 	# Nacteni okolnich obrazku a galerii | ||||
| 	# TODO vyjmout zjisteni predchozich a nasledujicich galerii | ||||
| 	# a udelat z toho funkci, ktera se pouzije u nahledu | ||||
| 	predchozi_galerie = None | ||||
| 	nasledujici_galerie = None | ||||
| 	obrazky_dalsi = obrazky[znacka+1:znacka+NAHLEDU+1] | ||||
| 	if (znacka+1) > NAHLEDU: | ||||
| 		obrazky_predchozi = obrazky[znacka-NAHLEDU:znacka] | ||||
| 	obrazky_dalsi = obrazky[poradi+1:poradi+NAHLEDU+1] | ||||
| 	if (poradi+1) > NAHLEDU: | ||||
| 		obrazky_predchozi = obrazky[poradi-NAHLEDU:poradi] | ||||
| 	else: | ||||
| 		obrazky_predchozi = obrazky[0:znacka] | ||||
| 		obrazky_predchozi = obrazky[0:poradi] | ||||
| 		if galerie.poradi > 1: | ||||
| 			predchozi_galerie = Galerie.objects.\ | ||||
| 				filter(galerie_up=galerie.galerie_up).\ | ||||
|  | @ -120,10 +121,14 @@ def detail(request, pk, fotka, soustredeni): | |||
| 			predchozi_galerie = predchozi_galerie[0] | ||||
| 		else: | ||||
| 			predchozi_galerie = None | ||||
| 	if (znacka+1) == len(obrazky): | ||||
| 	if (poradi+1) == len(obrazky):		# Tohle je poslední obrázek | ||||
| 		if (galerie.poradi is not None | ||||
| 			and galerie.galerie_up is not None): | ||||
| 				nasledujici_galerie = Galerie.objects.\ | ||||
| 					filter(galerie_up=galerie.galerie_up).\ | ||||
| 					filter(poradi=(galerie.poradi+1)) | ||||
| 		else: | ||||
| 			nasledujici_galerie = None | ||||
| 		if nasledujici_galerie: | ||||
| 			nasledujici_galerie = nasledujici_galerie[0] | ||||
| 		else: | ||||
|  | @ -155,7 +160,6 @@ def detail(request, pk, fotka, soustredeni): | |||
| 		 'cesta': cesta_od_korene(galerie), | ||||
| 		}) | ||||
| 
 | ||||
| 
 | ||||
| def new_galerie(request, galerie, soustredeni): | ||||
| 
 | ||||
| 	# zjistime k jakemu soustredeni se vaze nove vytvarena galerie | ||||
|  |  | |||
|  | @ -79,16 +79,25 @@ class KorekturovanePDF(models.Model): | |||
| 		self.stran = 0 | ||||
| 		while True: | ||||
| 			res = subprocess.call([ | ||||
| 				"convert", | ||||
| 				"-density", "180x180", | ||||
| 				"-geometry", " 1024x1448", | ||||
| 				"%s[%d]" % (self.pdf.path, self.stran), | ||||
| 				os.path.join( | ||||
| 				#Parametry inspirovány chybovou hláškou imagemagicku | ||||
| 				"gs", | ||||
| 				"-sstdout=%stderr", | ||||
| 				"-dSAFER", | ||||
| 				"-dNOPAUSE", | ||||
| 				"-dBATCH", | ||||
| 				"-dNOPROMPT", | ||||
| 				"-sDEVICE=pngalpha", | ||||
| 				"-r180x180", | ||||
| 				"-dFirstPage=%d" % (self.stran+1), | ||||
| 				"-dLastPage=%d" % (self.stran+1), | ||||
| 				"-sOutputFile="+os.path.join( | ||||
| 					dirname, | ||||
| 					"%s-%d.png" % (self.get_prefix(), self.stran) | ||||
| 				) | ||||
| 					"%s-%d.png" % (self.get_prefix(), self.stran)), | ||||
| 				"-f%s" % (self.pdf.path) | ||||
| 			]) | ||||
| 			if res == 1: | ||||
| 			if not os.path.exists(os.path.join( | ||||
| 					dirname, | ||||
| 					"%s-%d.png" % (self.get_prefix(), self.stran))): | ||||
| 				break | ||||
| 			self.stran += 1 | ||||
| 		# Změnil se počet stran, ukládáme | ||||
|  |  | |||
|  | @ -1,5 +1,9 @@ | |||
| {% extends "base.html" %} | ||||
| 
 | ||||
| {% block submenu %} | ||||
|   {% include "korektury/submenu.html" %} | ||||
| {% endblock %} | ||||
| 
 | ||||
| {% block content %} | ||||
| {# blok do kterého se nacita text, v pripade jinyhc templatu obalit vlastnim blokem #} | ||||
| {% endblock %} | ||||
|  |  | |||
|  | @ -1,4 +1,11 @@ | |||
| {% extends "korektury/base.html" %} | ||||
| 
 | ||||
| {% block submenu %} | ||||
|   {% with "help" as selected %} | ||||
|     {% include "korektury/submenu.html" %} | ||||
|   {% endwith %} | ||||
| {% endblock %} | ||||
| 
 | ||||
| {% load staticfiles %} | ||||
| 
 | ||||
| {% block title %} Nápověda ke korigovátku {% endblock title %} | ||||
|  |  | |||
|  | @ -1,6 +1,10 @@ | |||
| {% extends "korektury/base.html" %} | ||||
| {% load staticfiles %} | ||||
| 
 | ||||
| {% block submenu %} | ||||
|   {% include "korektury/submenu.html" %} | ||||
| {% endblock %} | ||||
| 
 | ||||
| {% block script%} | ||||
|   <link rel="stylesheet" type="text/css" media="screen, projection" href="{% static "korektury/opraf-list.css" %}" /> | ||||
| {% endblock %} | ||||
|  |  | |||
							
								
								
									
										13
									
								
								korektury/templates/korektury/submenu.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								korektury/templates/korektury/submenu.html
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | |||
| {% with "/korektury" as cesta %} | ||||
| 
 | ||||
| <div id='submenu'> | ||||
| <ul> | ||||
|   <li class="{% if selected == "aktualni" %}selected{% endif %}"><a href="{{cesta}}/">Aktuální</a> | ||||
|   <li class="{% if selected == "zastarale" %}selected{% endif %}"><a href="{{cesta}}/zastarale/">Zastaralé</a> | ||||
|   <li class="{% if selected == "help" %}selected{% endif %}"><a href="{{cesta}}/help/">Nápověda</a> | ||||
| </ul> | ||||
| </div> | ||||
| 
 | ||||
| {% endwith %} | ||||
| 
 | ||||
| 
 | ||||
|  | @ -5,7 +5,8 @@ from . import views | |||
| staff_member_required = user_passes_test(lambda u: u.is_staff) | ||||
| 
 | ||||
| urlpatterns = [ | ||||
| 	path('korektury/', staff_member_required(views.KorekturyListView.as_view()), name='korektury-list'), | ||||
| 	path('korektury/', staff_member_required(views.KorekturyAktualniListView.as_view()), name='korektury-list'), | ||||
| 	path('korektury/zastarale/', staff_member_required(views.KorekturyZastaraleListView.as_view()), name='korektury-list'), | ||||
| 	path('korektury/<int:pdf>/', staff_member_required(views.KorekturyView.as_view()), name='korektury'), | ||||
| 	path('korektury/help/', staff_member_required(views.KorekturyHelpView.as_view()), name='korektury-help'), | ||||
| ] | ||||
|  |  | |||
|  | @ -29,6 +29,28 @@ class KorekturyListView(generic.ListView): | |||
| 		) | ||||
| 	template_name = 'korektury/seznam.html' | ||||
| 
 | ||||
| class KorekturyAktualniListView(KorekturyListView): | ||||
|     def get_queryset(self, *args, **kwargs): | ||||
|         queryset=super(KorekturyAktualniListView,self).get_queryset() | ||||
|         queryset=queryset.exclude(status="zastarale") | ||||
|         return queryset | ||||
| 
 | ||||
|     def get_context_data(self, **kwargs): | ||||
|         context = super(KorekturyAktualniListView,self).get_context_data(**kwargs) | ||||
|         context['selected'] = 'aktualni' | ||||
|         return context | ||||
| 
 | ||||
| class KorekturyZastaraleListView(KorekturyListView): | ||||
|     def get_queryset(self, *args, **kwargs): | ||||
|         queryset=super(KorekturyZastaraleListView,self).get_queryset() | ||||
|         queryset=queryset.filter(status="zastarale") | ||||
|         return queryset | ||||
| 
 | ||||
|     def get_context_data(self, **kwargs): | ||||
|         context = super(KorekturyZastaraleListView,self).get_context_data(**kwargs) | ||||
|         context['selected'] = 'zastarale' | ||||
|         return context | ||||
| 
 | ||||
| ### Korektury | ||||
| class KorekturyView(generic.TemplateView): | ||||
| 	model = Oprava | ||||
|  |  | |||
|  | @ -136,7 +136,6 @@ INSTALLED_APPS = ( | |||
| #    'admin_tools.theming', | ||||
| #    'admin_tools.menu', | ||||
| #    'admin_tools.dashboard', | ||||
|     'flat', | ||||
|     'django.contrib.admin', | ||||
| ) | ||||
| 
 | ||||
|  | @ -179,7 +178,8 @@ CKEDITOR_CONFIGS = { | |||
| #        'toolbar': 'full', | ||||
|         'height': '40em', | ||||
|         'width': '100%', | ||||
|         'toolbarStartupExpanded': False | ||||
|         'toolbarStartupExpanded': False, | ||||
|         'allowedContent' : True, | ||||
|     }, | ||||
| } | ||||
| 
 | ||||
|  | @ -248,7 +248,7 @@ LOGGING = { | |||
|                 'class': 'django.utils.log.AdminEmailHandler', | ||||
|                 'formatter': 'verbose',  | ||||
|                 }, | ||||
|             'mail_registraion': { | ||||
|             'mail_registration': { | ||||
|                 'level': 'WARN', | ||||
|                 'class': 'django.utils.log.AdminEmailHandler', | ||||
|                 'formatter': 'verbose',  | ||||
|  |  | |||
|  | @ -12,7 +12,7 @@ import os.path | |||
| # Import common settings | ||||
| from .settings_common import * # zatim nutne, casem snad vyresime # noqa | ||||
| 
 | ||||
| MIDDLEWARE_CLASSES += ( | ||||
| MIDDLEWARE += ( | ||||
|     'debug_toolbar.middleware.DebugToolbarMiddleware', | ||||
|     ) | ||||
| 
 | ||||
|  | @ -32,7 +32,7 @@ DEBUG = True | |||
| 
 | ||||
| TEMPLATES[0]['OPTIONS']['debug'] = True | ||||
| 
 | ||||
| ALLOWED_HOSTS = ['*.mam.mff.cuni.cz', 'atrey.karlin.mff.cuni.cz', 'mam.mff.cuni.cz', 'mam-test.kam.mff.cuni.cz', 'gimli.ms.mff.cuni.cz'] | ||||
| ALLOWED_HOSTS = ['*.mam.mff.cuni.cz', 'atrey.karlin.mff.cuni.cz', 'mam.mff.cuni.cz', 'mam-test.kam.mff.cuni.cz', 'gimli.ms.mff.cuni.cz', 'mam-test.ks.matfyz.cz'] | ||||
| 
 | ||||
| # Database | ||||
| # https://docs.djangoproject.com/en/1.7/ref/settings/#databases | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ chdir = /akce/mam/www/mamweb-prod/ | |||
| home = /akce/mam/www/mamweb-prod/ | ||||
| 
 | ||||
| module = mamweb.wsgi | ||||
| plugin = python | ||||
| plugin = python3 | ||||
| virtualenv = env | ||||
| master = True | ||||
| vacuum = True | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ chdir = /akce/mam/www/mamweb-test/ | |||
| home = /akce/mam/www/mamweb-test/ | ||||
| 
 | ||||
| module = mamweb.wsgi | ||||
| plugin = python | ||||
| plugin = python3 | ||||
| virtualenv = env | ||||
| master = True | ||||
| vacuum = True | ||||
|  |  | |||
|  | @ -1,19 +1,7 @@ | |||
| {% block content %} | ||||
| {% spaceless %} | ||||
| {% for hlas in hlasovani %} | ||||
| hlas({{hlas.ucastnik}},{{hlas.prednaska.id}},{{hlas.body}}) | ||||
| {% endfor %} | ||||
| {% for prednaska in prednasky %} | ||||
| prednaska({{prednaska.id}},{{prednaska.org.id}},{{prednaska.obtiznost}},{{prednaska.obor}}) | ||||
| {% endfor %} | ||||
| {% for org in orgove %} | ||||
| org({{org.id}},4,0,15) | ||||
| {% endfor %} | ||||
| {% for org in orgove %} | ||||
| {{org.id}};{{org}} | ||||
| {% endfor %} | ||||
| {% for prednaska in prednasky %} | ||||
| {{prednaska.id}};{{prednaska.nazev}};{{prednaska.org.id}} | ||||
| {{prednaska.id}};{{prednaska.nazev}};{{prednaska.org}} | ||||
| {{prednaska.body}} | ||||
| {% endfor %} | ||||
| {% endspaceless %} | ||||
|  |  | |||
|  | @ -57,12 +57,26 @@ class SeznamListView(generic.ListView): | |||
| 		self.seznam = get_object_or_404(Seznam, id=self.kwargs["seznam"]) | ||||
| 		prednasky = Prednaska.objects.filter(seznamy=self.seznam).order_by( | ||||
| 			'org__user__first_name', 'org__user__last_name' | ||||
| 		).annotate(body=Sum('hlasovani__body')) | ||||
| 		) | ||||
| 		return prednasky | ||||
| 
 | ||||
| 	# FIXME nahradit anotaci s filtrem po prechodu na Django 2.2 | ||||
| 	def get_context_data(self,**kwargs): | ||||
| 		context = super(SeznamListView, self).get_context_data(**kwargs) | ||||
| 
 | ||||
| 		# hlasovani se vztahuje k nejnovejsimu soustredeni | ||||
| 		sous = Soustredeni.objects.first() | ||||
| 		seznam = Seznam.objects.filter(soustredeni = sous, stav = STAV_NAVRH).first() | ||||
| 	 | ||||
| 		for obj in self.object_list: | ||||
| 			hlasovani_set = obj.hlasovani_set.filter(seznam=seznam).only('body') | ||||
| 			obj.body = sum(map(lambda x: x.body,hlasovani_set)) | ||||
| 
 | ||||
| 		return context | ||||
| 
 | ||||
| 
 | ||||
| def SeznamExportView(request, seznam): | ||||
| 	u"""Vypíše výsledky hlasování ve formátu pro prologovský optimalizátor""" | ||||
| 	"""Vypíše výsledky hlasování ve formátu pro prologovský optimalizátor""" | ||||
| 	# TODO zřejmě se nepoužívá, časem vyřadit? nahradit tabulkou vhodnější pro | ||||
| 	# lidi? | ||||
| 	hlasovani = Hlasovani.objects.filter(seznam=seznam) | ||||
|  |  | |||
|  | @ -1,17 +1,17 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| 
 | ||||
| from django.core.management.base import NoArgsCommand | ||||
| from django.core.management.base import BaseCommand | ||||
| from django.contrib.sessions.models import Session | ||||
| from django.contrib.auth.models import User | ||||
| 
 | ||||
| class Command(NoArgsCommand): | ||||
| class Command(BaseCommand): | ||||
|     u"""Vypiš username přihlášeného orga s daným session_key. | ||||
| 
 | ||||
|     Příkaz pro manage.py, který ze vstupu přečte session_key (tak, jak je | ||||
|     uložen v cookie sessionid) a pokud session existuje a příslušný přihlášený | ||||
|     uživatel má právo přihlásit se do admina, vypíše jeho username. | ||||
|     """ | ||||
|     def handle_noargs(self, **options): | ||||
|     def handle(self, *args, **options): | ||||
|         session_key = raw_input() | ||||
|         s = Session.objects.get(pk=session_key).get_decoded() | ||||
|         user_id = s['_auth_user_id'] | ||||
|  |  | |||
|  | @ -511,7 +511,7 @@ def vyrob_problemum_ctypes(apps, schema_editor): | |||
| 
 | ||||
| class Migration(migrations.Migration): | ||||
|     atomic = False | ||||
|     replaces = [('seminar', '0001_initial'), ('seminar', '0002_add_body_views'), ('seminar', '0003_add_skola_zs_ss'), ('seminar', '0004_add_old_dakos_id'), ('seminar', '0005_alter_problem_autor'), ('seminar', '0006_problem_add_timestamp'), ('seminar', '0007_problem_zamereni'), ('seminar', '0008_reseni_forma'), ('seminar', '0009_rename_imported_IDs'), ('seminar', '0010_alter_rok_maturity'), ('seminar', '0011_alter_timestamp_def'), ('seminar', '0012_remove_soustredeni_ucastnici'), ('seminar', '0013_soustredeni_ucastnici_through_model'), ('seminar', '0014_uprava_poznamek'), ('seminar', '0015_soustredeni_text'), ('seminar', '0016_texty_problemu'), ('seminar', '0017_texty_problemu_minor'), ('seminar', '0018_problemnavrh_problemzadany'), ('seminar', '0019_rocnik_ciselne'), ('seminar', '0020_indexy_a_razeni'), ('seminar', '0021_cislo_verejna_vysledkovka'), ('seminar', '0022_decimal_body'), ('seminar', '0023_add_novinky'), ('seminar', '0024_add_organizator'), ('seminar', '0025_zmena_cesty_nahravani_obrazku'), ('seminar', '0026_soustredeni_typ'), ('seminar', '0027_export_flag_a_typ_akce'), ('seminar', '0028_add_body_celkem_views'), ('seminar', '0029_fix_body_celkem_views'), ('seminar', '0030_add_vysledky'), ('seminar', '0031_cislo_pdf'), ('seminar', '0032_cislo_pdf_blank_typos'), ('seminar', '0033_organizator_studuje_popisek'), ('seminar', '0034_reseni_forma_default_email'), ('seminar', '0035_django_imagekit'), ('seminar', '0036_add_org_to_soustredeni'), ('seminar', '0037_prispevek'), ('seminar', '0038_change_meta_prispevek'), ('seminar', '0039_pohadka'), ('seminar', '0040_pohadka_nepovinny_autor'), ('seminar', '0041_konfery'), ('seminar', '0042_cislo_faze'), ('seminar', '0043_uprava_faze'), ('seminar', '0044_uprava_faze'), ('seminar', '0045_cislo_pridani_faze_nahrano'), ('seminar', '0042_auto_20161005_0847'), ('seminar', '0046_merge'), ('seminar', '0047_auto_20170120_2118'), ('seminar', '0048_add_cislo_datum_deadline_soustredeni'), ('seminar', '0049_auto_20190430_2354'), ('seminar', '0050_auto_20190510_2228'), ('seminar', '0051_resitel_to_osoba'), ('seminar', '0052_user_to_organizator'), ('seminar', '0053_organizator_organizuje_od_do'), ('seminar', '0055_smazat_nemigrovane_zastarale_veci'), ('seminar', '0056_vrcholy_pro_rocniky_a_cisla'), ('seminar', '0057_reseni_to_reseni_hodnoceni'), ('seminar', '0058_problem_to_uloha_tema_clanek'), ('seminar', '0059_vytvorit_pohadkanode'), ('seminar', '0060_spoj_stromy'), ('seminar', '0061_kill_frankenstein'), ('seminar', '0062_redukce_modelu_pohadky'), ('seminar', '0063_procisteni_migraci'), ('seminar', '0064_auto_20190610_2358'), ('seminar', '0065_treenode_polymorphic_ctype'), ('seminar', '0066_problem_polymorphic_ctype'), ('seminar', '0067_auto_20190814_0805')] | ||||
|     replaces = [('seminar', '0001_initial'), ('seminar', '0002_add_body_views'), ('seminar', '0003_add_skola_zs_ss'), ('seminar', '0004_add_old_dakos_id'), ('seminar', '0005_alter_problem_autor'), ('seminar', '0006_problem_add_timestamp'), ('seminar', '0007_problem_zamereni'), ('seminar', '0008_reseni_forma'), ('seminar', '0009_rename_imported_IDs'), ('seminar', '0010_alter_rok_maturity'), ('seminar', '0011_alter_timestamp_def'), ('seminar', '0012_remove_soustredeni_ucastnici'), ('seminar', '0013_soustredeni_ucastnici_through_model'), ('seminar', '0014_uprava_poznamek'), ('seminar', '0015_soustredeni_text'), ('seminar', '0016_texty_problemu'), ('seminar', '0017_texty_problemu_minor'), ('seminar', '0018_problemnavrh_problemzadany'), ('seminar', '0019_rocnik_ciselne'), ('seminar', '0020_indexy_a_razeni'), ('seminar', '0021_cislo_verejna_vysledkovka'), ('seminar', '0022_decimal_body'), ('seminar', '0023_add_novinky'), ('seminar', '0024_add_organizator'), ('seminar', '0025_zmena_cesty_nahravani_obrazku'), ('seminar', '0026_soustredeni_typ'), ('seminar', '0027_export_flag_a_typ_akce'), ('seminar', '0028_add_body_celkem_views'), ('seminar', '0029_fix_body_celkem_views'), ('seminar', '0030_add_vysledky'), ('seminar', '0031_cislo_pdf'), ('seminar', '0032_cislo_pdf_blank_typos'), ('seminar', '0033_organizator_studuje_popisek'), ('seminar', '0034_reseni_forma_default_email'), ('seminar', '0035_django_imagekit'), ('seminar', '0036_add_org_to_soustredeni'), ('seminar', '0037_prispevek'), ('seminar', '0038_change_meta_prispevek'), ('seminar', '0039_pohadka'), ('seminar', '0040_pohadka_nepovinny_autor'), ('seminar', '0041_konfery'), ('seminar', '0042_cislo_faze'), ('seminar', '0043_uprava_faze'), ('seminar', '0044_uprava_faze'), ('seminar', '0045_cislo_pridani_faze_nahrano'), ('seminar', '0042_auto_20161005_0847'), ('seminar', '0046_merge'), ('seminar', '0047_auto_20170120_2118'), ('seminar', '0048_add_cislo_datum_deadline_soustredeni'), ('seminar', '0049_auto_20190430_2354'), ('seminar', '0050_auto_20190510_2228'), ('seminar', '0051_resitel_to_osoba'), ('seminar', '0052_user_to_organizator'), ('seminar', '0053_organizator_organizuje_od_do'), ('seminar', '0055_smazat_nemigrovane_zastarale_veci'), ('seminar', '0056_vrcholy_pro_rocniky_a_cisla'), ('seminar', '0057_reseni_to_reseni_hodnoceni'), ('seminar', '0058_problem_to_uloha_tema_clanek'), ('seminar', 'fix_0058'), ('seminar', '0059_vytvorit_pohadkanode'), ('seminar', '0060_spoj_stromy'), ('seminar', '0061_kill_frankenstein'), ('seminar', '0062_redukce_modelu_pohadky'), ('seminar', '0063_procisteni_migraci'), ('seminar', '0064_auto_20190610_2358'), ('seminar', '0065_treenode_polymorphic_ctype'), ('seminar', '0066_problem_polymorphic_ctype'), ('seminar', '0067_auto_20190814_0805')] | ||||
| 
 | ||||
|     initial = True | ||||
| 
 | ||||
|  | @ -1816,6 +1816,12 @@ class Migration(migrations.Migration): | |||
|             konfery_rucne, | ||||
|         ), | ||||
| 
 | ||||
|         # migr "fix 0058" | ||||
|         migrations.RunSQL( | ||||
|             "update seminar_problemy set typ = 'uloha' where typ like 'b_uloha_';", | ||||
|             "update seminar_problemy set typ = 'uloha' where typ like 'b_uloha_';" | ||||
|         ), | ||||
| 
 | ||||
|         # migr 0059 | ||||
|         migrations.RunPython( | ||||
|             vytvor_pohadkanode, | ||||
|  |  | |||
|  | @ -21,7 +21,7 @@ def vytvor_pohadkanode(apps, schema_editor): | |||
| class Migration(migrations.Migration): | ||||
| 
 | ||||
| 	dependencies = [ | ||||
| 		('seminar', '0058_problem_to_uloha_tema_clanek'), | ||||
| 		('seminar', 'fix_0058'), | ||||
| 	] | ||||
| 
 | ||||
| 	operations = [ | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ import django.db.models.deletion | |||
| 
 | ||||
| def vyrob_treenodum_ctypes(apps, schema_editor): | ||||
| 	# Kód zkopírovaný z dokumentace: https://django-polymorphic.readthedocs.io/en/stable/migrating.html | ||||
| 	# XXX: Nevím, jestli se tohle náhodou nemělo spustit na všech childech (jen/i) | ||||
| 	# NOTE: Tahle migrace je špatně, 0087 ji opravuje. Možno squashnout pryč. | ||||
| 	TreeNode = apps.get_model('seminar', 'TreeNode') | ||||
| 	ContentType = apps.get_model('contenttypes', 'ContentType') | ||||
| 	 | ||||
|  | @ -27,5 +27,5 @@ class Migration(migrations.Migration): | |||
| 			name='polymorphic_ctype', | ||||
| 			field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_seminar.treenode_set+', to='contenttypes.ContentType'), | ||||
| 		), | ||||
| 		migrations.RunPython(vyrob_treenodum_ctypes, migrations.RunPython.noop), | ||||
| 		migrations.RunPython(vyrob_treenodum_ctypes, migrations.RunPython.noop, elidable=True), | ||||
| 	] | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ import django.db.models.deletion | |||
| 
 | ||||
| def vyrob_problemum_ctypes(apps, schema_editor): | ||||
| 	# Kód zkopírovaný z dokumentace: https://django-polymorphic.readthedocs.io/en/stable/migrating.html | ||||
| 	# XXX: Nevím, jestli se tohle náhodou nemělo spustit na všech childech (jen/i) | ||||
| 	# NOTE: Tahle migrace je špatně, 0087 ji opravuje. Možno squashnout pryč. | ||||
| 	Problem = apps.get_model('seminar', 'Problem') | ||||
| 	ContentType = apps.get_model('contenttypes', 'ContentType') | ||||
| 	 | ||||
|  | @ -25,5 +25,5 @@ class Migration(migrations.Migration): | |||
| 			name='polymorphic_ctype', | ||||
| 			field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_seminar.problem_set+', to='contenttypes.ContentType'), | ||||
| 		), | ||||
| 		migrations.RunPython(vyrob_problemum_ctypes, migrations.RunPython.noop), | ||||
| 		migrations.RunPython(vyrob_problemum_ctypes, migrations.RunPython.noop, elidable=True), | ||||
| 	] | ||||
|  |  | |||
|  | @ -4,6 +4,9 @@ from django.db import migrations, models | |||
| import django.db.models.deletion | ||||
| from seminar.treelib import get_parent | ||||
| 
 | ||||
| import logging | ||||
| logger = logging.getLogger(__name__) | ||||
| 
 | ||||
| def najdi_cislo(apps, schema_editor): | ||||
| 	Clanek = apps.get_model('seminar', 'Clanek') | ||||
| 	Hodnoceni = apps.get_model('seminar', 'Hodnoceni') | ||||
|  | @ -15,7 +18,10 @@ def najdi_cislo(apps, schema_editor): | |||
| 	for c in Clanek.objects.all(): | ||||
| 		reseni = c.reseni_set | ||||
| 		if (reseni.count() != 1):	# Pozor, reseni_set je Manager, takže se na něj musí trošku jinak | ||||
| 			raise ValueError("Článek k sobě má nejedno řešení!") | ||||
| 			logger.warn(f"Více než jedno řešení pro článek {c}") | ||||
| 			c.cislo = None | ||||
| 			c.save() | ||||
| 			continue | ||||
| 		r = reseni.first() | ||||
| 		aktualniNode = r.text_cely # Hlavní ReseniNode pro řešení | ||||
| 		while aktualniNode is not None: | ||||
|  |  | |||
							
								
								
									
										17
									
								
								seminar/migrations/0086_auto_20200819_0959.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								seminar/migrations/0086_auto_20200819_0959.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,17 @@ | |||
| # Generated by Django 2.2.15 on 2020-08-19 07:59 | ||||
| 
 | ||||
| from django.db import migrations | ||||
| 
 | ||||
| 
 | ||||
| class Migration(migrations.Migration): | ||||
| 
 | ||||
|     dependencies = [ | ||||
|         ('seminar', '0085_nepovinna_prezdivka'), | ||||
|     ] | ||||
| 
 | ||||
|     operations = [ | ||||
|         migrations.AlterModelOptions( | ||||
|             name='organizator', | ||||
|             options={'ordering': ['-organizuje_do', 'osoba__jmeno', 'osoba__prijmeni'], 'verbose_name': 'Organizátor', 'verbose_name_plural': 'Organizátoři'}, | ||||
|         ), | ||||
|     ] | ||||
							
								
								
									
										49
									
								
								seminar/migrations/0087_fix_polymorphism.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								seminar/migrations/0087_fix_polymorphism.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,49 @@ | |||
| # Generated by Django 2.2.16 on 2020-09-04 12:06 | ||||
| 
 | ||||
| from django.db import migrations | ||||
| from logging import getLogger | ||||
| 
 | ||||
| log = getLogger(__name__) | ||||
| 
 | ||||
| # Oprava migrací 0065 a 0066, kde jsem špatně pochopil django-polymorphic | ||||
| 
 | ||||
| # Pomocná funkce -- děláme to samé pro obě polymorfní hierarchie | ||||
| def fix_ctypes(parent: str, children, apps, schema_editor): | ||||
| 	Parent = apps.get_model('seminar', parent) | ||||
| 	ContentType = apps.get_model('contenttypes', 'ContentType') | ||||
| 
 | ||||
| 	# Nejdřív všechno smažeme: | ||||
| 	Parent.objects.update(polymorphic_ctype=None) | ||||
| 
 | ||||
| 	# Opravíme děti | ||||
| 	for clsname in children: | ||||
| 		Model = apps.get_model('seminar', clsname) | ||||
| 		ct = ContentType.objects.get_for_model(Model) | ||||
| 		Model.objects.update(polymorphic_ctype=ct) | ||||
| 	 | ||||
| 
 | ||||
| 	# Ostatní instance mají mít explicitně content type pro rodiče | ||||
| 	new_ct = ContentType.objects.get_for_model(Parent) | ||||
| 	for obj in Parent.objects.filter(polymorphic_ctype__isnull=True): | ||||
| 		log.warn(f"{parent} \"{obj}\" neměl content type -- nejspíš to je instance přímo {parent}!") | ||||
| 		obj.polymorphic_ctype=new_ct | ||||
| 		obj.save() | ||||
| 
 | ||||
| def fix_treenode(apps, schema_editor): | ||||
| 	children = ['RocnikNode', 'CisloNode', 'MezicisloNode', 'TemaVCisleNode', | ||||
| 			'OrgTextNode', 'UlohaZadaniNode', 'UlohaVzorakNode', 'PohadkaNode', | ||||
| 			'TextNode', 'CastNode', 'ReseniNode'] | ||||
| 	fix_ctypes("TreeNode", children, apps, schema_editor) | ||||
| 
 | ||||
| def fix_problem(apps, schema_editor): | ||||
| 	children = ['Tema', 'Clanek', 'Uloha'] # FIXME: Konfera z nějakého důvodu tenhle field vůbec nemá, asi je to špatně. | ||||
| 	fix_ctypes("Problem", children, apps, schema_editor) | ||||
| 
 | ||||
| class Migration(migrations.Migration): | ||||
| 	dependencies = [ | ||||
| 		('seminar', '0086_auto_20200819_0959'), | ||||
| 	] | ||||
| 	operations = [ | ||||
| 		migrations.RunPython(fix_treenode, migrations.RunPython.noop), | ||||
| 		migrations.RunPython(fix_problem, migrations.RunPython.noop), | ||||
| 	] | ||||
							
								
								
									
										14
									
								
								seminar/migrations/fix_0058.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								seminar/migrations/fix_0058.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| from django.db import migrations | ||||
| 
 | ||||
| sql = "update seminar_problemy set typ = 'uloha' where typ like 'b_uloha_';" | ||||
| 
 | ||||
| class Migration(migrations.Migration): | ||||
| 
 | ||||
| 	dependencies = [ | ||||
| 		('seminar', '0058_problem_to_uloha_tema_clanek'), | ||||
| 	] | ||||
| 
 | ||||
| 	operations = [ | ||||
| 		migrations.RunSQL(sql, sql), | ||||
| 	] | ||||
| 
 | ||||
|  | @ -597,6 +597,11 @@ class Organizator(SeminarModelBase): | |||
| 	class Meta: | ||||
| 		verbose_name = 'Organizátor' | ||||
| 		verbose_name_plural = 'Organizátoři' | ||||
| 		# Řadí aktivní orgy na začátek, pod tím v pořadí od nejstarších neaktivní orgy. | ||||
| 		# TODO: Chtěl bych spíš mít nejstarší orgy dole. | ||||
| 		# TODO: Zohledňovat přezdívky? | ||||
| 		# TODO: Sjednotit s tím, jak se řadí organizátoři v seznau orgů na webu | ||||
| 		ordering = ['-organizuje_do', 'osoba__jmeno', 'osoba__prijmeni'] | ||||
| 
 | ||||
| @reversion.register(ignore_duplicates=True) | ||||
| class Soustredeni(SeminarModelBase): | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| {% extends "seminar/archiv/base_ulohy.html" %} | ||||
| {% extends "seminar/archiv/base.html" %} | ||||
| 
 | ||||
| {% load comments %} | ||||
| 
 | ||||
|  |  | |||
|  | @ -35,8 +35,10 @@ | |||
| 
 | ||||
| 
 | ||||
|     {% if ac.pdf %} | ||||
|       <p><a href="{{ac.pdf.url}}">Aktuální číslo v PDF</a></p> | ||||
|       <h3>Aktuální témata najdete v <a href="{{ac.pdf.url}}">aktuálním čísle v PDF</a>.</h3> | ||||
|     {% endif %} | ||||
| 		<!--Toto jsem zakomentoval, aby se tam nezobrazovala temata, ale text, že vše najdou pouze v PDF--> | ||||
| 		{% if False %}	 | ||||
| 			{% for sada in jednorazove_problemy %} | ||||
| 				{# podnadpisy, kdyz neni zakomentuje se nadpis #} | ||||
| 				{% if not sada %}<!--{% endif %} | ||||
|  | @ -56,6 +58,7 @@ | |||
| 			{% empty %} | ||||
| 				Aktuálně nejsou zadané žádné úlohy k řešení. | ||||
| 			{% endfor %} | ||||
| 		{% endif %} | ||||
| 
 | ||||
| {% if user.is_staff and not verejne%}</div>{% endif %} | ||||
| {% else %} | ||||
|  | @ -63,6 +66,7 @@ | |||
| {% endif %} | ||||
| 
 | ||||
| 
 | ||||
| 	{% if False %}	 | ||||
|     <h2>Témata</h2> | ||||
|       <ul> | ||||
|       {% for problem in temata %} | ||||
|  | @ -71,9 +75,14 @@ | |||
|         <a href="{{problem.verejne_url}}">Téma {{problem.kod}}: {{problem.nazev}}</a> | ||||
| 	</li> | ||||
|       {% empty %} | ||||
|         Aktuálně nejsou zadána žádná témata k řešení. | ||||
| 				{% if ac.pdf %} | ||||
| 					<p>Aktuální témata najdete v <a href="{{ac.pdf.url}}">aktuálním čísle v PDF</a>.</p> | ||||
| 				{% else %} | ||||
| 					<p>Aktuálně nemáme žádná témata.</p> | ||||
| 				{% endif %} | ||||
|       {% endfor %} | ||||
|       </ul> | ||||
| 	{% endif %} | ||||
| 
 | ||||
| {% endwith %} | ||||
| 
 | ||||
|  |  | |||
|  | @ -16,15 +16,20 @@ | |||
|     {% endblock %}{% endblock %} | ||||
|   </h1> | ||||
| 
 | ||||
| 
 | ||||
|   <h3> | ||||
|   	<b> Pozor, tato stránka není aktuální!</b> Aktualizovaný seznam všech čísel v PDF najdete <a href="/rocnik/26/">zde</a>. Za problémy se omlouváme. | ||||
|   </h3> | ||||
|   <p> | ||||
|     Témata jsou hlavním obsahem časopisu M&M. Obvykle představují | ||||
|     složitější a obecnější problémy než samostatné úlohy. Navíc je v jejich | ||||
|     zadání vždy prostor pro tvůrčí rozšíření. Za pěkný článek k tématu lze | ||||
|     získat třeba i 20 bodů, určitě se tedy vyplatí se tématy zabývat. | ||||
|     Témata jsou texty nejen z oblasti matematiky, fyziky a informatiky, které | ||||
|     popisují nějaký problém a jsou doprovázeny návodnými úlohami. Vaším úkolem | ||||
|     je zamyslet se nad daným 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> | ||||
| 	<!-- | ||||
|   {% if temata %} | ||||
|   <p> | ||||
|     Letos jsme pro tebe připravili tato témata: | ||||
|  | @ -72,6 +77,7 @@ | |||
|   {% empty %} | ||||
|     Aktuálně nejsou zadána žádná témata k řešení. | ||||
|   {% endfor %} | ||||
| 	--> | ||||
| 
 | ||||
| </div> | ||||
| {% endwith %} | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Pavel "LEdoian" Turinsky
						Pavel "LEdoian" Turinsky