[Mpuls-commits] r42 - in trunk: . waskaweb/config waskaweb/controllers waskaweb/i18n waskaweb/i18n/de/LC_MESSAGES waskaweb/lib waskaweb/model waskaweb/templates/casemanagement waskaweb/templates/casemanagement/dialogs waskaweb/templates/statement waskaweb/templates/statement/dialogs

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Wed Aug 13 15:11:29 CEST 2008


Author: thomas
Date: 2008-08-13 15:11:29 +0200 (Wed, 13 Aug 2008)
New Revision: 42

Added:
   trunk/waskaweb/templates/casemanagement/dialogs/confirm_anonymize.mako
   trunk/waskaweb/templates/casemanagement/dialogs/success_anonymize.mako
   trunk/waskaweb/templates/statement/dialogs/ee_accept_failed.mako
   trunk/waskaweb/templates/statement/dialogs/ee_accept_success.mako
   trunk/waskaweb/templates/statement/dialogs/ee_decline_failed.mako
Modified:
   trunk/ChangeLog.txt
   trunk/Changes.txt
   trunk/waskaweb/config/routing.py
   trunk/waskaweb/controllers/CaseBase.py
   trunk/waskaweb/controllers/agency_overview.py
   trunk/waskaweb/controllers/case.py
   trunk/waskaweb/controllers/case_overview.py
   trunk/waskaweb/controllers/statement.py
   trunk/waskaweb/i18n/de/LC_MESSAGES/waskaweb.po
   trunk/waskaweb/i18n/waskaweb.pot
   trunk/waskaweb/lib/csv.py
   trunk/waskaweb/lib/evaluation.py
   trunk/waskaweb/lib/helpers.py
   trunk/waskaweb/model/case.py
   trunk/waskaweb/templates/casemanagement/bundle_editor.mako
   trunk/waskaweb/templates/casemanagement/bundle_standin.mako
   trunk/waskaweb/templates/casemanagement/caselist.mako
   trunk/waskaweb/templates/casemanagement/digest.mako
   trunk/waskaweb/templates/casemanagement/downloadCSV.mako
   trunk/waskaweb/templates/casemanagement/main.mako
   trunk/waskaweb/templates/casemanagement/overview.mako
   trunk/waskaweb/templates/statement/dialogs/confirm.mako
   trunk/waskaweb/templates/statement/dialogs/ee_decline_success.mako
   trunk/waskaweb/templates/statement/edit.mako
Log:
Load 804296472704 into trunk.


Modified: trunk/ChangeLog.txt
===================================================================
--- trunk/ChangeLog.txt	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/ChangeLog.txt	2008-08-13 13:11:29 UTC (rev 42)
@@ -1,5 +1,126 @@
+2008-03-13 Torsten Irlaender  <torsten.irlaender at intevation.de>
+
+	* Changes.txt: Added new features and improvements of the upcoming
+	  release.
+
+2008-03-12  Sascha L. Teichmann <teichmann at intevation.de>
+
+	* waskaweb/lib/csv.py: Removed redundant calculation of filling cells.
+
+2008-03-12 Torsten Irlaender  <torsten.irlaender at intevation.de>
+
+	* waskaweb/controllers/case.py,
+	  waskaweb/controllers/case_overview.py,
+	  waskaweb/lib/helpers.py,
+	  waskaweb/model/case.py,
+	  waskaweb/templates/casemanagement/bundle_editor.mako,
+	  waskaweb/templates/casemanagement/bundle_standin.mako: Display
+	  placeholder "--/--" in case of cases with no first or lastname.
+	  Removed unneeded check of state in casemodel when deleting. Earlier
+	  check of the casebundele when deleting or marking if there is at
+	  least one case which can be deleted (valid state 4 or 5). Else show
+	  a dialog.   
+
+	* waskaweb/i18n/de/LC_MESSAGES/waskaweb.po
+          waskaweb/i18n/waskaweb.pot: Added translated text for anonymizing
+	  the case directly.
+        * waskaweb/templates/casemanagement/main.mako: Added link to anonymize
+	  the case directely in the privacy section.
+
+	* waskaweb/config/routing.py: Added new roue for anonymize function
+
+	* waskaweb/templates/casemanagement/dialogs/confirm_anonymize.mako,
+	  waskaweb/templates/casemanagement/dialogs/success_anonymize.mako:
+	  New. Confirmation and Success Dialog for anonymisation.
+
+	* waskaweb/controllers/case.py,
+	  waskaweb/model/case.py: Added controllerfunction to anonymize the
+	  case
+
+	* waskaweb/controllers/CaseBase.py,
+	  waskaweb/controllers/agency_overview.py,
+	  waskaweb/controllers/case_overview.py,
+	  waskaweb/templates/casemanagement/overview.mako: Added CSV-Export
+	  for bundled cases for the normal server  (evaluation server aready
+	  includes CSV-export). Improved filtering of cases in the
+	  bundleAction method.
+
+	* waskaweb/templates/casemanagement/downloadCSV.mako: Replaced 
+	  hardcodes links with c-vars containing links.
+
+2008-03-12  Sascha L. Teichmann <teichmann at intevation.de>
+
+	* waskaweb/model/case.py: After anonymization all attachments
+	  of case are deleted.
+
+2008-03-11 Torsten Irlaender  <torsten.irlaender at intevation.de>
+
+	* waskaweb/controllers/case_overview.py,
+	  waskaweb/model/case.py: Fixed call of anonymize function. Fix for
+	  selecting bundle of anonymize cases for deletion.
+
+2008-03-11 Sascha L. Teichmann <teichmann at intevation.de>
+
+	* waskaweb/model/case.py: Call db function to anonymize a case.
+
+2008-03-11 Torsten Irlaender  <torsten.irlaender at intevation.de>
+
+	* M waskaweb/controllers/statement.py,
+	  M waskaweb/i18n/de/LC_MESSAGES/waskaweb.po,
+	  M waskaweb/i18n/waskaweb.pot,
+	  M waskaweb/templates/casemanagement/main.mako,
+	  M waskaweb/templates/statement/edit.mako: The privacy statement can
+	  now be revoked. The privacy menu on the left side is now always
+	  displayed. Its content depends on the state of the privacy
+	  statement: Is not set yet -> set statement, print statement.
+	  Statement is signed -> revoke statement.
+
+	* M waskaweb/controllers/statement.py,
+	  M waskaweb/model/case.py: Added anonymize function to the
+	  case-model. TODO: Implement SQL-based anonymize-function and call
+	  it! For now only the state of the case is set to "5", wich is the
+	  anonymized state. 
+	  
+	* M waskaweb/controllers/statement.py,
+	  M waskaweb/model/case.py,
+	  M waskaweb/templates/casemanagement/digest.mako,
+	  M waskaweb/templates/statement/dialogs/confirm.mako,
+	  M waskaweb/templates/statement/dialogs/ee_decline_success.mako,
+	  A waskaweb/templates/statement/dialogs/ee_accept_failed.mako,
+	  A waskaweb/templates/statement/dialogs/ee_accept_success.mako,
+	  A waskaweb/templates/statement/dialogs/ee_decline_failed.mako,
+	  M waskaweb/templates/statement/edit.mako:
+	  Added confirmation and notification dialogs into the process of
+	  setting the privacy statement.
+
+	* M waskaweb/i18n/de/LC_MESSAGES/waskaweb.po,
+	  M waskaweb/i18n/waskaweb.pot,
+	  M waskaweb/templates/casemanagement/caselist.mako: Reactivated the
+	  display of the last accesstime in the case overview for users with
+	  role "cm-ka"
+
+	* M waskaweb/controllers/case_overview.py,
+	  M waskaweb/model/case.py,
+	  M waskaweb/templates/casemanagement/caselist.mako,
+	  M waskaweb/templates/casemanagement/overview.mako: Anonymized cases
+	  can now be displayed in the caseoverview. Anonymized cases can not
+	  be edited or view by the user. They are only listed to increase
+	  transperency of the case listing. Anonymized cases can be deleted
+	  without the need to me marked for deletion by a cm.
+
+2008-03-10 Torsten Irlaender  <torsten.irlaender at intevation.de>
+
+	* M waskaweb/model/case.py: Fixed searching of cases. Cases with no
+	  kundennummer, name or vorname will be listed now
+
+2008-03-10 Sascha L. Teichmann  <teichmann at intevation.de>
+
+	* waskaweb/lib/evaluation.py: Fixed 'Migrationshintergrund'
+
 2008-03-09 Torsten Irlaender  <torsten.irlaender at intevation.de>
 
+	* Tagged Beta 25
+
 	* M waskaweb/i18n/de/LC_MESSAGES/waskaweb.po,
 	  M waskaweb/model/case.py,
 	  M waskaweb/templates/casemanagement/caselist.mako: Changed footer to

Modified: trunk/Changes.txt
===================================================================
--- trunk/Changes.txt	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/Changes.txt	2008-08-13 13:11:29 UTC (rev 42)
@@ -1,3 +1,87 @@
+Next Beta:
+
+	Neu: 
+
+		Anonymisierung der Fallakte:
+		============================
+
+		* Die Fallakte kann nun durch den Bearbeiter anonymisiert
+		  werden. Hierzu findet sich im Abschnitt "Datenschutz" nun
+		  die Funktion "Fallakte anonymisieren". 
+		  Eine Anonymisierung führt zu einer Löschung der
+		  personenbezogenen Daten der Fallakte. Die Fallakte steht
+		  nach einer Anonymisierung nicht mehr für eine Bearbeitung
+		  zur Verfügung. Weitere Punkte die bezüglich anonymisierter
+		  Fallakten zu beachten gilt: 
+
+		  	- Anonymisierte Fallakten fließen weiterhin in die
+			  Auswertungen mit ein. 
+
+			- Anonymisierte Fallakten können nur durch die
+			  Administration gelöscht werden.
+
+		  Weiter Erläuterungen welche personenbezogenen Daten
+		  anonymisiert werden finden Sie unter:
+		  	
+			http://waska-anwender.intevation.de/download/WASKA-Erlaeuterungen_Anonymisierung.pdf
+
+		Zurückziehen Einwilligungserklärung:
+		====================================
+
+		* Eine einmal gesetzte Einwilligungserklärung kann nun zurückgezogen
+		  werden. Das Zurückziehen der Einverständniserklärung führt zur
+		  Anonymisierung der personenbezogenen Daten.
+
+		* Der Arbeitsablauf zum Setzen und Zurückziehen der
+		  Einverständniserklärung wurde um Dialoge erweitert, die den
+		  Arbeitslauf transparenter und verständlicher machen sollen.
+
+		CSV-Export:
+		===========
+
+		* Fallakten können über die Fallaktenübersicht als CSV-Datei
+		  exportiert werden. Die CSV-Datei z.B. für Auswertungen in
+		  externen Programmen verwendet werden. Zum Export der Fallakten müssen diese
+		  zunächst markiert und dann aus der Auswahlliste die
+		  entsprechende Funktion ausgewählt werden. 
+		  Bitte beachten Sie, dass sich eine CSV Datei _nicht_ für den
+		  Austausch (Export und Import) von Fallakten zwischen
+		  verschiedenen Systemen eignet. Diese Funktionalität wird in
+		  der kommenden Version in WASKA enthalten sein.
+
+		Sonstiges:
+		==========
+
+		* In der Fallaktenübersicht von Nutzern in der Rolle "CM-KA" wird
+		  zusätzlich der Zeitpunkt der letzen Bearbeitung an der Fallakte
+		  angezeigt. 
+		  Bitte beachten Sie, dass hier für jede Fallakte zunächst das Datum
+		  steht an dem die Fallakte angelegt wurde, bzw in WASKA importiert
+		  wurde. Das Feld wird dann bei der nächsten Bearbeitung aktualisiert.
+
+
+	Verbessert:
+
+		* Auswertung des Migrationshintergrund: Es wurde ein Fehler in
+		  der Auswertungsfunktion zum Migrationshintergrund behoben, der
+		  dazu führt, dass zu viele Jugendliche in der Auswertung einen
+		  Migrationshintergrund hatten.
+
+		* Die Fallaktenübersicht zeigt nun auch die Fälle, für die weder der
+		  Vorname, der Nachname, noch die Kundennummer eingetragen wurde.
+		
+Beta 25:
+
+    Verbessert:
+
+	* Die Auswertungen sind visuell verschiedenen Gruppen zugeordnet:
+		
+		+ Auswertungen über alle Jugendlichen
+		+ Auswertung über Jugendliche im Case-Management
+		+ Auswertung über Jugendliche, die das CM abgeschlossen haben
+
+	* Kleinere Textänderungen in der Auswertung
+
 Beta 23:
     Neu:
      
@@ -35,6 +119,16 @@
 
     * Verwendung von kontrastreicheren Icons.
 
+    * In der Auswertung gilt ein Jugendlicher dann als in das CM übernommen,
+      wenn ein Förderbedarf in mindestens einem der unter der Förderplanung
+      gelisteten Bereichen angegeben ist. Die tatsächlich eingetragenen
+      Unterstüzungsangebote sind für die Auswertung nicht von Bedeutung.
+
+    * Die Auswertung zum Förderbedarf berücksichtigit nun nur die Angaben aus
+      des Punktes "Förderbedarf" im Abschnitt "Förderplanung". Zuvor wurde die
+      Auswertung über die in den verschiedenen Bereichen der
+      Unterstützungsangebote eingetragenen Maßnahmen durchgeführt.
+
     * Die Auswertung zur Vermittlung und der Veränderung des Rechtskreises
       wurden so geändert das nur die Jugendlichen gezählt werden, die das
       CM tatsächlich beendet haben: Diese Angabe findet sich in dem Feld
@@ -42,22 +136,11 @@
       gesetzt, so gilt das CM im Sinne der Auswertung als abgeschlossen.
 
     * Alle Auswertungen berücksichtigen nun auch Felder
-      die expilizit keine Angabe enthalten. Z.b Die Auswertung zu der
+      die explizit keine Angabe enthalten. Z.b Die Auswertung zu der
       Verweildauer im CM. Wurde keine Angabe in dem Feld "Zeitraum
       Fallmanagement" in der Abschlussbewertung gemacht, so taucht dieser
