[Mpuls-commits] r586 - in waska/trunk: . waskaweb/controllers waskaweb/model

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Wed Aug 26 17:13:57 CEST 2009


Author: frank
Date: 2009-08-26 17:13:56 +0200 (Wed, 26 Aug 2009)
New Revision: 586

Modified:
   waska/trunk/ChangeLog.txt
   waska/trunk/waskaweb/controllers/case.py
   waska/trunk/waskaweb/controllers/statement.py
   waska/trunk/waskaweb/model/case.py
Log:
Complete changes missed in last release

Modified: waska/trunk/ChangeLog.txt
===================================================================
--- waska/trunk/ChangeLog.txt	2009-08-26 15:02:56 UTC (rev 585)
+++ waska/trunk/ChangeLog.txt	2009-08-26 15:13:56 UTC (rev 586)
@@ -1,3 +1,21 @@
+2009-08-26	Frank Koormann <frank.koormann at intevation.de>
+
+	Complete changes missed in last release (some gaps left open to
+	anonymize cases)
+
+	* waskaweb/model/case.py (State.phasesAreCompleted):
+	Omit entry phase (always false).
+	
+	* waskaweb/controllers/statement.py: Updated messages.
+	(StatementController.declinePrivacyStatement): phasesAreCompleted and 
+	_completeAnonymizedCase added.
+
+	* waskaweb/controllers/case.py: Updated messages.
+	(_determineAnonymizedCaseEndPhase): Helper, determine phase to be set.
+	(CaseController.markForAnonymizeFromOverview, 
+	CaseController.markForAnonymize): Different messages depending on phase.
+	waskaweb/model/case.py 
+	
 2009-08-25	Frank Koormann <frank.koormann at intevation.de>
 
 	Release 1.5.3

Modified: waska/trunk/waskaweb/controllers/case.py
===================================================================
--- waska/trunk/waskaweb/controllers/case.py	2009-08-26 15:02:56 UTC (rev 585)
+++ waska/trunk/waskaweb/controllers/case.py	2009-08-26 15:13:56 UTC (rev 586)
@@ -71,7 +71,9 @@
 
 from waskaweb.model.phases_factory   import phases_pairs
 from waskaweb.model.phases           import Phase
-from waskaweb.model.phase_transition import symbol_phase, phase_neighbors
+from waskaweb.model.phase_transition import symbol_phase, phase_neighbors, \
+                                            PHASE_DESCRIPTIONS, phase_start, \
+                                            CLEAR_START, CLEAR_ENDE
 
 from waskaweb.lib.db        import db
 from waskaweb.lib.xmlimport import importFromXML
@@ -106,7 +108,7 @@
 
 ANONYMIZE_CONFIRM = u"""Fallakte anonymisieren?"""
 ANONYMIZE_CONFIRM_TEXT = u"""Wollen Sie wirklich die Fallakte anonymisieren und die personenbezogenen Daten unwiederbringlich verlieren?. Die Fallakte steht danach nicht mehr zur Bearbeitung zur Verfügung. Die anonymisierte Fallakte wird weiterhin in der Auswertung berücksichtigt werden."""
-MARKANONYMIZE_CONFIRM_TEXT = u"""Wollen Sie wirklich die Fallakte zum Anonymisieren freigeben? Die Fallakte steht Ihnen danach nicht mehr zur Bearbeitung zur Verfügung und wird der Administration zur Anonymisierung vorgelegt.""" 
+MARKANONYMIZE_CONFIRM_TEXT = u"""<p>Wollen Sie wirklich die Fallakte zum Anonymisieren freigeben? Die Fallakte steht Ihnen danach nicht mehr zur Bearbeitung zur Verfügung und wird der Administration zur Anonymisierung vorgelegt.</p><p><b>Die Fallakte wird in der Phase </b>'%s'<b> anonymisiert und wird in Abhängigkeit davon als Case Management Fall oder nur als Beratungsfall bei entsprechenden Auswertungen berücksichtigt!</b>"""
 
 ANONYMIZE_SUCCESS = u"""Fallakte anonymisiert!"""
 ANONYMIZE_SUCCESS_TEXT = u"""Die personenbezogenen Daten der Fallakte wurden gelöscht und die Fallakte aus der Übersicht entfernt. Bitte klicken Sie auf "OK", um zur Fallaktenübersicht fortzufahren."""
