def beratungen(self, welche, mitarbeiter=None, stelle=None, ab_jahr=None, ab_fallnummer=None, bis_jahr=None, bis_fallnummer=None, ab_jahr_zda=None, bis_jahr_zda=None, sort=()): assert welche in ('laufend', 'abgeschlossen', 'alle') assert ab_jahr and ab_fallnummer or not ab_fallnummer where = 'fall.zday %s 0' % (welche=='laufend' and '=' or welche=='abgeschlossen' and '>' or welche=='alle' and '>=' ) # nur die letzte Zuständigkeit deren Endedatum gleich dem ZDA-Datum ist where += """ and fall.zday = zustaendigkeit.ey and fall.zdam = zustaendigkeit.em and fall.zdad = zustaendigkeit.ed""" if mitarbeiter: where += ' and mitarbeiter.id=%s' % mitarbeiter['id'] if stelle: where += ' and akte.stzbg=%s' % stelle['id'] if ab_jahr: where += ' and fall.bgy >= %s' % ab_jahr if bis_jahr: where += ' and fall.bgy <= %s' % bis_jahr if ab_jahr_zda: where += ' and fall.zday >= %s' % ab_jahr_zda if bis_jahr_zda: where += ' and fall.zday <= %s and fall.zday > 0' % bis_jahr_zda fall_list = FallList( where=where, join=[('zustaendigkeit', 'zustaendigkeit.fall_id=fall.id'), ('akte', 'fall.akte_id=akte.id'), ('mitarbeiter', 'zustaendigkeit.mit_id=mitarbeiter.id')]) if ab_jahr and ab_fallnummer: def ab_fn(fall): j = fall['bgy'] c = fall['fn_count'] # Fallnummerzähler, definiert in ebapi.py return j > ab_jahr or (j == ab_jahr and c >= ab_fallnummer) fall_list = fall_list.filter(ab_fn) if bis_jahr and bis_fallnummer: def bis_fn(fall): j = fall['bgy'] c = fall['fn_count'] # Fallnummerzähler, definiert in ebapi.py return j < bis_jahr or (j == bis_jahr and c <= bis_fallnummer) fall_list = fall_list.filter(bis_fn) fall_list.sort(*sort) return fall_list