[Mpuls-commits] r149 - in waska/trunk: . waskaweb/model waskaweb/templates/casemanagement

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Thu Sep 11 15:42:30 CEST 2008


Author: torsten
Date: 2008-09-11 15:42:28 +0200 (Thu, 11 Sep 2008)
New Revision: 149

Modified:
   waska/trunk/ChangeLog.txt
   waska/trunk/waskaweb/model/phase_transition.py
   waska/trunk/waskaweb/model/phases_factory.py
   waska/trunk/waskaweb/templates/casemanagement/listbadcases.mako
Log:
Modified search for inconsistent cases.


Modified: waska/trunk/ChangeLog.txt
===================================================================
--- waska/trunk/ChangeLog.txt	2008-09-10 15:51:25 UTC (rev 148)
+++ waska/trunk/ChangeLog.txt	2008-09-11 13:42:28 UTC (rev 149)
@@ -1,3 +1,13 @@
+2008-09-11	Torsten Irlaender  <torsten.irlaender at intevation.de>
+
+	Modified search for inconsistent cases.
+
+	* waskaweb/model/phase_transition.py,
+	  waskaweb/model/phases_factory.py,
+	  waskaweb/templates/casemanagement/listbadcases.mako: Search e.g for
+	  inconsistencies in phase 3 now includes also searches on
+	  inconsistensies in prior phases. 
+
 2008-09-10	Torsten Irlaender  <torsten.irlaender at intevation.de>
 
 	Anonymisation is now only possible when the required fields for the

Modified: waska/trunk/waskaweb/model/phase_transition.py
===================================================================
--- waska/trunk/waskaweb/model/phase_transition.py	2008-09-10 15:51:25 UTC (rev 148)
+++ waska/trunk/waskaweb/model/phase_transition.py	2008-09-11 13:42:28 UTC (rev 149)
@@ -105,12 +105,14 @@
             preds.add(k)
     return list(preds)
 
-def phase_predecessors_path(phase, path=None):
+def phase_predecessors_path(phase, path=None, include_root=False):
     if not path:
         path = []
+        if include_root:
+            path.append(phase)
     for p in phase_predecessors(phase):
         path.append(p)
-        phase_predecessors_path(p, path)
+        phase_predecessors_path(p, path=path)
     return path
 
 def phase_neighbors(phase1, phase2):

Modified: waska/trunk/waskaweb/model/phases_factory.py
===================================================================
--- waska/trunk/waskaweb/model/phases_factory.py	2008-09-10 15:51:25 UTC (rev 148)
+++ waska/trunk/waskaweb/model/phases_factory.py	2008-09-11 13:42:28 UTC (rev 149)
@@ -40,9 +40,9 @@
 """
 
 IS_NOT_FILLED = \
-"""((NOT (%(name)s IS NOT NULL
+"""(NOT (%(name)s IS NOT NULL
     AND (get_default_value('master_tbl', '%(name)s') IS NULL
-        OR %(name)s != get_default_value('master_tbl', '%(name)s')))) AND phase = %(phase)s)
+        OR %(name)s != get_default_value('master_tbl', '%(name)s'))))
 """
 
 SELECT = \
@@ -159,12 +159,30 @@
 
 
     def getSQLWhereClauses(self):
-        """ returns list of tuples (<symbol of phase>, <sql where clause>) """
+        """ returns list of tuples (<symbol of phase>, <sql where clause>). The
+        where clause will return cases with inconsistencies for the current
+        state."""
         clauses = []
-        for k, v in self.phases.iteritems():
-            # There where clause will return cases with inconsistencies for their current phase
-            where = " OR ".join([IS_NOT_FILLED % { 'name': name, 'phase':SYMBOLS_PHASE.get(k)} for name in [i[0].getName() for i in v]])
-            clauses.append((k, where))
+        # Iterate over all phases
+        for symbol in self.phases.keys():
+
+            # for each phase build a dict of predecessor of the current phase
+            predecessor_phases = {}
+            phase_id = symbol_phase(symbol)
+            for id in phase_predecessors_path(phase_id, include_root=True):
+                if id == -1: continue #ignore "unknown" phase
+                predecessor_phases[phase_symbol(id)] = self.phases.get(phase_symbol(id))
+            # now build the where clause to check if the current phase is
+            # consistent.
+            where_parts = []
+            for s, v in predecessor_phases.iteritems():
+                try:
+                    part = " OR ".join([IS_NOT_FILLED % { 'name': name} for name in [i[0].getName() for i in v]])
+                except:
+                    pass
+                where_parts.append(part)
+            where = "(phase = %s AND ((%s))) " % (phase_id, " OR ".join(where_parts))
+            clauses.append((symbol, where))
         return clauses
 
     def loadFilled(self, ds_id, cur):

Modified: waska/trunk/waskaweb/templates/casemanagement/listbadcases.mako
===================================================================
--- waska/trunk/waskaweb/templates/casemanagement/listbadcases.mako	2008-09-10 15:51:25 UTC (rev 148)
+++ waska/trunk/waskaweb/templates/casemanagement/listbadcases.mako	2008-09-11 13:42:28 UTC (rev 149)
@@ -7,14 +7,14 @@
              '5':u'CM ist beendet, aber keine Beendigungsdatum angegeben',
              '6':u'CM ist nicht beendet, aber Beendigungsdatum angegeben',
              '7':u'Die aktuelle Phase der Fallakte konnte aufgrund von fehlenden Angaben nicht festgestellt werden',
-             'clearing_start':u'Fehlende Pflichtfeldangaben für den Start der "Clearing" Phase',
-             'clearing_ende':u'Fehlende Pflichtfeldangaben für die Beendigung der "Clearing" Phase',
-             'beratung_start':u'Fehlende Pflichtfeldangaben für den Start der "Beratungs" Phase',
-             'beratung_ende':u'Fehlende Pflichtfeldangaben für die Beendigung der "Beratungs" Phase',
-             'cm_start':u'Fehlende Pflichtfeldangaben für den Start der "Case-Management" Phase',
-             'cm_ende':u'Fehlende Pflichtfeldangaben für die Beendigung der "Case-Management" Phase',
-             'nachbetreuung_start':u'Fehlende Pflichtfeldangaben für den Start der "Nachbetreuungs" Phase',
-             'nachbetreuung_ende':u'Fehlende Pflichtfeldangaben für die Beendigung der "Nachbetreuungs'}
+             'clearing_start':u'Fehlende Pflichtfeldangaben für Fälle in laufender "Clearing" Phase',
+             'clearing_ende':u'Fehlende Pflichtfeldangaben für Fälle in beendeter "Clearing" Phase',
+             'beratung_start':u'Fehlende Pflichtfeldangaben für Fälle in laufender "Beratungs" Phase',
+             'beratung_ende':u'Fehlende Pflichtfeldangaben für Fälle in beendeter "Beratungs" Phase',
+             'cm_start':u'Fehlende Pflichtfeldangaben für Fälle in laufender "Case-Management" Phase',
+             'cm_ende':u'Fehlende Pflichtfeldangaben für Fälle in beendeter "Case-Management" Phase',
+             'nachbetreuung_start':u'Fehlende Pflichtfeldangaben für Fälle in laufender "Nachbetreuungs" Phase',
+             'nachbetreuung_ende':u'Fehlende Pflichtfeldangaben für Fälle in beendeter "Nachbetreuungs'}
   # ignore search of inconsistent cases which do not intersect with the given
   # timeframe (filter out old cases)
   start_date = '2008-09-01'



More information about the Mpuls-commits mailing list