@@ -116,7 +118,9 @@
 MARKANONYMIZE_SUCCESS_TEXT = u"""Die Fallakten wurde zur Anonymisierung freigeben und liegt der Administration zur endgültigen Anonymisierung vor. Bitte klicken Sie auf "OK", um zur Fallaktenübersicht fortzufahren."""
 
 MARKANONYMIZE_INCOMPLETE_PHASE_FAILED = u"""Anonymisierung nicht möglich."""
-MARKANONYMIZE_INCOMPLETE_PHASE_FAILED_TEXT = u"""<p>Eine Anonymisierung ist für dieser Fallakte derzeit nicht möglich: Es sind nur konsistente Fallakten mit beendeter Phase anonymisierbar.</p><p>Bitte prüfen Sie, ob die Daten der Fallakte konsistent sind und ob alle nötigen Pflichtfelder für die aktuelle oder zurückliegende Phasen ausgefüllt wurden.</p><p>Erfüllen Sie die genannten Anforderungen zur Anonymisierung und wiederholen Sie den Vorgang.<br>Klicken Sie auf "OK", um fortzufahren.</p>"""
+MARKANONYMIZE_INCOMPLETE_PHASE_FAILED_TEXT = u"""<p>Eine Anonymisierung ist für diese Fallakte derzeit nicht möglich: Es sind nur Fallakten anonymisierbar, die ausreichend valide sind und keine laufende Phase haben.</p><p>Bitte prüfen Sie, ob die Daten der Fallakte konsistent sind und ob alle nötigen Pflichtfelder für die aktuelle oder zurückliegende Phasen ausgefüllt wurden. Beenden Sie die laufende Phase.</p><p>Erfüllen Sie die genannten Anforderungen zur Anonymisierung und wiederholen Sie den Vorgang.<br>Klicken Sie auf "OK", um fortzufahren.</p>"""
+MARKANONYMIZE_CLEARING_PHASE_FAILED_TEXT = u"""<p>Eine Anonymisierung ist für Fälle in der Eingangsanamnese nicht vorgesehen.</p><p>Bitte löschen Sie diesen Fall, wenn die Betreuung in der Eingangsanamnese abgebrochen wurde.</p><p>Klicken Sie auf "OK", um fortzufahren.</p>"""
+
 IMPORT_FAILED = u"""Fallakte wurde nicht importiert!"""
 IMPORT_FAILED_TEXT = u"""Bei dem Importieren der Datei ist ein Fehler aufgetreten. Es konnten keine Daten der Fallakte importiert werden. Klicken Sie auf "OK", um zum Import-Dialog fortzufahren."""
 
@@ -219,6 +223,17 @@
             return render('/statement/dialogs/missing_statement.mako')
     return decorator(validate)
 
+
+def _determineAnonymizedCaseEndPhase(case):
+    '''Determine the phase to be set for the anonymized case'''
+    current_phase = case.getState().getPhase()
+    if phase_start(current_phase):
+        end_phase = current_phase + 1
+    else:
+        end_phase = current_phase
+    return end_phase
+
+
 class CaseController(CasebaseController):
 
     def __before__(self):
@@ -1237,7 +1252,12 @@
             # are filled)
             if (not case.getState().phasesAreConsistent() or not case.getState().phasesAreCompleted()) and case.isYoungerThan(INCONSISTENCY_CHECK_AFTER):
                 c.notification_for  = MARKANONYMIZE_INCOMPLETE_PHASE_FAILED 
-                c.notification_text = MARKANONYMIZE_INCOMPLETE_PHASE_FAILED_TEXT
+                if case.getState().getPhase() in (CLEAR_START, CLEAR_ENDE):
+                    c.notification_text = \
+                                MARKANONYMIZE_CLEARING_PHASE_FAILED_TEXT
+                else:    
+                    c.notification_text = \
+                                MARKANONYMIZE_INCOMPLETE_PHASE_FAILED_TEXT
                 c.url_ok            = h.url_for(controller="/case_overview")
                 return render('/casemanagement/dialogs/failed_markanonymize_phase_incomplete_from_overview.mako')
             if confirmed == 1:
@@ -1249,7 +1269,8 @@
                     return render('/casemanagement/dialogs/success_markanonymize.mako')
             else:
                 c.confirm_for = ANONYMIZE_CONFIRM
-                c.question = MARKANONYMIZE_CONFIRM_TEXT
+                c.question = MARKANONYMIZE_CONFIRM_TEXT % \
+                      PHASE_DESCRIPTIONS[_determineAnonymizedCaseEndPhase(case)]
                 c.url_yes = "/case/markForAnonymize/%s/1" % id
                 c.url_no  =  h.url_for(controller="/case_overview")
                 return render('/casemanagement/dialogs/confirm_markanonymizeFromOverview.mako')
@@ -1268,7 +1289,12 @@
             # are filled)
             if (not case.getState().phasesAreConsistent() or not case.getState().phasesAreCompleted()) and case.isYoungerThan(INCONSISTENCY_CHECK_AFTER):
                 c.notification_for  = MARKANONYMIZE_INCOMPLETE_PHASE_FAILED 
-                c.notification_text = MARKANONYMIZE_INCOMPLETE_PHASE_FAILED_TEXT
+                if case.getState().getPhase() in (CLEAR_START, CLEAR_ENDE):
+                    c.notification_text = \
+                                MARKANONYMIZE_CLEARING_PHASE_FAILED_TEXT
+                else:    
+                    c.notification_text = \
+                                MARKANONYMIZE_INCOMPLETE_PHASE_FAILED_TEXT
                 c.url_ok            = "/case/digest/%s" % id
                 return render('/casemanagement/dialogs/failed_markanonymize_phase_incomplete.mako')
             if confirmed == 1:
@@ -1280,7 +1306,8 @@
                     return render('/casemanagement/dialogs/success_markanonymize.mako')
             else:
                 c.confirm_for = ANONYMIZE_CONFIRM
-                c.question = MARKANONYMIZE_CONFIRM_TEXT
+                c.question = MARKANONYMIZE_CONFIRM_TEXT % \
+                      PHASE_DESCRIPTIONS[_determineAnonymizedCaseEndPhase(case)]
                 c.url_yes = "/case/markForAnonymize/%s/1" % id
                 c.url_no  = "/case/digest/%s" % id
                 return render('/casemanagement/dialogs/confirm_markanonymize.mako')

Modified: waska/trunk/waskaweb/controllers/statement.py
===================================================================
--- waska/trunk/waskaweb/controllers/statement.py	2009-08-26 15:02:56 UTC (rev 585)
+++ waska/trunk/waskaweb/controllers/statement.py	2009-08-26 15:13:56 UTC (rev 586)
@@ -38,11 +38,17 @@
 from waskaweb.model.case                    import *
 from waskaweb.model.statement               import * 
 from waskaweb.lib.security                  import checkRole
+from waskaweb.lib.search                    import INCONSISTENCY_CHECK_AFTER
+from waskaweb.model.phase_transition        import PHASE_DESCRIPTIONS
 
 from waskaweb.controllers.case              import ANONYMIZE_CONFIRM, \
                                                    MARKANONYMIZE_CONFIRM_TEXT, \
                                                    MARKANONYMIZE_SUCCESS, \
-                                                   MARKANONYMIZE_SUCCESS_TEXT
+                                                   MARKANONYMIZE_SUCCESS_TEXT, \
+                                    MARKANONYMIZE_INCOMPLETE_PHASE_FAILED, \
+                                    MARKANONYMIZE_INCOMPLETE_PHASE_FAILED_TEXT,\
+                                    MARKANONYMIZE_CLEARING_PHASE_FAILED_TEXT, \
+                                    _determineAnonymizedCaseEndPhase
 
 log = logging.getLogger(__name__)
 
