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