-      Fall in der Auswertung unter dem Punkt "Keine Angabe" auf. 
+      Fall in der Auswertung unter dem Punkt "Keine Angabe" auf.
 
-    * Die Auswertung zum Förderbedarf berücksichtigit nun nur die Angaben aus
-      des Punktes "Förderbedarf" im Abschnitt "Förderplanung". Zuvor wurde die
-      Auswertung über die in den verschiedenen Bereichen der
-      Unterstützungsangebote eingetragenen Maßnahmen durchgeführt.
-
-    * In der Auswertung gilt ein Jugendlicher dann als in das CM übernommen,
-      wenn ein Förderbedarf in mindestens einem der unter der Förderplanung
-      gelisteten Bereichen angegeben ist. Die tatsächlich eingetragenen
-      Unterstüzungsangebote sind nicht von Bedeutung.
-
-
 Beta 21:
 
     Neu:

Modified: trunk/waskaweb/config/routing.py
===================================================================
--- trunk/waskaweb/config/routing.py	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/config/routing.py	2008-08-13 13:11:29 UTC (rev 42)
@@ -26,6 +26,7 @@
     map.connect('case/open/:id/:confirmed', controller="case", action="open")
     map.connect('case/close/:id/:confirmed', controller="case", action="close")
     map.connect('case/select/:id/:confirmed', controller="case", action="select")
+    map.connect('case/anonymize/:id/:confirmed', controller="case", action="anonymize")
     map.connect('case/:action/:ds_id/:page_id/:form', controller="case") 
     map.connect('case/:action/:ds_id/:page_id', controller="case")
     map.connect('navigation/:action/:ds_id/:page_id', controller="navigation")

Modified: trunk/waskaweb/controllers/CaseBase.py
===================================================================
--- trunk/waskaweb/controllers/CaseBase.py	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/controllers/CaseBase.py	2008-08-13 13:11:29 UTC (rev 42)
@@ -87,5 +87,5 @@
             return True 
         except:
             return False
-        
+
 # vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8:

Modified: trunk/waskaweb/controllers/agency_overview.py
===================================================================
--- trunk/waskaweb/controllers/agency_overview.py	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/controllers/agency_overview.py	2008-08-13 13:11:29 UTC (rev 42)
@@ -120,6 +120,8 @@
 
     @checkRole(('pb_ka'))
     def downloadCSV(self):
+        c.download_link = h.url_for(action="downloadCSVAction")
+        c.overview_link = h.url_for(action="overview")
         return render('casemanagement/downloadCSV.mako')
 
     @checkRole(('pb_ka'))
@@ -142,7 +144,7 @@
         except:
             return render('/tests/trace.mako')
 
-    @checkRole(('pb_ka'))
+    @checkRole(('pb_ka', 'cm_ka'))
     def exportBundle(self, confirmed):
         confirmed           = self._checkBool(confirmed)
         agency_bundle       = session.get('agencybundle')

Modified: trunk/waskaweb/controllers/case.py
===================================================================
--- trunk/waskaweb/controllers/case.py	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/controllers/case.py	2008-08-13 13:11:29 UTC (rev 42)
@@ -2,7 +2,7 @@
 #
 # Copyright (c) 2007 by Intevation GmbH
 # Authors:
-# Torsten Irländer <torsten.irlaender at intevation.de>
+# Torsten Irländer <torsten.irlaender at intevation.de>
 # Sascha L. Teichmann <teichmann at intevation.de>
 #
 
@@ -48,6 +48,9 @@
 DELETE_CONFIRM_TEXT = u"""Wollen Sie wirklich die Fallakte löschen und die Daten unwiederbringlich verlieren?""" 
 MARKDELETE_CONFIRM_TEXT = u"""Wollen Sie wirklich die Fallakte zum Löschen freigeben? Die Fallakte steht Ihnen danach nicht mehr zur Bearbeitung zur Verfügung und wird durch die Administration gelöscht werden.""" 
 
+ANONYMIZE_CONFIRM = u"""Fallakte anonymisieren?"""
+ANONYMIZE_CONFIRM_TEXT = u"""Wollen Sie wirklich die Fallakte anonymisieren und die personenbezogenen Daten unwiederbringlich verlieren?. Die Fallakte steht Ihnen danach nicht mehr zur Bearbeitung zur Verfügung. Die anonymisierte Fallakte wird weiterhin in der Auswertung berücksichtigt werden."""
+
 RESTORE_CONFIRM = u"""Fallakte wiederherstellen?"""
 RESTORE_CONFIRM_TEXT = u"""Wollen Sie wirklich die Fallakte wiederherstellen? Die Fallakte ist danach wieder für die Nutzer bearbeitbar."""
 
@@ -575,4 +578,26 @@
             c.url_no    = h.url_for(controller="/case", action="organisation", id=id)
             return render('/casemanagement/dialogs/confirm_close.mako')
 
+    @checkRole('cm_ka')
+    def anonymize(self, id, confirmed):
+        id        = self._checkInt(id)
+        confirmed = self._checkBool(confirmed)
+        c.ds_id   = id
+        if confirmed == 1:
+            case = self._loadCase(id)
+            if case.anonymize():
+                c.success_for   =   u'Fallakte anonymisiert!' 
+                c.success_text  =   u'Bitte klicken Sie "OK", um fortzufahren.' 
+                c.url_ok        =   h.url_for(controller="/case_overview")
+                return render('/casemanagement/dialogs/success_anonymize.mako')
+            # TODO: Create Errorpage
+            return "Error! Could not anonymize ds."
+        else:
+            c.context = "../main.mako"
+            c.confirm_for = ANONYMIZE_CONFIRM
+            c.question = ANONYMIZE_CONFIRM_TEXT
+            c.url_yes = "/case/anonymize/%s/1" % id
+            c.url_no  = "/case_overview/"
+            return render('/casemanagement/dialogs/confirm_anonymize.mako')
+
 # vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8:

Modified: trunk/waskaweb/controllers/case_overview.py
===================================================================
--- trunk/waskaweb/controllers/case_overview.py	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/controllers/case_overview.py	2008-08-13 13:11:29 UTC (rev 42)
@@ -7,9 +7,11 @@
 
 import logging
 import formencode
+import paste
 from paste.httpexceptions                   import HTTPNotFound
 
 from waskaweb.lib.base                      import *
+import waskaweb.lib.filters                 as F
 from waskaweb.lib.validators                import SearchCaseForm, BundleActionForm, SetBundleEditorForm, SetBundleStandinForm
 from waskaweb.lib.security                  import checkRole
 from waskaweb.model.case                    import CaseOverview, CaseBundle
@@ -32,17 +34,22 @@
 SETSTANDIN_NOTIFICATION_SUCCESS = u"""Es wurden für %s Fallakten erfolgreich die Vertretung zugewiesen. Bitte klicken Sie auf "OK", um fortzufahren."""
 SETSTANDIN_NOTIFICATION_ERROR_HEADER = u"""Keine Fallakte zugewiesen!""" 
 SETSTANDIN_NOTIFICATION_ERROR = u"""Bei dem Zuweisen der Vertretung für die Fallakten ist ein Fehler aufgetreten. Bitte klicken Sie auf "OK", um fortzufahren."""
-SETSTANDIN_NOTIFICATION_EMPTYLIST_HEADER = u"""Keine gültigen Fälle gewählt!"""
-SETSTANDIN_NOTIFICATION_EMPTYLIST = u"""Es wurde für keine Fälle die Vertretung übertragen."""
 
+EXPORT_SUCCESS = u'''Export erfolgreich - CSV-Datei erstellt!''' 
+EXPORT_SUCCESS_EXPLAINATION = u'''Die Fallakten wurden erfolgreich als CSV-Datei exportiert und stehen zum herunterladen bereit. ''' 
+
+EXPORT_ERROR = u'''Es ist ein Fehler aufgetreten''' 
+EXPORT_ERROR_EXPLAINATION = u'''Bei dem Exportieren der Fallakten ist ein Fehler aufgetreten. Klicken Sie auf "OK", um zur Agenturenübersicht zu gelangen.''' 
+
+BUNDLE_NOTIFICATION_EMPTYLIST_HEADER = u"""Keine gültigen Fälle in der Auswahl!"""
+BUNDLE_NOTIFICATION_EMPTYLIST = u"""Die gewünschte Aktion kann für keine der in der Auswahl befindlichen Fallakten durchgeführt werden. Vergwissern Sie sich, dass sich die Fallakten in einem Zustand befinden, aus dem Sie die Aktion ausführen können."""
+
 DELETE_SUCCESS_ADMIN_HEADER = u"""Fallakten gelöscht!"""
 DELETE_SUCCESS_ADMIN_TEXT = u"""Es wurden %s Fallakten erfolgreich gelöscht. Bitte klicken Sie auf "OK", um fortzufahren."""
 DELETE_NOTIFICATION_ERROR = u"""Bei dem Löschen der Fallakten ist ein Fehler aufgetreten. Bitte klicken Sie auf "OK", um fortzufahren.""" 
 MARKDELETE_SUCCESS_HEADER = u"""Fallakten gelöscht!"""
 MARKDELETE_SUCCESS_TEXT = u"""Es wurden %s Fallakten erfolgreich zum Löschen freigegeben. Bitte klicken Sie auf "OK", um fortzufahren.""" 
 MARKDELETE_NOTIFICATION_ERROR = u"""Bei dem Freigeben zum Löschen der Fallakten ist ein Fehler aufgetreten. Bitte klicken Sie auf "OK", um fortzufahren."""
-DELETE_NOTIFICATION_EMPTYLIST = u"""Es sind keine zum löschen freigegebenen Fallakten gewählt. Bitte klicken Sie auf "OK", um fortzufahren."""
-DELETE_NOTIFICATION_EMPTYLIST_HEADER = u"""Keine Fallakten gelöscht!"""
 
 class CaseOverviewController(CasebaseController):
 
@@ -65,7 +72,12 @@
         default_search_options = ['own:%s' % user.id, 'state:1']
         c.cases.search(";".join(default_search_options))
         c.cases.sortByLastname()
-        c.form_defaults = {'show_own': 1, 'show_other': 0, 'show_open': 1, 'show_closed': 0, 'show_markdelete': 0} 
+        c.form_defaults = {'show_own': 1, \
+                        'show_other': 0, \
+                        'show_open': 1, \
+                        'show_closed': 0, \
+                        'show_markdelete': 0, \
+                        'show_anonymized': 0}
         overview = render('/casemanagement/overview.mako')
         return formencode.htmlfill.render(unicode(overview, 'utf-8'),defaults=c.form_defaults)
 
@@ -99,6 +111,8 @@
                 search_str.append('state:%s' % 2)
             if c.form_result.get('show_markdelete') == '1':
                 search_str.append('state:%s' % 3)
+            if c.form_result.get('show_anonymized') == '1':
+                search_str.append('state:%s' % 5)
             search_str.append(c.form_result.get('search_str'))
             c.cases.search(";".join(search_str))
             c.search_str = c.form_result.get('search_str')
@@ -129,38 +143,61 @@
             if case_bundle.isEmpty():
                 return render('/casemanagement/dialogs/bundle_noselection.mako')
 
-            session['casebundle'] = case_bundle
-            session.save()
-
             list   = UserListObject()
             c.current_user = session['USER_AUTHORIZED']
             filter = [u.id for u in list.getAdminList()]
             filter.append(c.current_user.id)
             c.user_list = list.getUserList(filter)
-            c.case_list = case_bundle.getCases()
             if action == 'delete':
+                # Filter out cases which aren't marked for deletion (3), or are anonymized (5)
+                case_bundle = self._filterBundle(case_bundle, (1,2))
+                if case_bundle.isEmpty(): return self._emptyListError()
+                session['casebundle'] = case_bundle
+                session.save()
                 return self.delete(0)
             if action == 'markdelete':
+                # Fiter out case which are not open(1) or inavtice (2)
+                case_bundle = self._filterBundle(case_bundle, (1,2))
+                if case_bundle.isEmpty(): return self._emptyListError()
+                session['casebundle'] = case_bundle
+                session.save()
                 return self.markDelete(0)
             elif action == 'stand-in':
                 # filter out cases where the user is not the editor and
-                # therefor is not allowed to set the standin
+                # therefor is not allowed to set the standin.
                 filtered = []
-                for case in c.case_list:
+                for case in case_bundle.getCases():
                     if case.getEditor().id == c.current_user.id or c.current_user.isAdmin():
                         filtered.append(case.id)
-                session['casebundle'] = CaseBundle(filtered)
+
+                # Fiter out case which are not open(1) or inavtice (2)
+                case_bundle = self._filterBundle(case_bundle, (1,2))
+                if case_bundle.isEmpty(): return self._emptyListError()
+                c.case_list = case_bundle.getCases()
+                session['casebundle'] = case_bundle
                 session.save()
                 return render('/casemanagement/bundle_standin.mako')
+
             elif action == 'transfer':
+                # Fiter out case which are not open(1) or inavtice (2)
+                case_bundle = self._filterBundle(case_bundle, (1,2))
+                if case_bundle.isEmpty(): return self._emptyListError()
+                c.case_list = case_bundle.getCases()
+                session['casebundle'] = case_bundle
+                session.save()
                 return render('/casemanagement/bundle_editor.mako')
-            elif action == 'export':
-                return u"Exportieren"
+
+            elif action == 'exportCSV':
+                # Fiter out case which are not open(1) or inavtice (2)
+                if case_bundle.isEmpty(): return self._emptyListError()
+                session['casebundle'] = case_bundle
+                session.save()
+                return self.exportCSV(1)
+
             elif action == 'evaluate':
                 return u"Auswerten"
             else:
                 raise HTTPNotFound()
-
         except formencode.Invalid, error:
             c.form_result = error.value
             c.form_errors = error.error_dict or {}
@@ -168,10 +205,24 @@
             return htmlfill.render(unicode(form, 'utf-8'), c.form_result, c.form_errors, auto_insert_errors=False)
         return render('/casemanagement/overview.mako')
 
