97 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import django
 | |
| from django.shortcuts import get_object_or_404
 | |
| from django.http import HttpResponse
 | |
| from django.urls import reverse
 | |
| from django.views import generic
 | |
| from django.utils.encoding import force_str
 | |
| 
 | |
| from .utils import default_ovvpfile
 | |
| from soustredeni.models import Soustredeni
 | |
| from tvorba.models import Rocnik
 | |
| from vysledkovky import utils
 | |
| from tvorba.utils import aktivniResitele
 | |
| 
 | |
| class ExportIndexView(generic.View):
 | |
| 	def get(self, request):
 | |
| 		ls = []
 | |
| 		for r in Rocnik.objects.filter(exportovat = True):
 | |
| 	    		url = reverse('aesop_export_rocnik', kwargs={'prvni_rok': r.prvni_rok})
 | |
| 	    		ls.append(url.split('/')[-1])
 | |
| 		for s in Soustredeni.objects.filter(exportovat = True):
 | |
| 			url = reverse('aesop_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')
 | |
| 
 | |
| 
 | |
| class ExportSousView(generic.View):
 | |
| 
 | |
| 	def get(self, request, datum_zacatku=None):
 | |
| 		try:
 | |
| 		    dz = django.utils.dateparse.parse_date(datum_zacatku)
 | |
| 		except:
 | |
| 		    dz = None
 | |
| 		if dz is None:
 | |
| 		    raise django.http.Http404()
 | |
| 
 | |
| 		s = get_object_or_404(Soustredeni, datum_zacatku=dz, exportovat=True)
 | |
| 
 | |
| 		akce = {Soustredeni.TYP_JARNI: 'MaM.sous.jaro',
 | |
| 			Soustredeni.TYP_PODZIMNI: 'MaM.sous.podzim',
 | |
| 			Soustredeni.TYP_VIKEND: 'MaM.vikend',
 | |
| 			}[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()
 | |
| 	
 | |
| # POZOR! Předělání na nový model neotestováno v reálu (ale zase jen drobné změny)
 | |
| class ExportRocnikView(generic.View):
 | |
| 
 | |
| 	def get(self, request, prvni_rok=None):
 | |
| 		try:
 | |
| 		    pr = int(prvni_rok)
 | |
| 		except:
 | |
| 		    pr = None
 | |
| 		if pr is None:
 | |
| 		    raise django.http.Http404()
 | |
| 
 | |
| 		rocnik = get_object_or_404(Rocnik, prvni_rok=pr, exportovat=True)
 | |
| 		cislo = rocnik.posledni_zverejnena_vysledkovka_cislo()
 | |
| 		resitele = aktivniResitele(cislo, True)
 | |
| 		slovnik_body = utils.secti_body_za_rocnik(cislo, resitele, False)
 | |
| 		setrizeni_resitele, body = utils.setrid_resitele_a_body(slovnik_body)
 | |
| 
 | |
| 		of = default_ovvpfile('MaM.rocnik', rocnik)
 | |
| 		of.headers['comment'] = u'MaM-Web export aktivnich resitelu rocniku {rocnik} do cisla {cislo}'.format(rocnik=rocnik, cislo=cislo)
 | |
| 		of.columns = ['id', 'name', 'surname', 'gender', 'born', 'email', 'end-year',
 | |
| 			'street', 'town', 'postcode', 'country', 'spam-flag', 'spam-date',
 | |
| 			'school', 'school-name', 'points', 'rank',]
 | |
| 
 | |
| 		resitele_slovnik = {}
 | |
| 		for r in resitele:
 | |
| 			resitele_slovnik[r.id] = r
 | |
| 
 | |
| 		# počítání pořadí řešitelů 
 | |
| 		posledni_body = 100000
 | |
| 		posledni_poradi = 0
 | |
| 		for i in range(len(setrizeni_resitele)):
 | |
| 			rd = resitele_slovnik[setrizeni_resitele[i]].export_row()
 | |
| 
 | |
| 			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()
 |