Hotovy import dat (krom drobnosti nize)
TODO: * datumy cisel * skoly a data narozeni nekterych resitelu * duplicity problemu (z AZAD a DOZ) * diskuse k DOZ * Problemy "Historicke body ..."
This commit is contained in:
		
							parent
							
								
									f92f855b86
								
							
						
					
					
						commit
						50c50c378b
					
				
					 1 changed files with 88 additions and 5 deletions
				
			
		|  | @ -35,7 +35,24 @@ Překlad ID je potom: | |||
| 
 | ||||
| #### Staré úlohy [MAMOPER_MM_ULOHA] #### | ||||
| 
 | ||||
|     r=sqget(db, "select * from MAMOPER_MM_ULOHA") | ||||
| Temata (prořezávání opakujících se) | ||||
| 
 | ||||
|     r=sqget(db, "select * from MAMOPER_MM_ULOHA where KOD like 't%' ORDER BY CISLO") | ||||
|     seen = set() | ||||
|     for i in r: | ||||
| 	if i.NAZEV in seen: | ||||
| 	  continue | ||||
| 	seen.add(i.NAZEV) | ||||
| 	o = User.objects.get(username=i.OPRAVUJICI) if i.OPRAVUJICI else None; | ||||
| 	c = Cislo.objects.get(rocnik__rocnik=int(i.ROCNIK), cislo=i.CISLO); | ||||
| 	t=Problem.TYP_ULOHA if i.KOD[0] == 'r' else Problem.TYP_TEMA; | ||||
| 	Problem.objects.create(nazev=i.NAZEV, body=int(i.BODY) if i.BODY else None, typ=t, stav=Problem.STAV_ZADANY, opravovatel=o, | ||||
| 	    kod=i.KOD[1:], cislo_zadani=c, import_dakos_id='ULOHA:%s' % (i.ID, ), | ||||
| 	    text_problemu_org=u"Importováno z MAMOPER.MM_ULOHA\nKod: %s\nID: %s" % (i.KOD, i.ID, )) | ||||
| 
 | ||||
| Ulohy | ||||
| 
 | ||||
|     r=sqget(db, "select * from MAMOPER_MM_ULOHA where KOD like 'r%'") | ||||
|     for i in r: | ||||
| 	o = User.objects.get(username=i.OPRAVUJICI) if i.OPRAVUJICI else None; | ||||
| 	c = Cislo.objects.get(rocnik__rocnik=int(i.ROCNIK), cislo=i.CISLO); | ||||
|  | @ -44,22 +61,86 @@ Překlad ID je potom: | |||
| 	    kod=i.KOD[1:], cislo_zadani=c, import_dakos_id='ULOHA:%s' % (i.ID, ), | ||||
| 	    text_problemu_org=u"Importováno z MAMOPER.MM_ULOHA\nKod: %s\nID: %s" % (i.KOD, i.ID, )) | ||||
| 
 | ||||
| A pak prořezání opakujících se témátek ... | ||||
| 
 | ||||
| #### Stará řešení a body #### | ||||
| 
 | ||||
