[Mpuls-commits] r1836 - wasko/branches/2.0/mpulsweb/model

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Fri Feb 26 10:04:19 CET 2010


Author: torsten
Date: 2010-02-26 10:04:18 +0100 (Fri, 26 Feb 2010)
New Revision: 1836

Modified:
   wasko/branches/2.0/mpulsweb/model/case.py
Log:
* mpulsweb/model/case.py: Implemented basic checks if a case can be
  anonymized.


Modified: wasko/branches/2.0/mpulsweb/model/case.py
===================================================================
--- wasko/branches/2.0/mpulsweb/model/case.py	2010-02-26 09:02:42 UTC (rev 1835)
+++ wasko/branches/2.0/mpulsweb/model/case.py	2010-02-26 09:04:18 UTC (rev 1836)
@@ -39,7 +39,8 @@
 from mpulsweb.lib.helpers import ensure_unicode
 from mpulsweb.lib.db import PostgresDBInterface, db
 
-from mpulsweb.model.phase import PhaseFactory, ConsistenceCheckException
+from mpulsweb.model.phase import PhaseFactory, StartPhasePart, \
+    ConsistenceCheckException
 
 
 log = logging.getLogger(__name__)
@@ -47,6 +48,18 @@
 
 LOAD_CASE_SQL = """SELECT %(fields)s FROM master_tbl_view WHERE id = %%(id)s"""
 
+MARKANONYMIZE_FAILED_MIN_PHASE = u"""\
+<p>Eine Anonymisierung ist für Fälle in der Phase "%s" nicht
+vorgesehen.</p>
+<p>Bitte löschen Sie diesen Fall entsprechend der Verwaltungsfunktion:<br>
+Überblick - Verwaltung - Abbruch der Eingangsdokumentation.</p>
+<p>Klicken Sie auf "OK", um fortzufahren.</p>
+"""
+
+MARKANONYMIZE_FAILED_RUNNING_PHASE = u"""\
+<p>Eine Anonymisierung ist für diese Fallakte derzeit nicht möglich: Es können nur Fälle beendet werden, deren aktuelle Phase beendet wurde. Die Phase "%s" is derzeit noch nicht beendet. Bitte beenden Sie die Phase und versuchen Sie erneut eine Anonymisierung.</p> Klicken Sie auf "OK", um fortzufahren.</p>
+"""
+
 class LoadCaseNotExistsError(Exception):
 
     def __init__(self, value):
@@ -182,6 +195,7 @@
             preset = dict()
         self.preset = preset
         self.formed_instance = None
+        self.phaseslist = PhaseFactory().load(self.id)
 
     @classmethod
     def set_fields(cls, raw_fields):
@@ -232,13 +246,24 @@
         consistent up to the current phase. A case is consistent if no required
         field are missing and all relevant dates on phases are set
         """
-        phaseslist = PhaseFactory().load(self.id)
-        phaseslist.check_consistence()
+        self.phaseslist.check_consistence()
 
     def check_anonymizeability(self):
         """Raises ConsistenceCheckException if the case is not in a anonymizable state.  
         """
-        #TODO: Add additional checks e.g on minimal required phase
+
+        # Check if anonymization is allowed in the current phase 
+        phasepart = self.phaseslist.get_current_phase()
+        desc  = g.mpuls_config.get('phases', 'description')[0].get(phasepart.id)
+        if not phasepart.is_anonymizable():
+            raise ConsistenceCheckException(
+                MARKANONYMIZE_FAILED_MIN_PHASE % desc)
+
+        # Check if the current phase is currently running.
+        if isinstance(phasepart, StartPhasePart):
+            raise ConsistenceCheckException(
+                MARKANONYMIZE_FAILED_RUNNING_PHASE % desc) 
+
         #Finally check consistence
         self.check_consistence()
 



More information about the Mpuls-commits mailing list