+    def _filterBundle(self, case_bundle, allowedstates):
+        filtered = []
+        for case in case_bundle.getCases():
+            if case.getState().getState() in allowedstates:
+                filtered.append(case.id)
+        case_bundle = CaseBundle(filtered)
+        return case_bundle
+
+    def _emptyListError(self):
+        c.url_ok            = "/case_overview"
+        c.notification_for  = BUNDLE_NOTIFICATION_EMPTYLIST_HEADER
+        c.notification_text = BUNDLE_NOTIFICATION_EMPTYLIST
+        return render('/casemanagement/dialogs/bundle_noselection.mako')
+
     def _buildCaseList(self, bundle): 
         list = ["<ul>"]
         for case in bundle.getCases():
-            list.append("<li>%s, %s</li>" % (case.first_name, case.last_name))
+            list.append("<li>%s, %s</li>" % (F.NA(case.first_name), F.NA(case.last_name)))
         list.append("</ul>")
         return list
 
@@ -179,25 +230,20 @@
     def setEditorAction(self):
         c.context           = "../main.mako" 
         c.url_ok            = "/case_overview"
-        c.success_for  = DIALOG_CONFIRM_SETEDITOR 
+        c.success_for       = DIALOG_CONFIRM_SETEDITOR 
         case_bundle         = session.get('casebundle')
         validator           = SetBundleEditorForm()
         try:
             form_result = validator.to_python(request.params)
-            if case_bundle and not case_bundle.isEmpty():
-                try:
-                    num = case_bundle.setEditor(form_result.get('editor'))
-                    user = UserObject(form_result.get('editor'))
-                    c.success_text = SETEDITOR_NOTIFICATION_SUCCESS % (str(num), user.first_name, user.last_name)
-                except StandardError, err:
-                    print err
-                    c.failed_for  = SETEDITOR_FAILED_HEADER
-                    c.failed_text = SETEDITOR_FAILED_TEXT
-                    return render ('/casemanagement/dialogs/failed_seteditor.mako')
-                del session['casebundle']
-            else:
-                c.notification_text = DELETE_NOTIFICATION_EMPTYLIST
-                return render('/casemanagement/dialogs/bundle_noselection.mako')
+            try:
+                num = case_bundle.setEditor(form_result.get('editor'))
+                user = UserObject(form_result.get('editor'))
+                c.success_text = SETEDITOR_NOTIFICATION_SUCCESS % (str(num), user.first_name, user.last_name)
+            except StandardError, err:
+                c.failed_for  = SETEDITOR_FAILED_HEADER
+                c.failed_text = SETEDITOR_FAILED_TEXT
+                return render ('/casemanagement/dialogs/failed_seteditor.mako')
+            del session['casebundle']
         except formencode.Invalid, error:
             c.form_result = error.value
             c.form_errors = error.error_dict or {}
@@ -214,19 +260,13 @@
         try:
             data = formencode.variabledecode.variable_decode(request.params)
             form_result = validator.to_python(data)
-            if case_bundle and not case_bundle.isEmpty():
-                try:
-                    num = case_bundle.setStandin(form_result.get('standin'))
-                    c.success_text = SETSTANDIN_NOTIFICATION_SUCCESS % str(num)
-                except StandardError, err:
-                    print err
-                    c.failed_for  = SETSTANDIN_NOTIFICATION_ERROR_HEADER
-                    c.failed_text = SETSTANDIN_NOTIFICATION_ERROR
-                del session['casebundle']
-            else:
-                c.notification_for  = SETSTANDIN_NOTIFICATION_EMPTYLIST_HEADER
-                c.notification_text = SETSTANDIN_NOTIFICATION_EMPTYLIST
-                return render('/casemanagement/dialogs/bundle_noselection.mako')
+            try:
+                num = case_bundle.setStandin(form_result.get('standin'))
+                c.success_text = SETSTANDIN_NOTIFICATION_SUCCESS % str(num)
+            except StandardError, err:
+                c.failed_for  = SETSTANDIN_NOTIFICATION_ERROR_HEADER
+                c.failed_text = SETSTANDIN_NOTIFICATION_ERROR
+            del session['casebundle']
         except formencode.Invalid, error:
             c.form_result = error.value
             c.form_errors = error.error_dict or {}
@@ -236,34 +276,26 @@
     @checkRole(('admin_ka'))
     def delete(self, confirmed):
         confirmed           = self._checkBool(confirmed)
-        c.context           = "../main.mako" 
+        c.context           = "../main.mako"
         c.url_ok            = "/case_overview"
-        c.notification_for  = DIALOG_CONFIRM_DELETE 
+        c.notification_for  = DIALOG_CONFIRM_DELETE
         case_bundle         = session.get('casebundle')
-        if case_bundle and not case_bundle.isEmpty():
-            if confirmed == 1:
-                try:
-                    num = case_bundle.delete()
-                    c.success_for       = DELETE_SUCCESS_ADMIN_HEADER
-                    c.success_text = DELETE_SUCCESS_ADMIN_TEXT % str(num)
-                    return render ('/casemanagement/dialogs/success_delete_admin.mako')
-                except StandardError, err:
-                    print err
-                    c.notification_text = DELETE_NOTIFICATION_ERROR
-                del session['casebundle']
-            else:
-                c.context     = "../main.mako" 
-                c.confirm_for = DIALOG_CONFIRM_DELETE
-                case_bundle   = CaseBundle([case.id for case in case_bundle.getCases() if case.getState().getState() == 3])  
-                session['casebundle'] = case_bundle
-                session.save()
-                c.question    = DIALOG_CONFIRM_EXPLAINATION % "\n".join(self._buildCaseList(case_bundle)) 
-                c.url_yes     = "/case_overview/delete/1"
-                c.url_no      = "/case_overview/"
-                return render('/casemanagement/dialogs/confirm.mako')
+        if confirmed == 1:
+            try:
+                num = case_bundle.delete()
+                c.success_for       = DELETE_SUCCESS_ADMIN_HEADER
+                c.success_text = DELETE_SUCCESS_ADMIN_TEXT % str(num)
+                return render ('/casemanagement/dialogs/success_delete_admin.mako')
+            except StandardError, err:
+                c.notification_text = DELETE_NOTIFICATION_ERROR
+            del session['casebundle']
         else:
-            c.notification_for  = DELETE_NOTIFICATION_EMPTYLIST_HEADER
-            c.notification_text = DELETE_NOTIFICATION_EMPTYLIST
+            c.context     = "../main.mako" 
+            c.confirm_for = DIALOG_CONFIRM_DELETE
+            c.question    = DIALOG_CONFIRM_EXPLAINATION % "\n".join(self._buildCaseList(case_bundle)) 
+            c.url_yes     = "/case_overview/delete/1"
+            c.url_no      = "/case_overview/"
+            return render('/casemanagement/dialogs/confirm.mako')
         return render('/casemanagement/dialogs/notificate_bundle_delete.mako')
 
     @checkRole(('cm_ka'))
@@ -273,29 +305,69 @@
         c.url_ok            = "/case_overview"
         c.notification_for  = DIALOG_CONFIRM_DELETE 
         case_bundle         = session.get('casebundle')
-        if case_bundle and not case_bundle.isEmpty():
-            if confirmed == 1:
-                try:
-                    num = case_bundle.markDelete()
-                    c.success_for  = MARKDELETE_SUCCESS_HEADER
-                    c.success_text = MARKDELETE_SUCCESS_TEXT % str(num)
-                    return render ('/casemanagement/dialogs/success_markdelete.mako')
-                except StandardError, err:
-                    print err
-                    c.notification_text = MARKDELETE_NOTIFICATION_ERROR
-                del session['casebundle']
-            else:
-                c.context     = "../main.mako" 
-                c.confirm_for = DIALOG_CONFIRM_DELETE
-                case_bundle   = CaseBundle([case.id for case in case_bundle.getCases() if case.getState().getState() <= 2])  
-                session['casebundle'] = case_bundle
-                session.save()
-                c.question    = DIALOG_CONFIRM_EXPLAINATION % "\n".join(self._buildCaseList(case_bundle)) 
-                c.url_yes     = "/case_overview/markDelete/1"
-                c.url_no      = "/case_overview/"
-                return render('/casemanagement/dialogs/confirm.mako')
+        if confirmed == 1:
+            try:
+                num = case_bundle.markDelete()
+                c.success_for  = MARKDELETE_SUCCESS_HEADER
+                c.success_text = MARKDELETE_SUCCESS_TEXT % str(num)
+                return render ('/casemanagement/dialogs/success_markdelete.mako')
+            except StandardError, err:
+                print err
+                c.notification_text = MARKDELETE_NOTIFICATION_ERROR
+            del session['casebundle']
         else:
-            c.notification_text = DELETE_NOTIFICATION_EMPTYLIST
+            c.context     = "../main.mako" 
+            c.confirm_for = DIALOG_CONFIRM_DELETE
+            c.question    = DIALOG_CONFIRM_EXPLAINATION % "\n".join(self._buildCaseList(case_bundle)) 
+            c.url_yes     = "/case_overview/markDelete/1"
+            c.url_no      = "/case_overview/"
+            return render('/casemanagement/dialogs/confirm.mako')
         return render('/casemanagement/dialogs/notificate_bundle_delete.mako')
 
+    @checkRole(('cm_ka', 'admin_ka'))
+    def exportCSV(self, confirmed):
+        confirmed           = self._checkBool(confirmed)
+        case_bundle         = session.get('casebundle')
+        c.context           = "../main.mako"
+        if confirmed == 1:
+            try:
+                c.success_for  = EXPORT_SUCCESS
+                c.success_text = EXPORT_SUCCESS_EXPLAINATION
+                return self.downloadCSV()
+            except StandardError, err:
+                c.failed_for  = EXPORT_ERROR
+                c.failed_test = EXPORT_ERROR_EXPLAINATION
+                c.url_ok      = "/agency_overview/"
+                return render('/casemanagement/dialogs/failed_export_agency.mako')
+        else:
+            c.confirm_for = DIALOG_CONFIRM_EXPORT
+            c.question    = DIALOG_CONFIRM_EXPORT_EXPLAINATION % "\n".join(self._buildAgencyList(agency_bundle))
+            c.url_yes     = "/case_overview/exportCSV/1"
+            c.url_no      = "/case_overview/"
+            return render('/casemanagement/dialogs/confirm.mako')
+
+    @checkRole(('cm_ka', 'admin_ka'))
+    def downloadCSV(self):
+        c.download_link = h.url_for(action="downloadCSVAction")
+        c.overview_link = h.url_for(action="overview")
+        return render('casemanagement/downloadCSV.mako')
+
+    @checkRole(('cm_ka', 'admin_ka'))
+    def downloadCSVAction(self):
+        case_bundle = session.get('casebundle')
+        case_ids = case_bundle.listDatasetIds()
+        try:
+            if case_ids:
+                case_bundle = CaseBundle(case_ids)
+                csv = case_bundle.exportAsCSV()
+                data = paste.fileapp.DataApp(
+                    csv,
+                    content_type='text/comma-separated-values',
+                    content_encoding='Latin-1',
+                    cache_control='must-revalidate',
+                    pragma='public')
+                return data(request.environ, self.start_response)
+        except:
+            return render('/tests/trace.mako')
+
 # vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8:

Modified: trunk/waskaweb/controllers/statement.py
===================================================================
--- trunk/waskaweb/controllers/statement.py	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/controllers/statement.py	2008-08-13 13:11:29 UTC (rev 42)
@@ -17,13 +17,17 @@
 
 log = logging.getLogger(__name__)
 
