Example #1
0
 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