diff --git a/seminar/tools.py b/seminar/tools.py deleted file mode 100644 index a13bdfd9..00000000 --- a/seminar/tools.py +++ /dev/null @@ -1,82 +0,0 @@ -# -*- coding: utf-8 -*- - -import logging as log -from .models import Resitel -from reversion import revisions as reversion - -def merge_props(r1, r2, prop, pretend=True, smaller=False, equal=True): - """Merge r2.`prop` into r1.`prop`. - - If r1.`prop` unset, use r1.`prop`=r2.`prop`. - If both set and equal=True, warn if not equal. - If both set and smaller=True, use the smaller one. - With pretend=True does not modify r1. - """ - a1 = r1.__getattribute__(prop) - a2 = r2.__getattribute__(prop) - if not a1: - if not pretend: - r1.__setattr__(prop, a2) - elif a2: - if equal and a1 != a2: - log.warn("merge: Ruzna %s: %s VS %s", prop, a1, a2) - if smaller: - if not pretend: - r1.__setattr__(prop, min(a1, a2)) - - -def merge_Resitel(rbase, rmerge, pretend=True): - """Zahrne data a vztahy Resitele rmerge do Resitele rbase, pak smaze rmerge. - - Selze pro uzivatele s user!=NULL. S pretend=True nezmeni databazi. - """ - # Ma relace: skola - # Je v relaci: user, reseni, soustredeni_ucastnici, vysledky_base(VIEW) - - log.info("merge: %s <- %s", unicode(rbase), unicode(rmerge)) - - assert not rbase.user - assert not rmerge.user - assert rbase != rmerge - - if (rbase.jmeno != rmerge.jmeno) or (rbase.prijmeni != rmerge.prijmeni): - log.error("merge: Ruzna jmena: %s VS %s", rbase, rmerge) - if rbase.rok_maturity != rmerge.rok_maturity: - log.error("merge: Ruzne roky maturity: %s VS %s", rbase.rok_maturity, rmerge.rok_maturity) - - with reversion.create_revision(): - reversion.set_comment('Merge duplicitnich Resitelu: %r <- %r' % (rbase.pk, rmerge.pk)) - - merge_props(rbase, rmerge, 'skola', pretend=pretend) - merge_props(rbase, rmerge, 'datum_narozeni', pretend=pretend) - merge_props(rbase, rmerge, 'datum_prihlaseni', pretend=pretend) - merge_props(rbase, rmerge, 'datum_souhlasu_zasilani', pretend=pretend, smaller=True, equal=False) - merge_props(rbase, rmerge, 'datum_souhlasu_udaje', pretend=pretend, smaller=True, equal=False) - merge_props(rbase, rmerge, 'email', pretend=pretend) - if rmerge.import_mamoper_id and not pretend: - rbase.import_mamoper_id += ' ' + rmerge.import_mamoper_id - if rmerge.poznamka and not pretend: - rbase.poznamka += ' ' + rmerge.poznamka - merge_props(rbase, rmerge, 'mesto', pretend=pretend) - merge_props(rbase, rmerge, 'pohlavi_muz', pretend=pretend) - merge_props(rbase, rmerge, 'psc', pretend=pretend) - merge_props(rbase, rmerge, 'stat', pretend=pretend) - merge_props(rbase, rmerge, 'telefon', pretend=pretend) - merge_props(rbase, rmerge, 'ulice', pretend=pretend) - merge_props(rbase, rmerge, 'zasilat', pretend=pretend) - - for res in rmerge.reseni.all(): - if not pretend: - res.resitel = rbase - res.save() - - for uc in rmerge.soustredeni_ucastnici_set.all(): - if not pretend: - uc.resitel = rbase - uc.save() - - if not pretend: - rmerge.delete() - rbase.save() - -