-HEADER           = u"""Angaben zur Einverständniserklärung""" 
-ACCEPT_QUESTION  = u"""Sie haben angegeben, das eine Einverständniserklärung des Jugendlichen zur Erfassung, Verarbeitung und Speicherung personenbezogener Daten vorliegt. Sind Sie sicher das diese Angabe korrekt ist?"""  
-DECLINE_QUESTION = u"""Sie haben angegeben, das keine Einverständniserklärung des Jugendlichen zur Erfassung, Verarbeitung und Speicherung personenbezogener Daten vorliegt. Dies bedeutet das die bislang gespeicherten Daten der Fallakte zur Wahrung des Datenschutzes gelöscht werden und unwiederbringlich verloren gehen. Sind Sie sicher das diese Angabe korrekt ist?"""  
-SET_EE_SUCCESS_HEADER = u"""Einwilligungserklärung gesetzt!"""
-SET_EE_SUCCESS_TEXT = u"""Bitte klicken Sie auf "OK", um fortzufahren."""
-SET_EE_DECLINE_SUCCESS_HEADER = u"""Daten wurden gelöscht!"""
-SET_EE_DECLINE_SUCCESS_TEXT = u"""Die personenbezogenen Daten der Fallakte wurden gelöscht. Bitte klicken Sie auf "OK", um fortzufahren"""
+HEADER           = u"""Einverständniserklärung setzen?""" 
+ACCEPT_QUESTION  = u"""Sie haben angegeben, dass eine Einverständniserklärung des Jugendlichen zur Erfassung, Verarbeitung und Speicherung personenbezogener Daten vorliegt. Sind Sie sicher das diese Angabe korrekt ist?"""  
+DECLINE_QUESTION = u"""Sie haben angegeben, dass keine Einverständniserklärung des Jugendlichen zur Erfassung, Verarbeitung und Speicherung personenbezogener Daten vorliegt, oder Sie eine bestehende Einverständniserklärung zurückziehen wollen. Dies bedeutet das die personenbezogenen Daten der Fallakte zur Wahrung des Datenschutzes anonymisiert werden und unwiederbringlich verloren gehen. Die Fallakte ist danach nicht mehr bearbeitbar. Sind Sie sicher das diese Angabe korrekt ist?"""  
+SET_EE_ACCEPT_SUCCESS_HEADER = u"""Einwilligungserklärung gesetzt!"""
+SET_EE_ACCEPT_SUCCESS_TEXT = u"""Bitte klicken Sie auf "OK", um mit der Bearbeitung der Fallakte fortzufahren."""
+SET_EE_ACCEPT_FAILED_HEADER = u"""Einwilligungserklärung nicht gesetzt!"""
+SET_EE_ACCEPT_FAILED_TEXT = u"""Bei dem Setzen der Einwilligunserklärung ist ein Fehler aufgetreten. Bitte klicken Sie auf "OK", um fortzufahren."""
+SET_EE_DECLINE_SUCCESS_HEADER = u"""Fallakte wurde anonymisiert!"""
+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."""
 class StatementController(CasebaseController):
 
     def __before__(self):
@@ -60,15 +64,12 @@
     @checkRole('cm_ka')
     def setPrivacyStatementAction(self):
         if request.params.get('statement_signed') == "1": 
-            self.acceptPrivacyStatement(request.params.get('case_id'), "1")
-        elif request.params.get('statement_signed') == "0":
+            return self.acceptPrivacyStatement(request.params.get('case_id'), "0")
+        elif request.params.get('statement_signed') == "0" or request.params.get('statement_revoked') == "1":
             return self.declinePrivacyStatement(request.params.get('case_id'), "0")
         else:
             session_case = session.get('case')
             redirect_to(controller="/statement", action="setPrivacyStatement", id=session_case.id)
-            #return render('statement/dialogs/ee_accept_success.mako') 
-            #session.save()
-            # redirect_to(controller="case", action="digest", id=id) 
 
     @checkRole('cm_ka')
     def acceptPrivacyStatement(self, id, confirmed):
@@ -77,32 +78,32 @@
         case              = self._loadCase(id)
         c.form_navigation = self._getFormNavigation()
         if confirmed:
-            statement = case.getPrivacyStatement() 
-            statement.sign()
-            # TODO: Think about refreshing the state of the privacy statement
-            # in the statement model
-            session_case = session.get('case')
-            session_case.privacy_statement = True
-            session.save()
-            #dialog erfolgreich gesetzt
-            #c.success_for = SET_EE_SUCCESS_HEADER
-            #c.success_text = SET_EE_SUCCESS_TEXT
-            #c.url_ok = h.url_for(controller="case", action="digest")
-            #c.url_ok= h.url_for(
-            #    controller="case", 
-            #   action="digest", id=id, confirmed="1")
-            #return "<title>hello</title>"
-            #return render('statement/dialogs/ee_accept_success.mako')
-            #session.save()
-            redirect_to(controller="case", action="digest", id=id) 
+            try:
+                statement = case.getPrivacyStatement()
+                statement.sign()
+                # TODO: Think about refreshing the state of the privacy statement
+                # in the statement model
+                session_case                   = session.get('case')
+                session_case.privacy_statement = True
+                session.save()
+                c.success_for                  = SET_EE_ACCEPT_SUCCESS_HEADER
+                c.success_text                 = SET_EE_ACCEPT_SUCCESS_TEXT
+                c.url_ok                       = h.url_for(controller="/case", action="digest", id=case.id)
+                return render('statement/dialogs/ee_accept_success.mako')
+            except:
+                c.failed_for   = SET_EE_ACCEPT_FAILED_HEADER
+                c.failed_text  = SET_EE_ACCEPT_FAILED_TEXT
+                c.url_ok       = h.url_for(controller='/statement', action='setPrivacyStatement', id=case.id)
+                return render('/statement/dialogs/ee_accept_failed.mako')
         else:
-            c.confirm_for = HEADER 
-            c.question = ACCEPT_QUESTION 
+            c.confirm_for = HEADER
+            c.question = ACCEPT_QUESTION
             c.url_yes = h.url_for(
-                controller="statement", 
-                action="acceptPrivacyStatement", id=id, confirmed="1")
+                controller="statement", \
+                action="acceptPrivacyStatement", \
+                id=id, \
+                confirmed="1")
             c.url_no = h.url_for('digest', id=id)
-            #return "<title>hello</title>"
             return render('statement/dialogs/confirm.mako')
 
     @checkRole('cm_ka')
@@ -112,29 +113,37 @@
         case              = self._loadCase(id)
         c.form_navigation = self._getFormNavigation()
         if confirmed:
-            statement = case.getPrivacyStatement()
-            statement.decline()
-            # Mark case for deletion
-            state = case.getState()
-            state.setState(3)
+            try:
+                statement = case.getPrivacyStatement()
+                statement.decline()
+                # Anonymize the case
+                case.anonymize()
 
-            # TODO: Think about refreshing the state of the privacy statement
-            # in the statement model
-            session_case = session.get('case')
-            session_case.privacy_statement = True
-            session.save()
-            #c.success_for = SET_EE_DECLINE_SUCCESS_HEADER
-            #c.success_text = SET_EE_DECLINE_SUCCESS_TEXT
-            #c.url_ok = h.url_for ('/case_overview')
-            #return render('/statement/dialogs/ee_decline_success.mako')
-            redirect_to('/case_overview') 
+                # TODO: Think about refreshing the state of the privacy statement
+                # in the statement model
+                session_case = session.get('case')
+                session_case.privacy_statement = True
+                session.save()
+                c.success_for  = SET_EE_DECLINE_SUCCESS_HEADER
+                c.success_text = SET_EE_DECLINE_SUCCESS_TEXT
+                c.url_ok       = h.url_for ('/case_overview')
+                return render('/statement/dialogs/ee_decline_success.mako')
+            except:
+                c.failed_for   = SET_EE_DECLINE_FAILED_HEADER
+                c.failed_text  = SET_EE_DECLINE_FAILED_TEXT
+                c.url_ok       = h.url_for ('/case_overview')
+                return render('/statement/dialogs/ee_decline_failed.mako')
         else:
             c.confirm_for = HEADER 
-            c.question = DECLINE_QUESTION 
+            c.question = DECLINE_QUESTION
             c.url_yes = h.url_for(
-                controller="statement", 
-                action="declinePrivacyStatement", id=id, confirmed="1")
-            c.url_no = h.url_for(controller="statement", action="setPrivacyStatement", id=id)
+                controller="statement", \
+                action="declinePrivacyStatement", \
+                id=id, \
+                confirmed="1")
+            c.url_no = h.url_for(controller="statement", \
+                action="setPrivacyStatement", \
+                id=id)
             return render('statement/dialogs/confirm.mako')
-           # return render('/statement/dialogs/success_ee.mako')
+
 # vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8:

Modified: trunk/waskaweb/i18n/de/LC_MESSAGES/waskaweb.po
===================================================================
--- trunk/waskaweb/i18n/de/LC_MESSAGES/waskaweb.po	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/i18n/de/LC_MESSAGES/waskaweb.po	2008-08-13 13:11:29 UTC (rev 42)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: waskaweb 0.0.0\n"
 "Report-Msgid-Bugs-To: EMAIL at ADDRESS\n"
-"POT-Creation-Date: 2008-03-09 14:27+0100\n"
+"POT-Creation-Date: 2008-03-12 15:39+0100\n"
 "PO-Revision-Date: 2007-10-14 20:33+0200\n"
 "Last-Translator: Torsten Irländer<torsten.irlaender at intevation.de>\n"
 "Language-Team: de <LL at li.org>\n"
@@ -187,27 +187,27 @@
 msgid "cm_rg_aid_overview_legend_new_offer"
 msgstr "Neues Angebot hinzufügen"
 
-#: waskaweb/model/case.py:908
+#: waskaweb/model/case.py:931
 #: waskaweb/templates/casemanagement/caselist.mako:41
-#: waskaweb/templates/casemanagement/caselist.mako:86
+#: waskaweb/templates/casemanagement/caselist.mako:88
 msgid "case_state_label_open"
 msgstr "Offen"
 
-#: waskaweb/model/case.py:909
+#: waskaweb/model/case.py:932
 #: waskaweb/templates/casemanagement/caselist.mako:43
-#: waskaweb/templates/casemanagement/caselist.mako:88
+#: waskaweb/templates/casemanagement/caselist.mako:90
 msgid "case_state_label_closed"
 msgstr "Geschlossen"
 
-#: waskaweb/model/case.py:910
+#: waskaweb/model/case.py:933
 msgid "case_state_label_outstanding_delete"
 msgstr "Schwebend gelöscht"
 
-#: waskaweb/model/case.py:911
+#: waskaweb/model/case.py:934
 msgid "case_state_label_outstanding_anon"
 msgstr "Schwebend anonymisiert"
 
-#: waskaweb/model/case.py:912
+#: waskaweb/model/case.py:935
 msgid "case_state_label_anon"
 msgstr "Anonymisiert"
 
@@ -376,7 +376,6 @@
 #: waskaweb/templates/administration/dialogs/success_delete_user.mako:5
 #: waskaweb/templates/administration/dialogs/success_edit_agency.mako:5
 #: waskaweb/templates/administration/dialogs/success_edit_user.mako:5
-#: waskaweb/templates/statement/dialogs/ee_decline_success.mako:5
 msgid "adm_np_root"
 msgstr "Administration"
 
@@ -396,7 +395,6 @@
 #: waskaweb/templates/administration/dialogs/notificate_deleteuser.mako:6
 #: waskaweb/templates/administration/dialogs/success_delete_user.mako:6
 #: waskaweb/templates/administration/dialogs/success_edit_user.mako:6
-#: waskaweb/templates/statement/dialogs/ee_decline_success.mako:6
 msgid "adm_np_overview"
 msgstr "Benutzerübersicht"
 
@@ -689,7 +687,7 @@
 #: waskaweb/templates/administration/overview_user.mako:43
 #: waskaweb/templates/administration/overview_user.mako:60
 #: waskaweb/templates/casemanagement/caselist.mako:52
-#: waskaweb/templates/casemanagement/caselist.mako:94
+#: waskaweb/templates/casemanagement/caselist.mako:99
 #: waskaweb/templates/documents/case_overview.mako:42
 #: waskaweb/templates/documents/case_overview.mako:53
 #: waskaweb/templates/documents/global_overview.mako:39
@@ -703,10 +701,10 @@
 #: waskaweb/templates/administration/overview_user.mako:62
 #: waskaweb/templates/casemanagement/agencylist.mako:20
 #: waskaweb/templates/casemanagement/agencylist.mako:30
-#: waskaweb/templates/casemanagement/caselist.mako:54
-#: waskaweb/templates/casemanagement/caselist.mako:60
-#: waskaweb/templates/casemanagement/caselist.mako:96
-#: waskaweb/templates/casemanagement/caselist.mako:99
+#: waskaweb/templates/casemanagement/caselist.mako:56
+#: waskaweb/templates/casemanagement/caselist.mako:62
+#: waskaweb/templates/casemanagement/caselist.mako:103
+#: waskaweb/templates/casemanagement/caselist.mako:109
 #: waskaweb/templates/documents/case_overview.mako:44
 #: waskaweb/templates/documents/case_overview.mako:55
 #: waskaweb/templates/documents/global_overview.mako:42
@@ -1091,7 +1089,6 @@
 #: waskaweb/templates/casemanagement/dialogs/success_restore.mako:5
 #: waskaweb/templates/casemanagement/static_form/statement.mako:5
 #: waskaweb/templates/casemanagement/static_form/statement_print.mako:5
-#: waskaweb/templates/statement/dialogs/confirm.mako:5
 #: waskaweb/templates/statement/dialogs/missing_statement.mako:5
 msgid "cm_np_root"
 msgstr "Case-Management"
@@ -1128,7 +1125,7 @@
 msgstr "Aktionen"
 
 #: waskaweb/templates/casemanagement/agencylist.mako:39
-#: waskaweb/templates/casemanagement/caselist.mako:109
+#: waskaweb/templates/casemanagement/caselist.mako:119
 msgid "cm_overview_tbl_no_data_found"
 msgstr "Es wurden keine Datensätze gefunden."
 
@@ -1137,17 +1134,25 @@
 #: waskaweb/templates/casemanagement/formular.mako:34
 #: waskaweb/templates/casemanagement/new_appointment.mako:5
 #: waskaweb/templates/casemanagement/organisation.mako:6
+#: waskaweb/templates/casemanagement/dialogs/confirm_anonymize.mako:5
 #: waskaweb/templates/casemanagement/dialogs/confirm_close.mako:5
 #: waskaweb/templates/casemanagement/dialogs/confirm_delete_aid.mako:5
 #: waskaweb/templates/casemanagement/dialogs/confirm_delete_attachment.mako:4
 #: waskaweb/templates/casemanagement/dialogs/confirm_open.mako:5
 #: waskaweb/templates/casemanagement/dialogs/delete_attachment_success.mako:6
+#: waskaweb/templates/casemanagement/dialogs/success_anonymize.mako:5
 #: waskaweb/templates/casemanagement/dialogs/success_case_close.mako:5
 #: waskaweb/templates/casemanagement/dialogs/success_delete_aid.mako:5
 #: waskaweb/templates/documents/case_new.mako:5
 #: waskaweb/templates/documents/case_overview.mako:5
 #: waskaweb/templates/documents/dialogs/delete_attachment_success.mako:4
 #: waskaweb/templates/documents/dialogs/failed_attachment.mako:4
+#: waskaweb/templates/statement/edit.mako:5
+#: waskaweb/templates/statement/dialogs/confirm.mako:5
+#: waskaweb/templates/statement/dialogs/ee_accept_failed.mako:5
+#: waskaweb/templates/statement/dialogs/ee_accept_success.mako:5
+#: waskaweb/templates/statement/dialogs/ee_decline_failed.mako:5
+#: waskaweb/templates/statement/dialogs/ee_decline_success.mako:5
 msgid "cm_np_select"
 msgstr "Ausgewählte Fallakte"
 
@@ -1219,23 +1224,27 @@
 msgstr "Status"
 
 #: waskaweb/templates/casemanagement/caselist.mako:35
-#: waskaweb/templates/casemanagement/caselist.mako:80
+#: waskaweb/templates/casemanagement/caselist.mako:82
 msgid "cm_overview_img_editor"
 msgstr "Bearbeiter"
 
 #: waskaweb/templates/casemanagement/caselist.mako:37
-#: waskaweb/templates/casemanagement/caselist.mako:82
+#: waskaweb/templates/casemanagement/caselist.mako:84
 msgid "cm_overview_img_standin"
 msgstr "Vertreter"
 
 #: waskaweb/templates/casemanagement/caselist.mako:45
-#: waskaweb/templates/casemanagement/caselist.mako:48
-#: waskaweb/templates/casemanagement/caselist.mako:90
+#: waskaweb/templates/casemanagement/caselist.mako:92
 msgid "case_state_label_delete"
 msgstr "Gelöscht"
 
-#: waskaweb/templates/casemanagement/caselist.mako:57
-#: waskaweb/templates/casemanagement/caselist.mako:97
+#: waskaweb/templates/casemanagement/caselist.mako:47
+#: waskaweb/templates/casemanagement/caselist.mako:94
+msgid "case_state_label_anonym"
+msgstr "Anonymisiert"
+
+#: waskaweb/templates/casemanagement/caselist.mako:59
+#: waskaweb/templates/casemanagement/caselist.mako:106
 msgid "cm_overview_a_restore"
 msgstr "Fallakte wiederherstellen"
 
@@ -1581,7 +1590,10 @@
 
 #: waskaweb/templates/casemanagement/evaluation_result.mako:327
 msgid "eval6_note"
-msgstr "(Hinweis: Diese Auswertung wird nur über die Angaben des Förderbedarfs in der Förderplanung geführt. Die tatsächliche Anzahl der eingetragenen Unterstützungsangebote wird nicht berücksichtigt.)"
+msgstr ""
+"(Hinweis: Diese Auswertung wird nur über die Angaben des Förderbedarfs in "
+"der Förderplanung geführt. Die tatsächliche Anzahl der eingetragenen "
+"Unterstützungsangebote wird nicht berücksichtigt.)"
 
 #: waskaweb/templates/casemanagement/evaluation_result.mako:336
 msgid "cm_eval_header_7"
@@ -1658,64 +1670,72 @@
 msgid "cm_help_header_help_for_dossier"
 msgstr "Hilfe zum Fallakten-Formular"
 
-#: waskaweb/templates/casemanagement/main.mako:19
+#: waskaweb/templates/casemanagement/main.mako:18
 msgid "cm_info_name"
 msgstr "Name"
 
-#: waskaweb/templates/casemanagement/main.mako:22
+#: waskaweb/templates/casemanagement/main.mako:21
 #: waskaweb/templates/casemanagement/organisation.mako:96
 msgid "cm_info_status"
 msgstr "Status"
 
-#: waskaweb/templates/casemanagement/main.mako:24
+#: waskaweb/templates/casemanagement/main.mako:23
 msgid "cm_info_nr"
 msgstr "Kundennr."
 
-#: waskaweb/templates/casemanagement/main.mako:33
+#: waskaweb/templates/casemanagement/main.mako:29
 msgid "cm_main_header_data_protection"
 msgstr "Datenschutz"
 
-#: waskaweb/templates/casemanagement/main.mako:37
+#: waskaweb/templates/casemanagement/main.mako:34
 msgid "cm_main_print_statement"
 msgstr "Erklärung drucken"
 
-#: waskaweb/templates/casemanagement/main.mako:38
+#: waskaweb/templates/casemanagement/main.mako:35
 msgid "cm_main_set_statement"
 msgstr "Erklärung setzen"
 
-#: waskaweb/templates/casemanagement/main.mako:48
+#: waskaweb/templates/casemanagement/main.mako:37
+msgid "cm_main_revoke_statement"
+msgstr "Erklärung zurückziehen"
+
+#: waskaweb/templates/casemanagement/main.mako:40
+msgid "cm_main_anonymize_case"
+msgstr "Fallakte anonymisieren"
+
+#: waskaweb/templates/casemanagement/main.mako:50
 msgid "cm_menu_header_cases"
 msgstr "Fallakte"
 
-#: waskaweb/templates/casemanagement/main.mako:53
+#: waskaweb/templates/casemanagement/main.mako:55
 msgid "cm_menu_link_backtooverview"
 msgstr "Zurück zur Übersicht"
 
-#: waskaweb/templates/casemanagement/main.mako:54
+#: waskaweb/templates/casemanagement/main.mako:56
 msgid "cm_menu_link_print"
 msgstr "Gesamte Akte drucken"
 
-#: waskaweb/templates/casemanagement/main.mako:61
+#: waskaweb/templates/casemanagement/main.mako:63
 msgid "cm_menu_header_seperator"
 msgstr "Überblick"
 
-#: waskaweb/templates/casemanagement/main.mako:64
+#: waskaweb/templates/casemanagement/main.mako:66
 msgid "cm_menu_link_digest"
 msgstr "Zusammenfassung"
 
-#: waskaweb/templates/casemanagement/main.mako:66
+#: waskaweb/templates/casemanagement/main.mako:68
 msgid "cm_menu_link_organisation"
 msgstr "Organisation"
 
-#: waskaweb/templates/casemanagement/main.mako:67
+#: waskaweb/templates/casemanagement/main.mako:69
 msgid "cm_menu_link_appointment"
 msgstr "Termine"
 
-#: waskaweb/templates/casemanagement/main.mako:68
+#: waskaweb/templates/casemanagement/main.mako:70
 msgid "cm_menu_link_documents"
 msgstr "Anlagen"
 
-#: waskaweb/templates/casemanagement/main.mako:74
+#: waskaweb/templates/casemanagement/main.mako:76
 msgid "cm_menu_header_structure"
 msgstr "Gliederung"
 
@@ -1815,6 +1835,11 @@
 msgid "cm_np_delete"
 msgstr "Fallakte löschen?"
 
+#: waskaweb/templates/casemanagement/dialogs/confirm_anonymize.mako:6
+#: waskaweb/templates/casemanagement/dialogs/success_anonymize.mako:6
+msgid "cm_np_anonymize"
+msgstr "Fallakte anonymisieren"
+
 #: waskaweb/templates/casemanagement/dialogs/confirm_close.mako:6
 msgid "cm_np_close"
 msgstr "Fallakte schließen"
@@ -2075,18 +2100,27 @@
 msgid "start_header_blackboard"
 msgstr "Schwarzes Brett"
 
-#: waskaweb/templates/statement/edit.mako:3
+#: waskaweb/templates/statement/edit.mako:6
+#: waskaweb/templates/statement/dialogs/confirm.mako:6
+#: waskaweb/templates/statement/dialogs/ee_accept_failed.mako:6
+#: waskaweb/templates/statement/dialogs/ee_accept_success.mako:6
+#: waskaweb/templates/statement/dialogs/ee_decline_failed.mako:6
+#: waskaweb/templates/statement/dialogs/ee_decline_success.mako:6
+msgid "statement_np_edit"
+msgstr "Einverständniserklärung setzen"
+
+#: waskaweb/templates/statement/edit.mako:8
 msgid "statement_edit_header_statement"
 msgstr "Einverständniserklärung"
 
-#: waskaweb/templates/statement/edit.mako:5
+#: waskaweb/templates/statement/edit.mako:11
 msgid "statement_edit_p_no_statement"
 msgstr ""
 "Für die gewählte Fallakte liegt aktuell noch keine Einverständniserklärung "
 "zur Erfassung, Verarbeitung und Nutzung personenbezogener Daten seitens des "
 "Jugendlichen vor."
 
-#: waskaweb/templates/statement/edit.mako:6
+#: waskaweb/templates/statement/edit.mako:12
 msgid "statement_edit_p_statement_decision"
 msgstr ""
 "Sie können in diesem Dialog bestätigen, dass die Einverständniserklärung nun "
@@ -2094,35 +2128,41 @@
 "Jugendlichen abgegeben wird. In diesem Fall wird die gewählte Fallakte "
 "anonymisiert und ist nicht mehr bearbeitbar."
 
-#: waskaweb/templates/statement/edit.mako:7
+#: waskaweb/templates/statement/edit.mako:13
 msgid "statement_edit_p_statement_form"
 msgstr ""
 "Bitte beachten Sie, dass die Einverständniserklärung der schriftlichen Form "
 "bedarf. Dazu steht Ihnen eine"
 
-#: waskaweb/templates/statement/edit.mako:7
+#: waskaweb/templates/statement/edit.mako:13
 msgid "statement_edit_a_statement_form_printversion"
 msgstr " Druckversion dieser Erklärung"
 
-#: waskaweb/templates/statement/edit.mako:7
+#: waskaweb/templates/statement/edit.mako:13
 msgid "statement_edit_p_statement_form_end"
 msgstr "zur Verfügung."
 
-#: waskaweb/templates/statement/edit.mako:12
+#: waskaweb/templates/statement/edit.mako:18
 msgid "statement_label_statement_yes"
 msgstr "Die Einwilligungserklärung liegt vor."
 
-#: waskaweb/templates/statement/edit.mako:16
+#: waskaweb/templates/statement/edit.mako:22
 msgid "statement_label_statement_no"
 msgstr "Die Einwilligungserklärung liegt nicht vor."
 
-#: waskaweb/templates/statement/dialogs/confirm.mako:6
-msgid "statement_np_edit"
-msgstr "Einverständniserklärung setzen"
+#: waskaweb/templates/statement/edit.mako:33
+msgid "statement_revoke_p_statement"
+msgstr ""
+"<p>Für diese Fallakte liegt aktuell eine Einverständniserklärung Seitens des "
+"Jugendlichen vor. Sie können diese Erklärung nun zurückziehen.</p><p>Das "
+"Zurückziehen der Einverständniserklärung führt zu einer Anonymisierung der "
+"personenbezogenen Daten der Fallakte. Die Fallakte steht danach nicht mehr "
+"für eine Bearbeitung zur Verfügung und wird aus der Fallakenübersicht "
+"entfernt. Beachten Sie, das dieser Vorgang nicht umkehrbar ist!</p>"
 
-#: waskaweb/templates/statement/dialogs/ee_decline_success.mako:7
-msgid "np_adm_statement_declined"
-msgstr "Daten gelöscht!"
+#: waskaweb/templates/statement/edit.mako:39
+msgid "statement_label_statement_revoked"
+msgstr "Die Einwilligungserklärung zurückziehen"
 
 #: waskaweb/templates/statement/dialogs/missing_statement.mako:7
 msgid "cm_np_show"
@@ -2265,6 +2305,9 @@
 msgid "adm_np_changepassword"
 msgstr "Benutzerpasswort geändert!"
 
+#~ msgid "np_adm_statement_declined"
+#~ msgstr "Daten gelöscht!"
+
 #~ msgid "cm_header_downloadcsv"
 #~ msgstr "CSV Herunterladen"
 

Modified: trunk/waskaweb/i18n/waskaweb.pot
===================================================================
--- trunk/waskaweb/i18n/waskaweb.pot	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/i18n/waskaweb.pot	2008-08-13 13:11:29 UTC (rev 42)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: waskaweb 0.0.0\n"
 "Report-Msgid-Bugs-To: EMAIL at ADDRESS\n"
-"POT-Creation-Date: 2008-03-09 14:27+0100\n"
+"POT-Creation-Date: 2008-03-12 15:39+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -171,25 +171,25 @@
 msgid "cm_rg_aid_overview_legend_new_offer"
 msgstr ""
 
-#: waskaweb/model/case.py:908 waskaweb/templates/casemanagement/caselist.mako:41
-#: waskaweb/templates/casemanagement/caselist.mako:86
+#: waskaweb/model/case.py:931 waskaweb/templates/casemanagement/caselist.mako:41
+#: waskaweb/templates/casemanagement/caselist.mako:88
 msgid "case_state_label_open"
 msgstr ""
 
-#: waskaweb/model/case.py:909 waskaweb/templates/casemanagement/caselist.mako:43
-#: waskaweb/templates/casemanagement/caselist.mako:88
+#: waskaweb/model/case.py:932 waskaweb/templates/casemanagement/caselist.mako:43
+#: waskaweb/templates/casemanagement/caselist.mako:90
 msgid "case_state_label_closed"
 msgstr ""
 
-#: waskaweb/model/case.py:910
+#: waskaweb/model/case.py:933
 msgid "case_state_label_outstanding_delete"
 msgstr ""
 
-#: waskaweb/model/case.py:911
+#: waskaweb/model/case.py:934
 msgid "case_state_label_outstanding_anon"
 msgstr ""
 
-#: waskaweb/model/case.py:912
+#: waskaweb/model/case.py:935
 msgid "case_state_label_anon"
 msgstr ""
 
@@ -353,7 +353,6 @@
 #: waskaweb/templates/administration/dialogs/success_delete_user.mako:5
 #: waskaweb/templates/administration/dialogs/success_edit_agency.mako:5
 #: waskaweb/templates/administration/dialogs/success_edit_user.mako:5
-#: waskaweb/templates/statement/dialogs/ee_decline_success.mako:5
 msgid "adm_np_root"
 msgstr ""
 
@@ -373,7 +372,6 @@
 #: waskaweb/templates/administration/dialogs/notificate_deleteuser.mako:6
 #: waskaweb/templates/administration/dialogs/success_delete_user.mako:6
 #: waskaweb/templates/administration/dialogs/success_edit_user.mako:6
-#: waskaweb/templates/statement/dialogs/ee_decline_success.mako:6
 msgid "adm_np_overview"
 msgstr ""
 
@@ -661,7 +659,7 @@
 #: waskaweb/templates/administration/overview_user.mako:43
 #: waskaweb/templates/administration/overview_user.mako:60
 #: waskaweb/templates/casemanagement/caselist.mako:52
-#: waskaweb/templates/casemanagement/caselist.mako:94
+#: waskaweb/templates/casemanagement/caselist.mako:99
 #: waskaweb/templates/documents/case_overview.mako:42
 #: waskaweb/templates/documents/case_overview.mako:53
 #: waskaweb/templates/documents/global_overview.mako:39
@@ -675,10 +673,10 @@
 #: waskaweb/templates/administration/overview_user.mako:62
 #: waskaweb/templates/casemanagement/agencylist.mako:20
 #: waskaweb/templates/casemanagement/agencylist.mako:30
-#: waskaweb/templates/casemanagement/caselist.mako:54
-#: waskaweb/templates/casemanagement/caselist.mako:60
-#: waskaweb/templates/casemanagement/caselist.mako:96
-#: waskaweb/templates/casemanagement/caselist.mako:99
+#: waskaweb/templates/casemanagement/caselist.mako:56
+#: waskaweb/templates/casemanagement/caselist.mako:62
+#: waskaweb/templates/casemanagement/caselist.mako:103
+#: waskaweb/templates/casemanagement/caselist.mako:109
 #: waskaweb/templates/documents/case_overview.mako:44
 #: waskaweb/templates/documents/case_overview.mako:55
 #: waskaweb/templates/documents/global_overview.mako:42
@@ -1063,7 +1061,6 @@
 #: waskaweb/templates/casemanagement/dialogs/success_restore.mako:5
 #: waskaweb/templates/casemanagement/static_form/statement.mako:5
 #: waskaweb/templates/casemanagement/static_form/statement_print.mako:5
-#: waskaweb/templates/statement/dialogs/confirm.mako:5
 #: waskaweb/templates/statement/dialogs/missing_statement.mako:5
 msgid "cm_np_root"
 msgstr ""
@@ -1100,7 +1097,7 @@
 msgstr ""
 
 #: waskaweb/templates/casemanagement/agencylist.mako:39
-#: waskaweb/templates/casemanagement/caselist.mako:109
+#: waskaweb/templates/casemanagement/caselist.mako:119
 msgid "cm_overview_tbl_no_data_found"
 msgstr ""
 
@@ -1109,17 +1106,25 @@
 #: waskaweb/templates/casemanagement/formular.mako:34
 #: waskaweb/templates/casemanagement/new_appointment.mako:5
 #: waskaweb/templates/casemanagement/organisation.mako:6
+#: waskaweb/templates/casemanagement/dialogs/confirm_anonymize.mako:5
 #: waskaweb/templates/casemanagement/dialogs/confirm_close.mako:5
 #: waskaweb/templates/casemanagement/dialogs/confirm_delete_aid.mako:5
 #: waskaweb/templates/casemanagement/dialogs/confirm_delete_attachment.mako:4
 #: waskaweb/templates/casemanagement/dialogs/confirm_open.mako:5
 #: waskaweb/templates/casemanagement/dialogs/delete_attachment_success.mako:6
+#: waskaweb/templates/casemanagement/dialogs/success_anonymize.mako:5
 #: waskaweb/templates/casemanagement/dialogs/success_case_close.mako:5
 #: waskaweb/templates/casemanagement/dialogs/success_delete_aid.mako:5
 #: waskaweb/templates/documents/case_new.mako:5
 #: waskaweb/templates/documents/case_overview.mako:5
 #: waskaweb/templates/documents/dialogs/delete_attachment_success.mako:4
 #: waskaweb/templates/documents/dialogs/failed_attachment.mako:4
+#: waskaweb/templates/statement/edit.mako:5
+#: waskaweb/templates/statement/dialogs/confirm.mako:5
+#: waskaweb/templates/statement/dialogs/ee_accept_failed.mako:5
+#: waskaweb/templates/statement/dialogs/ee_accept_success.mako:5
+#: waskaweb/templates/statement/dialogs/ee_decline_failed.mako:5
+#: waskaweb/templates/statement/dialogs/ee_decline_success.mako:5
 msgid "cm_np_select"
 msgstr ""
 
@@ -1191,23 +1196,27 @@
 msgstr ""
 
 #: waskaweb/templates/casemanagement/caselist.mako:35
-#: waskaweb/templates/casemanagement/caselist.mako:80
+#: waskaweb/templates/casemanagement/caselist.mako:82
 msgid "cm_overview_img_editor"
 msgstr ""
 
 #: waskaweb/templates/casemanagement/caselist.mako:37
-#: waskaweb/templates/casemanagement/caselist.mako:82
+#: waskaweb/templates/casemanagement/caselist.mako:84
 msgid "cm_overview_img_standin"
 msgstr ""
 
 #: waskaweb/templates/casemanagement/caselist.mako:45
-#: waskaweb/templates/casemanagement/caselist.mako:48
-#: waskaweb/templates/casemanagement/caselist.mako:90
+#: waskaweb/templates/casemanagement/caselist.mako:92
 msgid "case_state_label_delete"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/caselist.mako:57
-#: waskaweb/templates/casemanagement/caselist.mako:97
+#: waskaweb/templates/casemanagement/caselist.mako:47
+#: waskaweb/templates/casemanagement/caselist.mako:94
+msgid "case_state_label_anonym"
+msgstr ""
+
+#: waskaweb/templates/casemanagement/caselist.mako:59
+#: waskaweb/templates/casemanagement/caselist.mako:106
 msgid "cm_overview_a_restore"
 msgstr ""
 
@@ -1606,64 +1615,72 @@
 msgid "cm_help_header_help_for_dossier"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/main.mako:19
+#: waskaweb/templates/casemanagement/main.mako:18
 msgid "cm_info_name"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/main.mako:22
+#: waskaweb/templates/casemanagement/main.mako:21
 #: waskaweb/templates/casemanagement/organisation.mako:96
 msgid "cm_info_status"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/main.mako:24
+#: waskaweb/templates/casemanagement/main.mako:23
 msgid "cm_info_nr"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/main.mako:33
+#: waskaweb/templates/casemanagement/main.mako:29
 msgid "cm_main_header_data_protection"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/main.mako:37
+#: waskaweb/templates/casemanagement/main.mako:34
 msgid "cm_main_print_statement"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/main.mako:38
+#: waskaweb/templates/casemanagement/main.mako:35
 msgid "cm_main_set_statement"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/main.mako:48
+#: waskaweb/templates/casemanagement/main.mako:37
+msgid "cm_main_revoke_statement"
+msgstr ""
+
+#: waskaweb/templates/casemanagement/main.mako:40
+msgid "cm_main_anonymize_case"
+msgstr ""
+
+#: waskaweb/templates/casemanagement/main.mako:50
 msgid "cm_menu_header_cases"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/main.mako:53
+#: waskaweb/templates/casemanagement/main.mako:55
 msgid "cm_menu_link_backtooverview"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/main.mako:54
+#: waskaweb/templates/casemanagement/main.mako:56
 msgid "cm_menu_link_print"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/main.mako:61
+#: waskaweb/templates/casemanagement/main.mako:63
 msgid "cm_menu_header_seperator"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/main.mako:64
+#: waskaweb/templates/casemanagement/main.mako:66
 msgid "cm_menu_link_digest"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/main.mako:66
+#: waskaweb/templates/casemanagement/main.mako:68
 msgid "cm_menu_link_organisation"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/main.mako:67
+#: waskaweb/templates/casemanagement/main.mako:69
 msgid "cm_menu_link_appointment"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/main.mako:68
+#: waskaweb/templates/casemanagement/main.mako:70
 msgid "cm_menu_link_documents"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/main.mako:74
+#: waskaweb/templates/casemanagement/main.mako:76
 msgid "cm_menu_header_structure"
 msgstr ""
 
@@ -1751,6 +1768,11 @@
 msgid "cm_np_delete"
 msgstr ""
 
+#: waskaweb/templates/casemanagement/dialogs/confirm_anonymize.mako:6
+#: waskaweb/templates/casemanagement/dialogs/success_anonymize.mako:6
+msgid "cm_np_anonymize"
+msgstr ""
+
 #: waskaweb/templates/casemanagement/dialogs/confirm_close.mako:6
 msgid "cm_np_close"
 msgstr ""
@@ -2010,44 +2032,53 @@
 msgid "start_header_blackboard"
 msgstr ""
 
-#: waskaweb/templates/statement/edit.mako:3
+#: waskaweb/templates/statement/edit.mako:6
+#: waskaweb/templates/statement/dialogs/confirm.mako:6
+#: waskaweb/templates/statement/dialogs/ee_accept_failed.mako:6
+#: waskaweb/templates/statement/dialogs/ee_accept_success.mako:6
+#: waskaweb/templates/statement/dialogs/ee_decline_failed.mako:6
+#: waskaweb/templates/statement/dialogs/ee_decline_success.mako:6
+msgid "statement_np_edit"
+msgstr ""
+
+#: waskaweb/templates/statement/edit.mako:8
 msgid "statement_edit_header_statement"
 msgstr ""
 
-#: waskaweb/templates/statement/edit.mako:5
+#: waskaweb/templates/statement/edit.mako:11
 msgid "statement_edit_p_no_statement"
 msgstr ""
 
-#: waskaweb/templates/statement/edit.mako:6
+#: waskaweb/templates/statement/edit.mako:12
 msgid "statement_edit_p_statement_decision"
 msgstr ""
 
-#: waskaweb/templates/statement/edit.mako:7
+#: waskaweb/templates/statement/edit.mako:13
 msgid "statement_edit_p_statement_form"
 msgstr ""
 
-#: waskaweb/templates/statement/edit.mako:7
+#: waskaweb/templates/statement/edit.mako:13
 msgid "statement_edit_a_statement_form_printversion"
 msgstr ""
 
-#: waskaweb/templates/statement/edit.mako:7
+#: waskaweb/templates/statement/edit.mako:13
 msgid "statement_edit_p_statement_form_end"
 msgstr ""
 
-#: waskaweb/templates/statement/edit.mako:12
+#: waskaweb/templates/statement/edit.mako:18
 msgid "statement_label_statement_yes"
 msgstr ""
 
-#: waskaweb/templates/statement/edit.mako:16
+#: waskaweb/templates/statement/edit.mako:22
 msgid "statement_label_statement_no"
 msgstr ""
 
-#: waskaweb/templates/statement/dialogs/confirm.mako:6
-msgid "statement_np_edit"
+#: waskaweb/templates/statement/edit.mako:33
+msgid "statement_revoke_p_statement"
 msgstr ""
 
-#: waskaweb/templates/statement/dialogs/ee_decline_success.mako:7
-msgid "np_adm_statement_declined"
+#: waskaweb/templates/statement/edit.mako:39
+msgid "statement_label_statement_revoked"
 msgstr ""
 
 #: waskaweb/templates/statement/dialogs/missing_statement.mako:7

Modified: trunk/waskaweb/lib/csv.py
===================================================================
--- trunk/waskaweb/lib/csv.py	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/lib/csv.py	2008-08-13 13:11:29 UTC (rev 42)
@@ -128,9 +128,10 @@
         fills = []
         for i in range(len(RG_VIEWS)):
             rg = self.noneEmptyRepeatGroup(i)
-            if rg is None: fills.append(0)
-            else:          fills.append(rg.numFields())
-
+            if rg is None: c = 0
+            else:          c = rg.numFields()
+            fills.append([''] * c)
+            
         for case in self.cases:
             line = case.valueFields()
             for m, rg, fill in zip(self.maxRGs, case.rgs, fills):
@@ -139,7 +140,7 @@
                     line.extend(r.valueFields())
                     count += 1
                 while count < m:
-                    line.extend([''] * fill)
+                    line.extend(fill)
                     count += 1
             print >> out, "%s" % SEP.join(map(lambda x: u"%s" % x, line))
 

Modified: trunk/waskaweb/lib/evaluation.py
===================================================================
--- trunk/waskaweb/lib/evaluation.py	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/lib/evaluation.py	2008-08-13 13:11:29 UTC (rev 42)
@@ -144,18 +144,13 @@
                 sql = """select geburtsland, vater, mutter from master_tbl_eval_incm_view""" 
                 c1.execute(sql)
                 for case in c1.fetchall():
-                    if case[0] == -1 and case[1] == -1 and case[2] == -1:
-                        # Keine Angabe
-                        #print >> sys.stderr,  "Keine Angabe"
-                        r[2][0]+=1
-                    elif case[0] not in [29, -1] or case[1] == 1 or case[2] == 1:
-                        # Migrationshintergrund
-                        #print >> sys.stderr,  "Migration"
-                        r[0][0]+=1
+                    geburtsland, vater, mutter = case
+                    if geburtsland not in (29, -1) or vater == 0 or mutter == 0:
+                        r[0][0] += 1
+                    elif geburtsland == -1 or vater == -1 or mutter == -1:
+                        r[2][0] += 1
                     else:
-                        # Kein Migrationshintergrund
-                        #print >> sys.stderr,  "Keine Migration"
-                        r[1][0]+=1
+                        r[1][0] += 1
 
                 r[0][1] = "%s" % h.formatNumber(float(r[0][0])/float(self.total_cm)*100)
                 r[1][1] = "%s" % h.formatNumber(float(r[1][0])/float(self.total_cm)*100)

Modified: trunk/waskaweb/lib/helpers.py
===================================================================
--- trunk/waskaweb/lib/helpers.py	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/lib/helpers.py	2008-08-13 13:11:29 UTC (rev 42)
@@ -22,7 +22,7 @@
         return user.getRole()
     except KeyError:
         return ''
-        
+
 def getUserFullname():
     try:
         user = session['USER_AUTHORIZED']

Modified: trunk/waskaweb/model/case.py
===================================================================
--- trunk/waskaweb/model/case.py	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/model/case.py	2008-08-13 13:11:29 UTC (rev 42)
@@ -31,9 +31,9 @@
 
 # SQL STATEMENTS
 SEARCH_CASE_OVERVIEW_SQL = \
-""" SELECT 
-      m.id, 
-      m.name_1, 
+""" SELECT
+      m.id,
+      m.name_1,
       m.vorname_1,
       m.kundennummer,
       m.bearbeiter_id,
@@ -43,9 +43,12 @@
     JOIN ka_status_tbl_view st ON
     m.id = st.master_id
     WHERE
-      (m.vorname_1 ~* %%(needle)s 
-      OR m.name_1 ~* %%(needle)s 
-      OR m.kundennummer ~* %%(needle)s)
+      (m.vorname_1 ~* %%(needle)s
+      OR m.vorname_1 IS NULL
+      OR m.name_1 ~* %%(needle)s
+      OR m.name_1 IS NULL
+      OR m.kundennummer ~* %%(needle)s
+      OR m.kundennummer IS NULL)
       AND st.status IN (%s)
       AND %s
       AND %s
@@ -83,7 +86,10 @@
    'rg_angebote_berufsvorbereitung_tbl':        CREATE_RG_BERUF_DS
 }
 
+ANONYMIZE_CASE          = """SELECT anonymize_case(%(id)s)"""
+DELETE_CASE_ATTACHMENTS = """SELECT delete_all_fall_dokumente(%(id)s)"""
 
+
 class LoadCaseNotExistsError(Exception):
     def __init__(self, value):
         self.value = value
@@ -216,15 +222,18 @@
                 else:
                     search.append(option)
 
-        ee =  h.hasRole(['cm_ka']) and "m.einverstaendniserklaerung <> 0" or "TRUE"
-        which_user = 0 
+        # Show all cases regardless if the privacy statement has been declined
+        #ee =  h.hasRole(['cm_ka']) and "m.einverstaendniserklaerung <> 0" or "TRUE"
+        ee = "TRUE"
+
+        which_user = 0
         allowed_viewer = "FALSE"
-        if options.has_key('own'): which_user += 2  
+        if options.has_key('own'): which_user += 2
         if options.has_key('standin'): which_user += 1
         if which_user == 1: allowed_viewer = "m.bearbeiter_id <> %s" % options.get('standin')
         if which_user == 2: allowed_viewer = "m.bearbeiter_id = %s" % options.get('own')
         if which_user == 3: allowed_viewer = "TRUE"
-        allowed_viewer =  h.hasRole(['admin_ka']) and "TRUE" or allowed_viewer 
+        allowed_viewer =  h.hasRole(['admin_ka']) and "TRUE" or allowed_viewer
         editor = options.has_key('editor') and "m.bearbeiter_id = %s" % options.get('editor') or "TRUE"
 
         fields['needle'] = " ".join(search) 
@@ -708,9 +717,6 @@
     def delete(self):
         '''Deletes the case from data base. Returns True if deletion succseeds'''
         conn, cur = None, None
-        # Only delete if the case state is set to outstandig deletion (3).
-        # Ignore this check if this server is an evaluation server
-        if self.state.getState() != 3 and not config['evaluation_server'] : return False
         try:
             try:
                 conn = db.getConnection()
@@ -780,7 +786,7 @@
         finally:
             db.recycleConnection(con, cur)
         return self.editor
-                
+
     def getPage(self, datapage=None):
         '''Returns a datapage with the given name of the case'''
         if not self.page is None: 
@@ -871,6 +877,26 @@
             raise
         return [] 
 
+    def anonymize(self):
+        '''Deleted personal data in the case'''
+        conn, cur = None, None
+        try:
+            try:
+                conn = db.getConnection()
+                cur  = conn.cursor()
+                d = { 'id': self.id }
+                cur.execute(ANONYMIZE_CASE, d)
+                cur.execute(DELETE_CASE_ATTACHMENTS, d)
+            finally:
+                db.recycleConnection(conn, cur)
+            state = self.getState()
+            state.setState(5)
+            return True
+        except:
+            traceback.print_exc(file=sys.stderr)
+
+        return False
+
 class State:
     '''This class store the state and the last accesstime of the case.
     Possible states are:

Modified: trunk/waskaweb/templates/casemanagement/bundle_editor.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/bundle_editor.mako	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/templates/casemanagement/bundle_editor.mako	2008-08-13 13:11:29 UTC (rev 42)
@@ -15,7 +15,7 @@
 <p>${_('cm_bundle_editor_explain')}:</p>
 <ul>
 % for case in c.case_list:
-  <li>${case.last_name}, ${case.first_name}</li>
+  <li>${case.last_name | F.NA, h}, ${case.first_name | F.NA, h}</li>
 % endfor
 </ul>
 % if h.hasRole(['admin_ka']):

Modified: trunk/waskaweb/templates/casemanagement/bundle_standin.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/bundle_standin.mako	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/templates/casemanagement/bundle_standin.mako	2008-08-13 13:11:29 UTC (rev 42)
@@ -2,9 +2,9 @@
 <%inherit file="../main.mako" />
 <%!  import waskaweb.lib.filters as F %>
 <%def name="buildNavipath()">
-	${parent.buildNavipath()}
-        <li><a href="/case">${_('cm_np_root')}</a></li>
-	<li>${_('cm_np_bundled_standin')}</li>
+  ${parent.buildNavipath()}
+  <li><a href="/case">${_('cm_np_root')}</a></li>
+  <li>${_('cm_np_bundled_standin')}</li>
 </%def>
 
 <div id="content_header_small">
@@ -19,7 +19,7 @@
 <ul>
 % for case in c.case_list:
   % if case.getEditor().id == c.current_user.id or c.current_user.isAdmin():
-    <li>${case.last_name}, ${case.first_name}</li>
+    <li>${case.last_name | F.NA, h}, ${case.first_name | F.NA, h}</li>
   % else:
     <li class="organisation_not_editor">${case.last_name}, ${case.first_name} (Nicht BearbeiterIn der Akte - Vertretung wird nicht geändert!)</li>
   % endif 

Modified: trunk/waskaweb/templates/casemanagement/caselist.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/caselist.mako	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/templates/casemanagement/caselist.mako	2008-08-13 13:11:29 UTC (rev 42)
@@ -8,10 +8,9 @@
     <th class="table_name table_header_h">${_('cm_overview_tbl_header_firstname')}</th>
     % if h.hasRole(['admin_ka']):
       <th class="table_name table_header_h">${_('cm_overview_tbl_header_editor')}</th>
+    % else:
+      <th class="table_name table_header_h">${_('cm_overview_tbl_header_accesstime')}</th>
     % endif
-    ##% else:
-    ##  <th class="table_name table_header_h">${_('cm_overview_tbl_header_accesstime')}</th>
-    ##% endif
     <th class="table_status table_header_h">${_('cm_overview_tbl_header_status')}</th>
     <th class="table_action table_header_h">${_('cm_overview_tbl_header_actions')}</th>
   </tr>
@@ -27,10 +26,9 @@
           <td>
             ${case.getEditor().last_name | F.NA, h}, ${case.getEditor().first_name[0] | F.NA, h}.
           </td>
+        % else:
+          <td>${case.state.getAccessTime() | F.NA, h}</td>
         % endif
-        ##% else:
-        ##  <td>${case.state.getAccessTime() | F.NA, h}</td>
-        ##% endif
         <td>
           % if h.hasRole(['cm_ka']):
             % if str(case.getEditor().id) == str(session.get('USER_AUTHORIZED').id):
@@ -45,20 +43,22 @@
             <img src="/images/icons/done_grey.gif" border="0" alt="${_('case_state_label_closed')}" title="${_('case_state_label_closed')}">
           % elif case.getState().getState() == 3:
             <img src="/images/icons/delete_grey.gif" border="0" alt="${_('case_state_label_delete')}" title="${_('case_state_label_delete')}">
-          % endif
-          % if not case.privacy_statement_signed:
+          % elif case.getState().getState() == 5:
             <img src="/images/icons/anonym.gif" border="0" alt="${_('case_state_label_anonym')}" title="${_('case_state_label_anonym')}">
           % endif
         </td>
         <td>
-          <a href="/case/select/${case.id}/0/"><img src="/images/icons/view_red.gif" border="0" alt="${_('cm_overview_a_show')}" title="${_('cm_overview_a_show')}"></a> 
-          % if h.hasRole(['admin_ka']) and case.getState().getState() == 3:
-            <a href="/case/delete/${case.id}/0/"><img src="/images/icons/delete_red.gif" border="0" alt="${_('cm_overview_a_delete')}" title="${_('cm_overview_a_delete')}"></a> 
-
-            % if case.privacy_statement_signed:
-              <a href="/case/restore/${case.id}/0/"><img src="/images/icons/recover_red.gif" border="0" alt="${_('cm_overview_a_restore')}" title="${_('cm_overview_a_restore')}"></a> 
+          % if case.getState().getState() != 5:
+            <a href="/case/select/${case.id}/0/"><img src="/images/icons/view_red.gif" border="0" alt="${_('cm_overview_a_show')}" title="${_('cm_overview_a_show')}"></a>
+          % endif
+          % if h.hasRole(['admin_ka']):
+            % if case.getState().getState() in (3,5):
+              <a href="/case/delete/${case.id}/0/"><img src="/images/icons/delete_red.gif" border="0" alt="${_('cm_overview_a_delete')}" title="${_('cm_overview_a_delete')}"></a>
             % endif
-          % elif h.hasRole(['cm_ka']) and case.getState().getState() <= 2: 
+            % if case.getState().getState() == 3:
+              <a href="/case/restore/${case.id}/0/"><img src="/images/icons/recover_red.gif" border="0" alt="${_('cm_overview_a_restore')}" title="${_('cm_overview_a_restore')}"></a>
+            % endif
+          % elif h.hasRole(['cm_ka']) and case.getState().getState() in (1,2):
             <a href="/case/markForDelete/${case.id}/0/"><img src="/images/icons/delete_red.gif" border="0" alt="${_('cm_overview_a_delete')}" title="${_('cm_overview_a_delete')}"></a> 
           % endif
         </td>
@@ -73,10 +73,9 @@
           <td class="table_row_h">
             ${case.getEditor().last_name | F.NA, h}, ${case.getEditor().first_name[0] | F.NA, h}.
           </td>
+        % else:
+          <td class="table_row_h">${case.state.getAccessTime() | F.NA, h}</td>
         % endif
-        ##% else:
-        ##  <td class="table_row_h">${case.state.getAccessTime() | F.NA, h}</td>
-        ##% endif
         <td class="table_row_h">
           % if h.hasRole(['cm_ka']):
             % if str(case.getEditor().id) == str(session.get('USER_AUTHORIZED').id):
@@ -84,9 +83,6 @@
             % else:
               <img src="/images/icons/stand-in_grey.gif" border="0" alt="${_('cm_overview_img_standin')}" title="${_('cm_overview_img_standin')}">
             % endif
-            % if not case.privacy_statement_signed:
-              <img src="/images/icons/anonym.gif" border="0" alt="${_('case_state_label_anonym')}" title="${_('case_state_label_anonym')}">
-            % endif
           % endif
           % if case.getState().getState() == 1:
             <img src="/images/icons/work_in_progress_grey.gif" border="0" alt="${_('case_state_label_open')}" title="${_('case_state_label_open')}">
@@ -94,17 +90,23 @@
             <img src="/images/icons/done_grey.gif" border="0" alt="${_('case_state_label_closed')}" title="${_('case_state_label_closed')}">
           % elif case.getState().getState() == 3:
             <img src="/images/icons/delete_grey.gif" border="0" alt="${_('case_state_label_delete')}" title="${_('case_state_label_delete')}">
+          % elif case.getState().getState() == 5:
+            <img src="/images/icons/anonym.gif" border="0" alt="${_('case_state_label_anonym')}" title="${_('case_state_label_anonym')}">
           % endif
         </td>
         <td class="table_row_h">
-          <a href="/case/select/${case.id}/0/"><img src="/images/icons/view_red.gif" border="0" alt="${_('cm_overview_a_show')}" title="${_('cm_overview_a_show')}"></a> 
-          % if h.hasRole(['admin_ka']) and case.getState().getState() == 3:
-            <a href="/case/delete/${case.id}/0/"><img src="/images/icons/delete_red.gif" border="0" alt="${_('cm_overview_a_delete')}" title="${_('cm_overview_a_delete')}"></a> 
-            % if case.privacy_statement_signed:
-              <a href="/case/restore/${case.id}/0/"><img src="/images/icons/recover_red.gif" border="0" alt="${_('cm_overview_a_restore')}" title="${_('cm_overview_a_restore')}"></a> 
+          % if case.getState().getState() != 5:
+            <a href="/case/select/${case.id}/0/"><img src="/images/icons/view_red.gif" border="0" alt="${_('cm_overview_a_show')}" title="${_('cm_overview_a_show')}"></a>
+          % endif
+          % if h.hasRole(['admin_ka']):
+            % if case.getState().getState() in (3, 5):
+              <a href="/case/delete/${case.id}/0/"><img src="/images/icons/delete_red.gif" border="0" alt="${_('cm_overview_a_delete')}" title="${_('cm_overview_a_delete')}"></a>
             % endif
-          % elif h.hasRole(['cm_ka']) and case.getState().getState() <= 2: 
-            <a href="/case/markForDelete/${case.id}/0/"><img src="/images/icons/delete_red.gif" border="0" alt="${_('cm_overview_a_delete')}" title="${_('cm_overview_a_delete')}"></a> 
+            % if case.getState().getState() == 3:
+              <a href="/case/restore/${case.id}/0/"><img src="/images/icons/recover_red.gif" border="0" alt="${_('cm_overview_a_restore')}" title="${_('cm_overview_a_restore')}"></a>
+            % endif
+          % elif h.hasRole(['cm_ka']) and case.getState().getState() in (1, 2):
+            <a href="/case/markForDelete/${case.id}/0/"><img src="/images/icons/delete_red.gif" border="0" alt="${_('cm_overview_a_delete')}" title="${_('cm_overview_a_delete')}"></a>
           % endif
         </td>
       </tr>

Added: trunk/waskaweb/templates/casemanagement/dialogs/confirm_anonymize.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/dialogs/confirm_anonymize.mako	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/templates/casemanagement/dialogs/confirm_anonymize.mako	2008-08-13 13:11:29 UTC (rev 42)
@@ -0,0 +1,8 @@
+## -*- coding: utf-8 -*- 
+<%inherit file="/casemanagement/main.mako" />
+<%def name="buildNavipath()">
+  ${parent.buildNavipath()}
+  <li><a href="/case/select/${session.get('case').id}/1">${_('cm_np_select')}</a></li>
+  <li><a href="#">${_('cm_np_anonymize')}</a></li>
+</%def>
+<%include file="../../dialogs/confirm.mako" />

Added: trunk/waskaweb/templates/casemanagement/dialogs/success_anonymize.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/dialogs/success_anonymize.mako	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/templates/casemanagement/dialogs/success_anonymize.mako	2008-08-13 13:11:29 UTC (rev 42)
@@ -0,0 +1,8 @@
+## -*- coding: utf-8 -*- 
+<%inherit file="/casemanagement/main.mako" />
+<%def name="buildNavipath()">
+  ${parent.buildNavipath()}
+  <li><a href="/case/select/${session.get('case').id}/1">${_('cm_np_select')}</a></li>
+  <li><a href="#">${_('cm_np_anonymize')}</a></li>
+</%def>
+<%include file="../../dialogs/success.mako" />

Modified: trunk/waskaweb/templates/casemanagement/digest.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/digest.mako	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/templates/casemanagement/digest.mako	2008-08-13 13:11:29 UTC (rev 42)
@@ -1,9 +1,9 @@
 <%inherit file="main.mako" />
 <%!  import waskaweb.lib.filters as F %>
 <%def name="buildNavipath()">
-      	${parent.buildNavipath()}
-	<li><a href="/case/select/${session.get('case').id}/1">${_('cm_np_select')}</a></li>
-	<li><a href="/case/digest/${session.get('case').id}">${_('cm_np_digest')}</a></li>
+  ${parent.buildNavipath()}
+  <li><a href="/case/select/${session.get('case').id}/1">${_('cm_np_select')}</a></li>
+  <li><a href="/case/digest/${session.get('case').id}">${_('cm_np_digest')}</a></li>
 </%def>
 
 <div id="content_header_small">

Modified: trunk/waskaweb/templates/casemanagement/downloadCSV.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/downloadCSV.mako	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/templates/casemanagement/downloadCSV.mako	2008-08-13 13:11:29 UTC (rev 42)
@@ -13,11 +13,11 @@
 
 <div class="export_box_dialog">
 <p class="export_p"><strong class="export_number">1. </strong> CSV-Datei herunterladen:
-<a class="button export1" href="/agency_overview/downloadCSVAction/fallakten-export.csv">Herunterladen</a></p>
+<a class="button export1" href="${c.download_link}/fallakten-export.csv">Herunterladen</a></p>
 </div>
 
 <div class="export_box_dialog">
 <p class="export_p"><strong class="export_number">2.</strong> Zur Übersicht zurückkehren:
-<a class="button export" href="/agency_overview">Übersicht</a></p>
+<a class="button export" href="${c.overview_link}">Übersicht</a></p>
 </div>
 

Modified: trunk/waskaweb/templates/casemanagement/main.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/main.mako	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/templates/casemanagement/main.mako	2008-08-13 13:11:29 UTC (rev 42)
@@ -10,7 +10,6 @@
   <li><a href="/case/" onclick="return checkModification();">${_('cm_np_root')}</a></li>
   <li><a href="/case_overview/overview/" onclick="return checkModification();">${_('cm_np_overview')}</a></li>
 </%def>
-  
 <%def name="buildModusfield()">
 </%def>
 
@@ -25,22 +24,25 @@
   </div>
 </%def>
 
-
-
 <%def name="buildPrivacyfield()">
-  % if h.hasRole(['cm_ka']) and session.get('case').hasPrivacyStatement() is None:
    <div class="menu">
      <h1>${_('cm_main_header_data_protection')}</h1>
        <div class="actions">
           <div id="marked">
-	  <ul>
-	  <li><a href="/statement/printPrivacyStatement/${session.get('case').id}" target="_blank" onclick="return checkModification();"> ${_('cm_main_print_statement')}</a></li>
-          <li><a href="/statement/setPrivacyStatement/${session.get('case').id}" onclick="return checkModification();"> ${_('cm_main_set_statement')}</a></li>
-	  </ul>
-	  </div>
+          <ul>
+          % if h.hasRole(['cm_ka']) and session.get('case').hasPrivacyStatement() is None:
+            <li><a href="/statement/printPrivacyStatement/${session.get('case').id}" target="_blank" onclick="return checkModification();"> ${_('cm_main_print_statement')}</a></li>
+            <li><a href="/statement/setPrivacyStatement/${session.get('case').id}" onclick="return checkModification();"> ${_('cm_main_set_statement')}</a></li>
+          % else:
+            <li><a href="/statement/setPrivacyStatement/${session.get('case').id}" onclick="return checkModification();"> ${_('cm_main_revoke_statement')}</a></li>
+          % endif
+          % if session.get('case').getState().getState() != 5:
+            <li><a href="/case/anonymize/${session.get('case').id}/0" onclick="return checkModification();"> ${_('cm_main_anonymize_case')}</a></li>
+          % endif
+          </ul>
+        </div>
        </div>
   </div>
-  % endif
 </%def>
 
 <%def name="buildNavigation()">

Modified: trunk/waskaweb/templates/casemanagement/overview.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/overview.mako	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/templates/casemanagement/overview.mako	2008-08-13 13:11:29 UTC (rev 42)
@@ -38,7 +38,8 @@
     <input type="checkbox" name="show_closed" id="show_closed" value="1" checked="checked"><label for="show_closed"><img title="Geschlossene Fallakten" alt="Geschlossene" src="/images/icons/done_grey.gif">Geschlossen</label>
     % if h.hasRole(['admin_ka']):
     <input type="checkbox" name="show_markdelete" id="show_markdelete" value="1" checked="checked"><label for="show_markdelete"><img title="Zu löschende Fallakten" alt="Schwebend Gelöscht" src="/images/icons/delete_grey.gif">Schwebend gelöscht</label>
-% endif
+    % endif
+    <input type="checkbox" name="show_anonymized" id="show_anonymized" value="1" checked="checked"><label for="show_anonymized"><img title="Anonymisierte Fallakten" alt="Anonymisiert" src="/images/icons/anonym.gif">Anonymisiert</label>
   </div>
   </form>
 </div>
@@ -57,7 +58,7 @@
       % endif
       % if h.hasRole(['admin_ka', 'cm_ka']):
       <option value="stand-in">Auswahl Vertretung zuweisen</option>
-      <!--<option value="export">Auswahl exportieren</option>-->
+      <option value="exportCSV">Auswahl als CSV-Datei exportieren</option>
       <!--<option value="evaluate">Auswahl auswerten</option>-->
       % endif
     </select>

Modified: trunk/waskaweb/templates/statement/dialogs/confirm.mako
===================================================================
--- trunk/waskaweb/templates/statement/dialogs/confirm.mako	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/templates/statement/dialogs/confirm.mako	2008-08-13 13:11:29 UTC (rev 42)
@@ -1,8 +1,8 @@
 ## -*- coding: utf-8 -*- 
 <%inherit file="../../casemanagement/main.mako" />
 <%def name="buildNavipath()">
-	${parent.buildNavipath()}
-	<li><a href="/case/">${_('cm_np_root')}</a></li>
-	<li><a href="#">${_('statement_np_edit')}</a></li>
+  ${parent.buildNavipath()}
+  <li><a href="/case/select/${session.get('case').id}/1">${_('cm_np_select')}</a></li>
+  <li><a href="#">${_('statement_np_edit')}</a></li>
 </%def>
 <%include file="../../dialogs/confirm.mako" />

Added: trunk/waskaweb/templates/statement/dialogs/ee_accept_failed.mako
===================================================================
--- trunk/waskaweb/templates/statement/dialogs/ee_accept_failed.mako	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/templates/statement/dialogs/ee_accept_failed.mako	2008-08-13 13:11:29 UTC (rev 42)
@@ -0,0 +1,8 @@
+## -*- coding: utf-8 -*-
+<%inherit file="../../casemanagement/main.mako" />
+<%def name="buildNavipath()">
+  ${parent.buildNavipath()}
+  <li><a href="/case/select/${session.get('case').id}/1">${_('cm_np_select')}</a></li>
+  <li><a href="/case/setStatement/${session.get('case').id}/0">${_('statement_np_edit')}</a></li>
+</%def>
+<%include file="../../dialogs/failed.mako" />

Added: trunk/waskaweb/templates/statement/dialogs/ee_accept_success.mako
===================================================================
--- trunk/waskaweb/templates/statement/dialogs/ee_accept_success.mako	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/templates/statement/dialogs/ee_accept_success.mako	2008-08-13 13:11:29 UTC (rev 42)
@@ -0,0 +1,8 @@
+## -*- coding: utf-8 -*-
+<%inherit file="../../casemanagement/main.mako"/>
+<%def name="buildNavipath()">
+  ${parent.buildNavipath()}
+  <li><a href="/case/select/${session.get('case').id}/1">${_('cm_np_select')}</a></li>
+  <li><a href="/case/setStatement/${session.get('case').id}/0">${_('statement_np_edit')}</a></li>
+</%def>
+<%include file="../../dialogs/success.mako" />

Added: trunk/waskaweb/templates/statement/dialogs/ee_decline_failed.mako
===================================================================
--- trunk/waskaweb/templates/statement/dialogs/ee_decline_failed.mako	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/templates/statement/dialogs/ee_decline_failed.mako	2008-08-13 13:11:29 UTC (rev 42)
@@ -0,0 +1,8 @@
+## -*- coding: utf-8 -*-
+<%inherit file="../../casemanagement/main.mako" />
+<%def name="buildNavipath()">
+  ${parent.buildNavipath()}
+  <li><a href="/case/select/${session.get('case').id}/1">${_('cm_np_select')}</a></li>
+  <li><a href="/case/setStatement/${session.get('case').id}/0">${_('statement_np_edit')}</a></li>
+</%def>
+<%include file="../../dialogs/failed.mako" />

Modified: trunk/waskaweb/templates/statement/dialogs/ee_decline_success.mako
===================================================================
--- trunk/waskaweb/templates/statement/dialogs/ee_decline_success.mako	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/templates/statement/dialogs/ee_decline_success.mako	2008-08-13 13:11:29 UTC (rev 42)
@@ -1,9 +1,8 @@
 ## -*- coding: utf-8 -*-
-<%inherit file="../../main.mako" />
+<%inherit file="../../main.mako"/>
 <%def name="buildNavipath()">
-	${parent.buildNavipath()}
-	<li><a href="/administration">${_('adm_np_root')}</a></li>
-	<li><a href="/administration/overviewUser">${_('adm_np_overview')}</a></li>
-	<li><a href="#">${_('np_adm_statement_declined')}</a></li>
+  ${parent.buildNavipath()}
+  <li><a href="/case/select/${session.get('case').id}/1">${_('cm_np_select')}</a></li>
+  <li><a href="/case/setStatement/${session.get('case').id}/0">${_('statement_np_edit')}</a></li>
 </%def>
 <%include file="../../dialogs/success.mako" />

Modified: trunk/waskaweb/templates/statement/edit.mako
===================================================================
--- trunk/waskaweb/templates/statement/edit.mako	2008-08-13 13:10:56 UTC (rev 41)
+++ trunk/waskaweb/templates/statement/edit.mako	2008-08-13 13:11:29 UTC (rev 42)
@@ -1,24 +1,47 @@
 ## -*- coding: utf-8 -*-
 <%inherit file="../casemanagement/main.mako" />
+<%def name="buildNavipath()">
+  ${parent.buildNavipath()}
+  <li><a href="/case/select/${session.get('case').id}/1">${_('cm_np_select')}</a></li>
+  <li><a href="#">${_('statement_np_edit')}</a></li>
+</%def>
 <h1>${_('statement_edit_header_statement')}</h1>
+% if h.hasRole(['cm_ka']) and session.get('case').hasPrivacyStatement() is None:
 <div id="statement_text">
-<p>${_('statement_edit_p_no_statement')}</p>
-<p>${_('statement_edit_p_statement_decision')}</p>
-<p>${_('statement_edit_p_statement_form')}<a href="/statement/printPrivacyStatement/${c.ds_id}" target="_blank">${_('statement_edit_a_statement_form_printversion')}</a> ${_('statement_edit_p_statement_form_end')}</p>
-<div id="statement_form" class="waska_form">
-  <form id="waska_form" action="/statement/setPrivacyStatementAction" accept-charset="UTF-8" name="waska_form" method="POST">
-    <div id="statement_box">
-      <input type="radio" id="statement_signed" name="statement_signed" value="1">
-      <label for="statement_signed">${_('statement_label_statement_yes')}
-      </br>
-      </label>
-      <input type="radio" id="statement_not_signed" name="statement_signed" value="0">
-      <label for="statement_not_signed">${_('statement_label_statement_no')}
-      </label>
-      </br>
-      <input type="hidden" name="case_id" value="${c.ds_id | h}"> 
-      <input id="statement_submit" type="submit" value="Speichern" name="save">
-    </div>
-  </form>
+  <p>${_('statement_edit_p_no_statement')}</p>
+  <p>${_('statement_edit_p_statement_decision')}</p>
+  <p>${_('statement_edit_p_statement_form')}<a href="/statement/printPrivacyStatement/${c.ds_id}" target="_blank">${_('statement_edit_a_statement_form_printversion')}</a> ${_('statement_edit_p_statement_form_end')}</p>
+  <div id="statement_form" class="waska_form">
+    <form id="waska_form" action="/statement/setPrivacyStatementAction" accept-charset="UTF-8" name="waska_form" method="POST">
+      <div id="statement_box">
+        <input type="radio" id="statement_signed" name="statement_signed" value="1">
+        <label for="statement_signed">${_('statement_label_statement_yes')}
+        </br>
+        </label>
+        <input type="radio" id="statement_not_signed" name="statement_signed" value="0">
+        <label for="statement_not_signed">${_('statement_label_statement_no')}
+        </label>
+        </br>
+        <input type="hidden" name="case_id" value="${c.ds_id | h}"> 
+        <input id="statement_submit" type="submit" value="Speichern" name="save">
+      </div>
+    </form>
+  </div>
 </div>
+% elif h.hasRole(['cm_ka']) and session.get('case').hasPrivacyStatement():
+<div id="statement_text">
+  <p>${_('statement_revoke_p_statement')}</p>
+  <div id="statement_form" class="waska_form">
+    <form id="waska_form" action="/statement/setPrivacyStatementAction" accept-charset="UTF-8" name="waska_form" method="POST">
+      <div id="statement_box">
+        <div class="waska_form_element w100">
+          <input type="checkbox" id="statement_revoked" name="statement_revoked" value="1">
+          <label for="statement_revoked">${_('statement_label_statement_revoked')}</label>
+        </div>
+        <input type="hidden" name="case_id" value="${c.ds_id | h}"> 
+        <input id="statement_submit" type="submit" value="Speichern" name="save">
+      </div>
+    </form>
+  </div>
 </div>
+% endif



More information about the Mpuls-commits mailing list