Změna na nový model a výsledkovky. Export by měl fungovat, ale je potřeba otestovat.
This commit is contained in:
		
							parent
							
								
									b0769058b3
								
							
						
					
					
						commit
						56317a5a84
					
				
					 1 changed files with 73 additions and 76 deletions
				
			
		|  | @ -10,96 +10,93 @@ from .models import Problem, Cislo, Reseni, Nastaveni, Rocnik, Soustredeni | ||||||
| from .ovvpfile import OvvpFile | from .ovvpfile import OvvpFile | ||||||
| 
 | 
 | ||||||
| class ExportIndexView(generic.View): | class ExportIndexView(generic.View): | ||||||
|     def get(self, request): | 	def get(self, request): | ||||||
|  | 		ls = [] | ||||||
|  | 		for r in Rocnik.objects.filter(exportovat = True): | ||||||
|  | 	    		url = reverse('seminar_export_rocnik', kwargs={'prvni_rok': r.prvni_rok}) | ||||||
|  | 	    		ls.append(url.split('/')[-1]) | ||||||
|  | 		for s in Soustredeni.objects.filter(exportovat = True): | ||||||
|  | 			url = reverse('seminar_export_sous', kwargs={'datum_zacatku': s.datum_zacatku.isoformat()}) | ||||||
|  | 			ls.append(url.split('/')[-1]) | ||||||
| 
 | 
 | ||||||
|         ls = [] | 		return HttpResponse('\n'.join(ls) + '\n', content_type='text/plain; charset=utf-8') | ||||||
|         for r in Rocnik.objects.filter(exportovat = True): |  | ||||||
|             url = reverse('seminar_export_rocnik', kwargs={'prvni_rok': r.prvni_rok}) |  | ||||||
|             ls.append(url.split('/')[-1]) |  | ||||||
|         for s in Soustredeni.objects.filter(exportovat = True): |  | ||||||
|             url = reverse('seminar_export_sous', kwargs={'datum_zacatku': s.datum_zacatku.isoformat()}) |  | ||||||
|             ls.append(url.split('/')[-1]) |  | ||||||
| 
 |  | ||||||
|         return HttpResponse('\n'.join(ls) + '\n', content_type='text/plain; charset=utf-8') |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def default_ovvpfile(event, rocnik): | def default_ovvpfile(event, rocnik): | ||||||
|     of = OvvpFile() | 	of = OvvpFile() | ||||||
|     of.headers['version'] = '1' | 	of.headers['version'] = '1' | ||||||
|     of.headers['event'] = event | 	of.headers['event'] = event | ||||||
|     of.headers['year'] = force_text(rocnik.prvni_rok) | 	of.headers['year'] = force_text(rocnik.prvni_rok) | ||||||
|     of.headers['date'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") | 	of.headers['date'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") | ||||||
|     of.headers['id-scope'] = 'mam' | 	of.headers['id-scope'] = 'mam' | ||||||
|     of.headers['id-generation'] = '1' | 	of.headers['id-generation'] = '1' | ||||||
|     return of | 	return of | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class ExportSousView(generic.View): | class ExportSousView(generic.View): | ||||||
| 
 | 
 | ||||||
|     def get(self, request, datum_zacatku=None): | 	def get(self, request, datum_zacatku=None): | ||||||
|         try: | 		try: | ||||||
|             dz = django.utils.dateparse.parse_date(datum_zacatku) | 		    dz = django.utils.dateparse.parse_date(datum_zacatku) | ||||||
|         except: | 		except: | ||||||
|             dz = None | 		    dz = None | ||||||
|         if dz is None: | 		if dz is None: | ||||||
|             raise django.http.Http404() | 		    raise django.http.Http404() | ||||||
| 
 | 
 | ||||||
|         s = get_object_or_404(Soustredeni, datum_zacatku=dz, exportovat=True) | 		s = get_object_or_404(Soustredeni, datum_zacatku=dz, exportovat=True) | ||||||
| 
 | 
 | ||||||
|         akce = {Soustredeni.TYP_JARNI: 'MaM.sous.jaro', | 		akce = {Soustredeni.TYP_JARNI: 'MaM.sous.jaro', | ||||||
|                 Soustredeni.TYP_PODZIMNI: 'MaM.sous.podzim', | 			Soustredeni.TYP_PODZIMNI: 'MaM.sous.podzim', | ||||||
|                 Soustredeni.TYP_VIKEND: 'MaM.vikend', | 			Soustredeni.TYP_VIKEND: 'MaM.vikend', | ||||||
|                 }[s.typ] | 			}[s.typ] | ||||||
| 
 |  | ||||||
|         of = default_ovvpfile(akce, s.rocnik) |  | ||||||
|         of.headers['x-event-begin'] = s.datum_zacatku.isoformat() |  | ||||||
|         of.headers['x-event-end'] = s.datum_konce.isoformat() |  | ||||||
|         of.headers['x-event-location'] = s.misto |  | ||||||
|         of.headers['comment'] = u'MaM-Web export ucastniku soustredeni v {x-event-location} od {x-event-begin} do {x-event-end}'.format(**of.headers) |  | ||||||
|         of.columns = ['id', 'name', 'surname', 'gender', 'email', 'end-year', 'school', 'school-name'] |  | ||||||
|           |  | ||||||
|         for u in s.ucastnici.all(): |  | ||||||
|             of.rows.append(u.export_row()) |  | ||||||
|          |  | ||||||
|         return of.to_HttpResponse() |  | ||||||
|          |  | ||||||
| 
 | 
 | ||||||
|  | 		of = default_ovvpfile(akce, s.rocnik) | ||||||
|  | 		of.headers['x-event-begin'] = s.datum_zacatku.isoformat() | ||||||
|  | 		of.headers['x-event-end'] = s.datum_konce.isoformat() | ||||||
|  | 		of.headers['x-event-location'] = s.misto | ||||||
|  | 		of.headers['comment'] = u'MaM-Web export ucastniku soustredeni v {x-event-location} od {x-event-begin} do {x-event-end}'.format(**of.headers) | ||||||
|  | 		of.columns = ['id', 'name', 'surname', 'gender', 'email', 'end-year', 'school', 'school-name'] | ||||||
|  | 	  | ||||||
|  | 		for u in s.ucastnici.all(): | ||||||
|  | 			of.rows.append(u.export_row()) | ||||||
|  | 	 | ||||||
|  | 		return of.to_HttpResponse() | ||||||
|  | 	 | ||||||
|  | # POZOR! Předělání na nový model neotestováno v reálu (ale zase jen drobné změny) | ||||||
| class ExportRocnikView(generic.View): | class ExportRocnikView(generic.View): | ||||||
| 
 | 
 | ||||||
|     def get(self, request, prvni_rok=None): | 	def get(self, request, prvni_rok=None): | ||||||
|         try: | 		try: | ||||||
|             pr = int(prvni_rok) | 		    pr = int(prvni_rok) | ||||||
|         except: | 		except: | ||||||
|             pr = None | 		    pr = None | ||||||
|         if pr is None: | 		if pr is None: | ||||||
|             raise django.http.Http404() | 		    raise django.http.Http404() | ||||||
| 
 | 
 | ||||||
|         rocnik = get_object_or_404(Rocnik, prvni_rok=pr, exportovat=True) | 		rocnik = get_object_or_404(Rocnik, prvni_rok=pr, exportovat=True) | ||||||
|         cislo = rocnik.posledni_zverejnena_vysledkovka_cislo() | 		cislo = rocnik.posledni_zverejnena_vysledkovka_cislo() | ||||||
|         vysledky = VysledkyKCisluZaRocnik.objects.filter(cislo = cislo).select_related("resitel").order_by('-body').all() | 		resitele = views.aktivniResitele(cislo.rocnik.rocnik, cislo.poradi, True) | ||||||
|  | 		slovnik_body = secti_body_za_rocnik(cislo, resitele) | ||||||
|  | 		_, setrizeni_resitele, setrizene_body = setrid_resitele_a_body(slovnik_body) | ||||||
| 
 | 
 | ||||||
|         of = default_ovvpfile('MaM.rocnik', rocnik) | 		of = default_ovvpfile('MaM.rocnik', rocnik) | ||||||
|         of.headers['comment'] = u'MaM-Web export aktivnich resitelu rocniku {rocnik} do cisla {cislo}'.format( | 		of.headers['comment'] = u'MaM-Web export aktivnich resitelu rocniku {rocnik} do cisla {cislo}'.format(rocnik=rocnik, cislo=cislo) | ||||||
|                 rocnik=rocnik, cislo=cislo) | 		of.columns = ['id', 'name', 'surname', 'gender', 'born', 'email', 'end-year', | ||||||
|         of.columns = ['id', 'name', 'surname', 'gender', 'born', 'email', 'end-year', | 			'street', 'town', 'postcode', 'country', 'spam-flag', 'spam-date', | ||||||
|                 'street', 'town', 'postcode', 'country', 'spam-flag', 'spam-date', | 			'school', 'school-name', 'points', 'rank',] | ||||||
|                 'school', 'school-name', 'points', 'rank',] | 	 | ||||||
|           | 		# počítání pořadí řešitelů  | ||||||
|         posledni_body = 100000 | 		posledni_body = 100000 | ||||||
|         posledni_poradi = 0 | 		posledni_poradi = 0 | ||||||
|         for vi in range(len(vysledky)): | 		for i in range(len(setrizeni_resitele)): | ||||||
| 
 | 			rd = setrizeni_resitele[i].export_row() | ||||||
|             v = vysledky[vi] |  | ||||||
|             rd = v.resitel.export_row() |  | ||||||
| 
 |  | ||||||
|             if posledni_body > v.body: |  | ||||||
|                 posledni_body = v.body |  | ||||||
|                 posledni_poradi = vi + 1 |  | ||||||
|             rd['rank'] = posledni_poradi |  | ||||||
|             rd['points'] = v.body |  | ||||||
| 
 |  | ||||||
|             of.rows.append(rd) |  | ||||||
|          |  | ||||||
|         return of.to_HttpResponse() |  | ||||||
| 
 | 
 | ||||||
|  | 			if posledni_body > body[i]: | ||||||
|  | 				posledni_body = body[i] | ||||||
|  | 				posledni_poradi = i + 1 | ||||||
|  | 			rd['rank'] = posledni_poradi | ||||||
|  | 			rd['points'] = body[i] | ||||||
| 
 | 
 | ||||||
|  | 			of.rows.append(rd) | ||||||
|  | 	 | ||||||
|  | 		return of.to_HttpResponse() | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Anet
						Anet