|     r=sqget(db, "select res.RESITEL, res.KDY, b.ULOHA, b.BODY, res.VYZVEDL, res.FORMA, res.POZNAMKA from MAMOPER_MM_RESENI as res, MAMOPER_MM_RESENI_BODY as b where res.RESITEL=b.RESITEL and res.ULOHA=b.ULOHA") | ||||
|     for i in r: | ||||
| 	p=Problem.objects.get(import_dakos_id='ULOHA:%s' % (i.ULOHA, )); | ||||
| 	print i | ||||
| 	p = Problem.objects.filter(import_dakos_id='ULOHA:%s' % (i.ULOHA, )); | ||||
| 	g = sqget(db, "select * from MAMOPER_MM_ULOHA where ID='%s'" % (i.ULOHA, ))[0] | ||||
| 	if not p: | ||||
| 	    assert g.KOD[0] == 't' | ||||
| 	    p = Problem.objects.filter(cislo_zadani__rocnik__rocnik=int(g.ROCNIK), typ=Problem.TYP_TEMA, kod=g.KOD[1:]).order_by('cislo_zadani__cislo') | ||||
| 	    if len(p) >= 2: | ||||
| 	      p = [p.filter(cislo_zadani__cislo__lte=g.CISLO).last()] | ||||
| 	p = p[0] | ||||
| 	c = Cislo.objects.get(rocnik__rocnik=int(g.ROCNIK), cislo=g.CISLO) | ||||
| 	c2 = c.relativni_v_rocniku(2) or c.relativni_v_rocniku(1) | ||||
| 	assert c2 | ||||
| 	resitel=Resitel.objects.get(id=MAMID_FOR_DAKOSID[i.RESITEL]); | ||||
| 	Reseni.objects.create(problem=p, resitel=resitel, body=int(i.BODY) if i.BODY else None, timestamp=transdate(i.KDY), | ||||
| 	    forma=Reseni.FORMA_EMAIL if i.FORMA=='e' else Reseni.FORMA_PAPIR, | ||||
| 	b = int(i.BODY) | ||||
| 	Reseni.objects.create(problem=p, resitel=resitel, body=b, timestamp=transdate(i.KDY), | ||||
| 	    forma=Reseni.FORMA_EMAIL if i.FORMA=='e' else Reseni.FORMA_PAPIR, cislo_body=c2, | ||||
| 	    poznamka="Import z MAMOPER_MM_RESENI, MAMOPER_MM_RESENI_BODY\nVyzvedl: %s\nPuvodni poznamka: %s" % (i.VYZVEDL, i.POZNAMKA, )) | ||||
|          | ||||
| 
 | ||||
| #### Novější problémy (znovu) [MM_ZADANIA] #### | ||||
| 
 | ||||
| Pozn.: CISLO udává vždy nejen číslo zadání, ale zároveň určuje číslo řešení i u témat (+2). Témata jsou též zadána vícekrát, | ||||
| jednou za každé číslo s výsledky (číslované (-2)). | ||||
| 
 | ||||
| Úlohy a seriály: | ||||
| 
 | ||||
|     r = sqget(db, "select * from MAMOPER_MM_ZADANIA where TYP='1' order by CISLO") | ||||
|     r += sqget(db, "select * from MAMOPER_MM_ZADANIA where TYP='3' order by CISLO") | ||||
|     for i in r: | ||||
| 	c = Cislo.objects.get(cislo=i.CISLO if i.CISLO!='9' else '1', rocnik__rocnik=int(i.ROCNIK)); | ||||
| 	opravovatel = User.objects.get(username=i.OPRAVUJE) if i.OPRAVUJE else None; | ||||
| 	Problem.objects.create(nazev=i.NAZOV, typ=typtable[i.TYP], stav=Problem.STAV_ZADANY, opravovatel=opravovatel, kod=i.ULOHA, | ||||
| 	    cislo_zadani=c, cislo_reseni=c.relativni_v_rocniku(2), body=int(i.MAX_BODY), | ||||
| 	    import_dakos_id='ZAD:%s.%s.%s.%s'%(i.ROCNIK, i.CISLO, i.ULOHA, i.TYP,), | ||||
| 	    text_problemu_org=u'Importováno z MAMOPER_MM_ZADANIA\nOpravuje: %s' % (i.OPRAVUJE, ) ) | ||||
| 
 | ||||
| Témata: | ||||
| 
 | ||||
|     r = sqget(db, "select * from MAMOPER_MM_ZADANIA where TYP='2' order by CISLO") | ||||
|     for i in r: | ||||
| 	c = Cislo.objects.get(cislo=i.CISLO if i.CISLO!='9' else '1', rocnik__rocnik=int(i.ROCNIK)); | ||||
| 	opravovatel = User.objects.get(username=i.OPRAVUJE) if i.OPRAVUJE else None; | ||||
| 	Problem.objects.create(nazev=i.NAZOV, typ=typtable[i.TYP], stav=Problem.STAV_ZADANY, opravovatel=opravovatel, kod=i.ULOHA, | ||||
| 	    cislo_zadani=c, body=None, import_dakos_id='ZAD:%s.%s.%s.%s'%(i.ROCNIK, i.CISLO, i.ULOHA, i.TYP,), | ||||
| 	    text_problemu_org=u'Importováno z MAMOPER_MM_ZADANIA\nOpravuje: %s' % (i.OPRAVUJE, ) ) if not Problem.objects.filter( | ||||
| 		nazev=i.NAZOV, typ=Problem.TYP_TEMA, cislo_zadani__isnull=False) else None | ||||
| 
 | ||||
| 
 | ||||
| #### Novější řešení (znovu) [MM_RIESENIA] #### | ||||
| 
 | ||||
|     r=sqget(db, "select * from MAMOPER_MM_RIESENIA") | ||||
|     for i in r: | ||||
| 	print i | ||||
| 	tstp = datetime.datetime.fromtimestamp(int(i.DORUCENA)); | ||||
| 	res = Resitel.objects.get(import_mamoper_id=i.RIESITEL); | ||||
| 	c = Cislo.objects.get(rocnik__rocnik=int(i.ROCNIK), cislo=i.CISLO if i.CISLO!='9' else '1') | ||||
| 	if i.TYP == '2': | ||||
| 	    u = Problem.objects.filter(cislo_zadani__rocnik=c.rocnik, typ=Problem.TYP_TEMA, kod=i.ULOHA).order_by('cislo_zadani__cislo') | ||||
| 	    print c, res, u | ||||
| 	    if len(u) >= 2: | ||||
| 	      u = u.filter(cislo_zadani__cislo__lte=c.cislo).last() | ||||
| 	    else: | ||||
| 	      u = u[0] | ||||
| 	else:  | ||||
| 	  u = Problem.objects.get(import_dakos_id="ZAD:%s.%s.%s.%s" % (i.ROCNIK, i.CISLO, i.ULOHA, i.TYP,)); | ||||
| 	cbod = c.relativni_v_rocniku(2) | ||||
| 	if not cbod: | ||||
| 	  cbod = c.relativni_v_rocniku(1) | ||||
| 	assert cbod | ||||
| 	Reseni.objects.create(problem=u, resitel=res, body=int(i.POCET_BODOV) if i.POCET_BODOV else None, | ||||
| 	    forma=Reseni.FORMA_EMAIL if i.FORMA=='1' else Reseni.FORMA_PAPIR, timestamp=tstp, | ||||
| 	    poznamka='Zdroj: MM_RIESENIA\nForma: %s\n%s' % ({'1':'E', '2':'P'}[i.FORMA], i.POZNAMKA, ), | ||||
| 	    cislo_body=cbod) | ||||
| 
 | ||||
| `MM_RESENI`, `MM_RESENI#BODY`: | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | @ -175,3 +256,5 @@ Dekodovani stavu navrhu (MFIO - oblast, Tema, Konfera, Pouzita, Zamitnuta, Dopln | |||
| 	    poznamka='Zdroj: MM_RIESENIA\nForma: %s\n%s' % ({'1':'E', '2':'P'}[i['FORMA']], i['POZNAMKA'], ), timestamp=tstp) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Tomas Gavenciak
						Tomas Gavenciak