@@ -57,6 +63,10 @@
 #SET_EE_DECLINE_SUCCESS_TEXT = u"""Die personenbezogenen Daten der Fallakte wurden gelöscht und die Fallakte aus der Übersicht entfernt. Bitte klicken Sie auf "OK", um zur Fallaktenübersicht fortzufahren."""
 SET_EE_DECLINE_FAILED_HEADER = u"""Fallakte wurde nicht anonymisiert!"""
 SET_EE_DECLINE_FAILED_TEXT = u"""Bei dem Anonymisieren der Fallakte ist ein Fehler aufgetreten. Die Fallakte wurde nicht anonymisiert. Bitte klicken Sie auf "OK", um zur Fallaktenübersicht fortzufahren."""
+MARK_EE_DECLINE_INCOMPLETE_PHASE_FAILED = u"""Die Einwilligungserklärung wurde nicht zurückgezogen!"""
+MARK_EE_DECLINE_INCOMPLETE_PHASE_FAILED_TEXT = u"""<p>Das Zurückziehen der Einwilligungserklärung führt zur Anonymisierung der Akte.</p>%s""" % MARKANONYMIZE_INCOMPLETE_PHASE_FAILED_TEXT
+MARK_EE_DECLINE_CLEARING_PHASE_FAILED_TEXT = u"""<p>Das Zurückziehen der Einwilligungserklärung führt zur Anonymisierung der Akte.</p>%s""" % MARKANONYMIZE_CLEARING_PHASE_FAILED_TEXT
+
 class StatementController(CasebaseController):
 
     def __before__(self):
@@ -148,6 +158,16 @@
         confirmed         = self._checkBool(confirmed)
         case              = self._loadCase(id)
         c.form_navigation = self._getFormNavigation()
+        if (not case.getState().phasesAreConsistent() or not case.getState().phasesAreCompleted()) and case.isYoungerThan(INCONSISTENCY_CHECK_AFTER):
+            c.notification_for  = MARK_EE_DECLINE_INCOMPLETE_PHASE_FAILED
+            if case.getState().getPhase() in (CLEAR_START, CLEAR_ENDE):
+                c.notification_text = \
+                            MARK_EE_DECLINE_CLEARING_PHASE_FAILED_TEXT
+            else:    
+                c.notification_text = \
+                            MARK_EE_DECLINE_INCOMPLETE_PHASE_FAILED_TEXT
+            c.url_ok            = "/case/digest/%s" % id
+            return render('/casemanagement/dialogs/failed_markanonymize_phase_incomplete.mako')
         if confirmed:
             try:
                 statement = case.getPrivacyStatement()
@@ -171,7 +191,8 @@
                 return render('/statement/dialogs/ee_decline_failed.mako')
         else:
             c.confirm_for = ANONYMIZE_CONFIRM
-            c.question = MARKANONYMIZE_CONFIRM_TEXT
+            c.question = MARKANONYMIZE_CONFIRM_TEXT % \
+                      PHASE_DESCRIPTIONS[_determineAnonymizedCaseEndPhase(case)]
             c.url_yes = h.url_for(
                 controller="statement", \
                 action="declinePrivacyStatement", \

Modified: waska/trunk/waskaweb/model/case.py
===================================================================
--- waska/trunk/waskaweb/model/case.py	2009-08-26 15:02:56 UTC (rev 585)
+++ waska/trunk/waskaweb/model/case.py	2009-08-26 15:13:56 UTC (rev 586)
@@ -52,7 +52,8 @@
 from waskaweb.model.statement import PrivacyStatement, AidPlanStatement, DiscretionStatement
 from waskaweb.model.document import listDocuments 
 
-from waskaweb.model.phase_transition import phase_description, phase_end
+from waskaweb.model.phase_transition import phase_description, phase_end, \
+                                            CLEAR_START, CLEAR_ENDE
 from waskaweb.model.phases_factory   import RequiredFields, currentPhase, phases_pairs
 
 from waskaweb.lib.helpers import dd_mm_yyyy_HH_MM, dd_mm_YYYY
@@ -1176,7 +1177,10 @@
         error_cases = Set(c.id for c in CaseOverview().search(search_str))
         if case.id in error_cases: return False
 
-        if phase_end(cf) and current_phase.isRecursiveComplete():
+        # No Anonymization for Clearing Phase
+        if cf == CLEAR_START or cf == CLEAR_ENDE:
+            return False
+        elif phase_end(cf) and current_phase.isRecursiveComplete():
             return True
         else:
             return False 



More information about the Mpuls-commits mailing list