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] ####
|
#### 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:
|
for i in r:
|
||||||
o = User.objects.get(username=i.OPRAVUJICI) if i.OPRAVUJICI else None;
|
o = User.objects.get(username=i.OPRAVUJICI) if i.OPRAVUJICI else None;
|
||||||
c = Cislo.objects.get(rocnik__rocnik=int(i.ROCNIK), cislo=i.CISLO);
|
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, ),
|
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, ))
|
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 ####
|
#### 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")
|
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:
|
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]);
|
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),
|
b = int(i.BODY)
|
||||||
forma=Reseni.FORMA_EMAIL if i.FORMA=='e' else Reseni.FORMA_PAPIR,
|
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, ))
|
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)
|
poznamka='Zdroj: MM_RIESENIA\nForma: %s\n%s' % ({'1':'E', '2':'P'}[i['FORMA']], i['POZNAMKA'], ), timestamp=tstp)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue