[Mpuls-commits] r58 - in trunk: . formed waskaweb/config waskaweb/controllers waskaweb/i18n waskaweb/i18n/de/LC_MESSAGES waskaweb/lib waskaweb/model waskaweb/templates waskaweb/templates/appointments waskaweb/templates/casemanagement waskaweb/templates/casemanagement/dialogs waskaweb/templates/casemanagement/evaluation waskaweb/templates/casemanagement/static_form waskaweb/templates/logbook waskaweb/templates/start

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


Author: thomas
Date: 2008-08-13 15:16:26 +0200 (Wed, 13 Aug 2008)
New Revision: 58

Added:
   trunk/waskaweb/templates/casemanagement/dialogs/confirm_markanonymizeFromOverview.mako
   trunk/waskaweb/templates/casemanagement/digest_body.mako
   trunk/waskaweb/templates/casemanagement/listbadcases.mako
Removed:
   trunk/waskaweb/templates/casemanagement/static_form/statement_print.mako
Modified:
   trunk/ChangeLog.txt
   trunk/Changes.txt
   trunk/formed/formedtree_web.xml
   trunk/formed/privacy_statement.html
   trunk/formed/waska-hilfetexte.xhtml
   trunk/waskaweb/config/routing.py
   trunk/waskaweb/controllers/agency_overview.py
   trunk/waskaweb/controllers/case.py
   trunk/waskaweb/controllers/case_overview.py
   trunk/waskaweb/controllers/evaluate.py
   trunk/waskaweb/controllers/rg_aid.py
   trunk/waskaweb/controllers/waska.py
   trunk/waskaweb/i18n/de/LC_MESSAGES/waskaweb.po
   trunk/waskaweb/i18n/waskaweb.pot
   trunk/waskaweb/lib/evaluation.py
   trunk/waskaweb/lib/filters.py
   trunk/waskaweb/lib/renderer.py
   trunk/waskaweb/lib/search.py
   trunk/waskaweb/lib/validators.py
   trunk/waskaweb/lib/xmlimport.py
   trunk/waskaweb/model/case.py
   trunk/waskaweb/model/repeatgroup.py
   trunk/waskaweb/model/semantic.py
   trunk/waskaweb/model/statement.py
   trunk/waskaweb/templates/appointments/edit_body.mako
   trunk/waskaweb/templates/casemanagement/agencylist.mako
   trunk/waskaweb/templates/casemanagement/caselist.mako
   trunk/waskaweb/templates/casemanagement/digest.mako
   trunk/waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako
   trunk/waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako
   trunk/waskaweb/templates/casemanagement/evaluation/evaluation_result_3.mako
   trunk/waskaweb/templates/casemanagement/overview.mako
   trunk/waskaweb/templates/logbook/edit_body.mako
   trunk/waskaweb/templates/logbook/show.mako
   trunk/waskaweb/templates/main.mako
   trunk/waskaweb/templates/start/start.mako
Log:
Load ca3b3758d320 into trunk.


Modified: trunk/ChangeLog.txt
===================================================================
--- trunk/ChangeLog.txt	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/ChangeLog.txt	2008-08-13 13:16:26 UTC (rev 58)
@@ -1,3 +1,185 @@
+2008-07-10	Frank Koormann <frank.koormann at intevation.de>
+
+	* formed/waska-hilfetexte.xhtml: New entry for "schulpflichtig".
+
+2008-07-09	Sascha Teichmann <sascha.teichmann at intevation.de>
+
+	* Changes.txt: Adjusted to 1.0.3rc6
+
+2008-07-09 	Torsten Irlaender  <torsten.irlaender at intevation.de>
+
+	Worked on issue484
+
+	* waskaweb/templates/logbook/edit_body.mako: Labels of formularfields
+	  with errors are now render in red color too.
+
+	First version of a fix for Issue312
+
+	* waskaweb/controllers/case.py,
+	  waskaweb/model/case.py,
+	  waskaweb/templates/casemanagement/digest.mako,
+	  waskaweb/templates/casemanagement/digest_body.mako: Added the digest
+	  as first page of the printout of the full formular.
+
+	First version of a fix for Issue488
+
+	* waskaweb/controllers/agency_overview.py,
+	  waskaweb/controllers/evaluate.py,
+	  waskaweb/lib/evaluation.py,
+	  waskaweb/templates/casemanagement/agencylist.mako,
+	  waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako,
+	  waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako,
+	  waskaweb/templates/casemanagement/evaluation/evaluation_result_3.mako:
+	  Added a short information on each evaluation result page on how many
+	  cases where used for the evaluation result. Further added
+	  information on how many cases are totaly on the evaluation server in
+	  the overview page.
+
+	Changed Version string to rc6
+
+	* waskaweb/i18n/de/LC_MESSAGES/waskaweb.po: Changed version string
+
+2008-07-08 	Torsten Irlaender  <torsten.irlaender at intevation.de>
+	
+	Fixed Issue483
+
+	* waskaweb/templates/appointments/edit_body.mako: Added maxlength of
+	128 to the title of appointments
+
+	Fixed Issue478
+
+	* waskaweb/controllers/case_overview.py, 
+	  waskaweb/templates/casemanagement/caselist.mako: Show cases which
+	  are marked for anonymisation in overview when selection anonymized
+	  cases for users with cm-role. 
+
+	Fixed Issue477
+
+	* waskaweb/config/routing.py,
+	  waskaweb/controllers/case.py,
+	  waskaweb/templates/casemanagement/caselist.mako: Added new Action to
+	  mark cases for anonymisation when the user selects this case from
+	  the overview instead of within a selected case.
+
+	Fixed Issue484
+
+	* waskaweb/controllers/case.py,
+	  waskaweb/templates/logbook/edit_body.mako: Formularfields with
+	  errors are now rendered with a red border.
+
+	Fixed Issue490
+
+	* waskaweb/model/semantic.py: Encoding of the file changed to utf-8.
+	  Inserted umlauts.
+
+2008-07-08 	Sascha L. Teichmann <sascha.teichmann at intevation.de>
+
+	Workaround for issue264
+
+	* waskaweb/controllers/rg_aid.py: return None if aid object cannont be load.
+	* waskaweb/model/repeatgroup.py: if on delete load failed say that deletion succeed.
+
+2008-07-08 	Sascha L. Teichmann <sascha.teichmann at intevation.de>
+
+	Fixed issue371
+
+	* waskaweb/lib/renderer.py: _('...') inside '''....''' does not work.
+
+	* waskaweb/i18n/de/LC_MESSAGES/waskaweb.po,
+	  waskaweb/i18n/waskaweb.pot:
+
+2008-07-08 	Sascha L. Teichmann <sascha.teichmann at intevation.de>
+
+	* formed/formedtree_web.xml: Fixed twisted pair geburtsdatum/geschlecht.
+	  repaired bezug_alg1, bezug_alg2.
+
+2008-07-07 	Torsten Irlaender  <torsten.irlaender at intevation.de>
+
+	Worked on issue492
+
+	* waskaweb/lib/evaluation.py: Added additional where statement to
+	  filter out inconsisistent cases (only for evaluation server).
+	  Indication for those cases is the field
+	  "freie_doku_abschlussbewertung" is not NULL.
+
+	* waskaweb/templates/casemanagement/listbadcases.mako,
+	  waskaweb/templates/main.mako,
+	  waskaweb/templates/start/start.mako: Changed wording "Fehlerhafte
+	  Fallakten" to "Inkonsistene Fallakte".
+
+	Unsorted
+
+	* waskaweb/lib/xmlimport.py: Added new python dictionaries from the
+	  new formedtree to the importer.
+
+2008-07-04 	Torsten Irlaender  <torsten.irlaender at intevation.de>
+
+	Fixed issue475
+
+	* formed/privacy_statement.html: Modified message in privacy
+	  statement.
+
+	Fixed issue491
+
+	* waskaweb/templates/casemanagement/static_form/statement_print.mako:
+	  Removed file as it is not needed anymore.
+
+	Worked in issue492
+
+	* waskaweb/controllers/case_overview.py,
+	  waskaweb/lib/search.py,
+	  waskaweb/templates/main.mako,
+	  waskaweb/templates/casemanagement/listbadcases.mako: Added new
+	  search options to find cases which have errors in data. Added
+	  template with userfriendly buttons which cann be used to fire up
+	  predefinded searches.
+
+	* waskaweb/controllers/waska.py,
+	  waskaweb/templates/casemanagement/listbadcases.mako,
+	  waskaweb/templates/main.mako,
+	  waskaweb/templates/start/start.mako: Added notifier an blackboard
+	  which informs the user if he has cases which includes errors.
+
+	* waskaweb/controllers/case_overview.py,
+	  waskaweb/controllers/waska.py,
+	  waskaweb/templates/casemanagement/listbadcases.mako: Only show links
+	  to start a search for error cases if there are cases of the error
+	  type.
+
+	Fixed issue489
+
+	* waskaweb/model/statement.py: Added filter functions for empty fields
+	in aidstatements when printing.
+
+	Unsorted
+
+	* waskaweb/templates/casemanagement/overview.mako: Removed word
+	  "Auswahl" from bundled action menu as this word is redundant.
+
+2008-07-03 	Torsten Irlaender  <torsten.irlaender at intevation.de>
+	
+	Issue483
+
+	* waskaweb/lib/validators.py: Added validation to title of an
+	  appointment.
+	
+	Issue484
+
+	* waskaweb/lib/validators.py: Added new validation for duration of a
+	logbookentry 
+
+2008-07-01 	Sascha L. Teichmann <sascha.teichmann at intevation.de>
+
+	Fixed Issue490
+
+	* waskaweb/model/semantic.py: Fixed typo
+
+2008-07-01 	Sascha L. Teichmann <sascha.teichmann at intevation.de>
+
+	Fixed Issue487
+
+	* waskaweb/controllers/case.py: raise 404 if requested help is not available.
+
 2008-07-01 	Torsten Irlaender  <torsten.irlaender at intevation.de>
 
 	Tagged version 1.0.3rc5

Modified: trunk/Changes.txt
===================================================================
--- trunk/Changes.txt	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/Changes.txt	2008-08-13 13:16:26 UTC (rev 58)
@@ -1,113 +1,117 @@
 1.0.3:
 
-	Neu:
-	
-		* Workflow der Anonymisierung von Fallakten ist nun an das des
-		  Löschens der Fallakten angepasst. Das Anonymisieren ist nun
-		  auch 2-stufig realisiert (issue448). 
+    Neu:
 
-		* Falltagebuch verfügbar. Neben den Terminen und Dokumenten
-		  steht nun mit dem Falltagebuch eine weitere unterstützende
-		  Funktion zur Verfügung. Der CM kann hier den Verlauf des CM 
-		  in Form von chronologisch aufeinander folgenden Einträgen
-		  dokumentieren.
+        * Workflow der Anonymisierung von Fallakten ist nun an das des
+          Löschens der Fallakten angepasst. Das Anonymisieren ist nun
+          auch 2-stufig realisiert (issue448). 
 
+        * Falltagebuch verfügbar. Neben den Terminen und Dokumenten
+          steht nun mit dem Falltagebuch eine weitere unterstützende
+          Funktion zur Verfügung. Der CM kann hier den Verlauf des CM 
+          in Form von chronologisch aufeinander folgenden Einträgen
+          dokumentieren.
+
         * Beim Exportieren von XML, CSV und XLS wird jetzt angeboten,
           die Daten anonymsiert zu exportieren. Dies ist die Standardvorgabe.
 
-		* Der XML-Fallaktenexport kann nun auch partiell durchgeführt werden.
-		  Hierzu wurde ein Dialog zur Verfügung gestellt, in dem der
-		  Benutzer die Teile der Fallakte auswählen kann die Exportiert
-		  werden sollen.
+        * Der XML-Fallaktenexport kann nun auch partiell durchgeführt werden.
+          Hierzu wurde ein Dialog zur Verfügung gestellt, in dem der
+          Benutzer die Teile der Fallakte auswählen kann die Exportiert
+          werden sollen.
 
-        * Auf dem Schwarzenbrett werden die Termine und Wiedervorlagen
+        * Auf dem Schwarzen Brett werden die Termine und Wiedervorlagen
           jetzt in drei Kategorien aufgelistet:
           Automatisierte Wiedervorlagen, Eigene Termine, Agenturtermine
 
-		* Erweiterung und Umstrukturierung der Suchmaske in der
-		  Fallaktenübersicht. Folgende Suchoptionen wurden hinzugefügt:
-		  	
-			+ Such nach Geschlecht
-			+ Suche nach CM-Status (Beratung, CM, Abgschlossen...)
-			+ Suche über Zeitintervalle ("Aktive" Fälle im 1. Quartal
-			  2008)
-			+ Suche nach der Filliale für die Administration (issue14)
-		  
-		  Nicht so häfig genutzte Suchoptionen wurden in einen Bereich
-		  "erweiterte Suche" verlegt, der auf Wunsch eingeblendet werden
-		  kann.
+		* Auf dem Schwarzen Brett wird jetzt angezeigt, ob es Fälle gibt,
+		  die inkonsistent im Sinne der Auswertung sind. Hier wird in erster
+		  Linie geprüft, ob die Zeitintervalle korrekt zueinander passen.
 
-		* Erweiterung der Fallakte. Folgende Felder wurden hinzugefügt:
+        * Erweiterung und Umstrukturierung der Suchmaske in der
+          Fallaktenübersicht. Folgende Suchoptionen wurden hinzugefügt:
 
-			+ Rechtskreis: SGB XII (issue397)
-			+ Familienstand: "in fester Partnerschaft" (issue416)
-			+ beim Zugang befand..: "sonstiges", "in der Maßnahme
-			(issue352)
-			+ Weitere Verlauf/Eine Übernahmen ins CM: "sonstiges"
+            + Such nach Geschlecht
+            + Suche nach CM-Status (Beratung, CM, Abgschlossen...)
+            + Suche über Zeitintervalle ("Aktive" Fälle im 1. Quartal
+              2008)
+            + Suche nach der Filliale für die Administration (issue14)
 
-		* Zwei neue Auswertungen verfügbar. Folgende Auswertungen
-		  wurden in die WASKA-interne Auswertung hinzugefügt (issue417):
+          Nicht so häfig genutzte Suchoptionen wurden in einen Bereich
+          "erweiterte Suche" verlegt, der auf Wunsch eingeblendet werden
+          kann.
 
-		  	+ Arbeitsituation des Jugendlichem beim Zugang
-			+ Höchster erreichte Schulabschluss beim Zugang
+        * Erweiterung der Fallakte. Folgende Felder wurden hinzugefügt:
 
-		* Die Ergebnisseiten wurden um die Angaben eines Zeitintervalls
-		  erweitert (siehe Suchoptionen Fallaktenübersicht)
+            + Rechtskreis: SGB XII (issue397)
+            + Familienstand: "in fester Partnerschaft" (issue416)
+            + beim Zugang befand..: "sonstiges", "in der Maßnahme
+            (issue352)
+            + Weitere Verlauf/Eine Übernahmen ins CM: "sonstiges"
 
-		* Issue425: WASKA verfügt nun über eine Statuszeile in der z.B
-		  zusätzlich Informationen zu erfolgreich durchgeführten
-		  Aktionen angezeigt werden können ohne einen extra
-		  Bestätigungsdialog einzubauen.
+        * Zwei neue Auswertungen verfügbar. Folgende Auswertungen
+          wurden in die WASKA-interne Auswertung hinzugefügt (issue417):
 
-		* Issue459: Einbau von weiteren Hilfstexten (Kontexthilfen) 
+            + Arbeitsituation des Jugendlichem beim Zugang
+            + Höchster erreichte Schulabschluss beim Zugang
 
-	Verbessert:
+        * Die Ergebnisseiten wurden um die Angaben eines Zeitintervalls
+          erweitert (siehe Suchoptionen Fallaktenübersicht)
 
-		* Auswertungen sind nun auch über Teilmengen von Fällen möglich.
-		  Die Fallakten über die eine Auswertung durchgeführt werden
-		  soll müssen dazu in der Fallaktenübersicht markiert werden.
-		  Danach kann die Aktion "Auswerten" aus der Auswahlliste
-		  gewählt werden. 
-		  Auf dem Auswerteserver ist eine Auswertung auch über eine
-		  Teilmenge von Agenturen möglich.
+        * Issue425: WASKA verfügt nun über eine Statuszeile in der z.B
+          zusätzlich Informationen zu erfolgreich durchgeführten
+          Aktionen angezeigt werden können ohne einen extra
+          Bestätigungsdialog einzubauen.
 
-		* Um eine Leistungsüberwachung der CM zu verhindern wurde die
-		  Option "Auswerten" aus der Auswahlliste entfernt wenn der
-		  Administrator nach Fallakten eine bestimmten CM sucht. 
+        * Issue459: Einbau von weiteren Hilfstexten (Kontexthilfen) 
 
-		* Sortierung der Fallaktenübersicht. Die einzelnen Spalten der
-		  Fallakten lassen sich nun auf- und absteigend sortieren
+    Verbessert:
 
-		* Schwebend gelöschte Fallakten werden nicht mehr in der
-		  Auswertung berücksichtigt.
+        * Auswertungen sind nun auch über Teilmengen von Fällen möglich.
+          Die Fallakten über die eine Auswertung durchgeführt werden
+          soll müssen dazu in der Fallaktenübersicht markiert werden.
+          Danach kann die Aktion "Auswerten" aus der Auswahlliste
+          gewählt werden. 
+          Auf dem Auswerteserver ist eine Auswertung auch über eine
+          Teilmenge von Agenturen möglich.
 
+        * Um eine Leistungsüberwachung der CM zu verhindern wurde die
+          Option "Auswerten" aus der Auswahlliste entfernt wenn der
+          Administrator nach Fallakten eine bestimmten CM sucht. 
+
+        * Sortierung der Fallaktenübersicht. Die einzelnen Spalten der
+          Fallakten lassen sich nun auf- und absteigend sortieren
+
+        * Schwebend gelöschte Fallakten werden nicht mehr in der
+          Auswertung berücksichtigt.
+
         * Beim Export von CSV- und XLS-Dateien werden die einzelnen Feldbezeichner
           der Unterstützungensangebote des selben Typus jetzt mit einen Dollar-Zeichen
           voneinander getrennt. (Issue463)
 
-		* Issue426: Tippfehler beseitig
-		* Issue342: Umbruchprobleme in Freitextfelder im Ansichtsmodus
-		  behoben
-		* Issue333: Bei dem Wechsel des Bearbeiters wird nun automatisch
-		  auch der Name des neuen Bearbeiters in der Fallakte
-		  anchgetragen.
-		* Issue423: Zusätzliches Feld "Art der Unterstützung" in der
-		  Übersicht der Unterstützungsangebot eingefügt.
-		* Issue447: Die voreingestellten Suchoptionen für die
-		  Adminstration in der Fallaktenübersicht wurden so geändert das
-		  zunächst die Fälle angezeugt werden, die zur Anonymisierung
-		  oder zur Löschung anstehen.
-		* Issue410: Das schwarze Brett (für cm-nutzer) zeigt nun nur
-		  noch Termine und Erinnerung der eigenen Fälle und nicht mehr
-		  der Vertretungsfälle.
-		* Issue126: Wenn ein Jugendlicher jünger als 1 Jahr ist wird in
-		  der Zusammenfassung nun das Alter "0" anstatt "-/-" angezeigt.
-		* Issue456: Einbau eines nachdrücklichen Hinweis im CSV Export
-		  das es hier zu Problemen beim Import mit Office-Anwendungen
-		  kommen kann.
-		* Issue383: Einbau einer Überprüfung beim Anlegen einer
-		  Benutzergruppe ob es eine Gruppe mit gleichen Namen schon
-		  gibt.
+        * Issue426: Tippfehler beseitig
+        * Issue342: Umbruchprobleme in Freitextfelder im Ansichtsmodus
+          behoben
+        * Issue333: Bei dem Wechsel des Bearbeiters wird nun automatisch
+          auch der Name des neuen Bearbeiters in der Fallakte
+          anchgetragen.
+        * Issue423: Zusätzliches Feld "Art der Unterstützung" in der
+          Übersicht der Unterstützungsangebot eingefügt.
+        * Issue447: Die voreingestellten Suchoptionen für die
+          Adminstration in der Fallaktenübersicht wurden so geändert das
+          zunächst die Fälle angezeugt werden, die zur Anonymisierung
+          oder zur Löschung anstehen.
+        * Issue410: Das schwarze Brett (für cm-nutzer) zeigt nun nur
+          noch Termine und Erinnerung der eigenen Fälle und nicht mehr
+          der Vertretungsfälle.
+        * Issue126: Wenn ein Jugendlicher jünger als 1 Jahr ist wird in
+          der Zusammenfassung nun das Alter "0" anstatt "-/-" angezeigt.
+        * Issue456: Einbau eines nachdrücklichen Hinweis im CSV Export
+          das es hier zu Problemen beim Import mit Office-Anwendungen
+          kommen kann.
+        * Issue383: Einbau einer Überprüfung beim Anlegen einer
+          Benutzergruppe ob es eine Gruppe mit gleichen Namen schon
+          gibt.
         * Issue251: Bezeichnung Zustand Fallakte "Geschlossen"
         * Issue409: Abfrage inaktive Fallakte: Fallakte als aktiv "bestätigen"
         * Issue369: Definition von Wiedervorlage und Termine/ Keine Doppelung von Terminanzeigen
@@ -121,10 +125,25 @@
         * Issue473: Logbuch Ergänzung Termin anlegen/ Ausgabe Ergänung "Thema"
         * Issue467: Englische Zeitstempel in deutschsprachiger Anwendung
         * Issue466: Automatische Logbuch-Einträge sind bearbeitbar.
+        * Issue264: ApacheLog: TypeError
+        * Issue312: PM: Druckausgabe
+        * Issue371: Tooltipps zeigen .po Referenzen
+        * Issue475: Datenschutz Anpassung relvanter Dokumente an Standardfall "Anonymisierung"
+        * Issue477: MarkForAnonymize liefert traceback
+        * Issue478: Schwebend anonymisierte Akten nicht in Suchergebnissen
+        * Issue483: Termine: Traceback wenn zu langer Titel (mehr als 128)
+        * Issue484: Logbuch: 'Dauer in Minuten' wird nicht auf Integer geprüft.
+        * Issue487: ISE: Hilfe-Controller mit nicht existententer Hilfe-Id aufgerufen.
+        * Issue488: Auswerteserver: Gesamtanzahl anzeigen
+        * Issue489: Unterstützungsangebote: Ausdruck des Förderplans enthält 'None'-Werte
+        * Issue490: Typo:  is groesser als .
+        * Issue491: statement_print.mako aufräumen
+        * Issue492: Auswerteserver: Suche über Zeitintervalle
+		* Issue495: DB-Logging noch nicht vollständig
 
-	Sonstiges:
+    Sonstiges:
 
-		* Issue427: Entfernen von Debugging Ausgaben in den Serverlogs 
+        * Issue427: Entfernen von Debugging Ausgaben in den Serverlogs 
         * Issue461: Zahl der Eintraege in apache2/error.log stark angestiegen
 
     Auswertungs-Server:
@@ -179,7 +198,7 @@
         Ohne Fehlernummer:
             - Das Aktivieren der Online-Hilfe in der Fallakte führte zu ISEs
             - Unterstützungsangebote konnten nicht bearbeitet werden.
-        
+
         issue136: Nach Fallakten->Suche sollte der Such-String wieder im Eingabefeld erscheinen.
         issue200: "Aktion für Auswahl ausführen" gibt in zwei Fällen keinen Hinweis zurück
         issue222: Fehlerhafte Fehlermeldung bei Passwortänderung
@@ -356,7 +375,7 @@
 
       Weiter Erläuterungen welche personenbezogenen Daten
       anonymisiert werden finden Sie unter:
-        
+
       http://waska-anwender.intevation.de/download/WASKA-Erlaeuterungen_Anonymisierung.pdf
 
     * Anonymisierte Fallakten können in der Fallaktenübersicht
@@ -408,13 +427,13 @@
 
     * 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
@@ -423,7 +442,7 @@
 
 Beta 23:
     Neu:
-     
+
     * Das Feld zur Eingabe der maximalen Speicherdauer der ruhenden Fallakten
       wurde entfernt. Der Wert wird intern auf 90 Tage festgelegt.
 
@@ -450,7 +469,7 @@
       verwenden.
 
     Verbessert:
-    
+
     * Mehrere kleinere Änderungen an der Gestaltung, um das Erscheinungsbild der
       verschiedenen Dialoge und Bereiche weiter zu vereinheitlichen.
 

Modified: trunk/formed/formedtree_web.xml
===================================================================
--- trunk/formed/formedtree_web.xml	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/formed/formedtree_web.xml	2008-08-13 13:16:26 UTC (rev 58)
@@ -90,13 +90,13 @@
       <group containers="a,b" description="Persönliche Daten" name="persoenlichedaten" target="a">
         <text description="Vorname" formularname="Vorname" function="suppress_value" maxlength="60" modes="-mode1.1anon" name="vorname_1" size="40" target="a"/>
         <text description="Name" formularname="Name" function="suppress_value" maxlength="60" modes="-mode1.1anon" name="name_1" size="40" target="a"/>
-        <date description="Geburtsdatum" formularname="Geburtsdatum" function="get_age" modes="-mode1.1anon" name="geburtsdatum" target="b:30"/>
         <choice description="Geschlecht" formularname="Geschlecht" name="geschlecht" size="1" target="b:30">
           <bool checked="true" description="Keine Angabe" name="keineangabe" value="-1"/>
           <bool description="weiblich" name="weiblich" value="0"/>
           <bool description="männlich" name="maennlich" value="1"/>
           <bool description="intersexuell" name="intersexuell" value="2"/>
         </choice>
+        <date description="Geburtsdatum" formularname="Geburtsdatum" function="get_age" modes="-mode1.1anon" name="geburtsdatum" target="b:30"/>
         <choice description="Familienstand" formularname="Familienstand" name="familienstand" size="1" target="b:40">
           <bool checked="true" description="Keine Angabe" name="keineangabe" value="-1"/>
           <bool description="ledig" name="ledig" value="0"/>
@@ -457,13 +457,13 @@
           <int description="Dauer der Arbeitslosigkeit insgesamt (in Monaten)" formularname="Dauer_insgesamt" maxvalue="99" minvalue="0" name="dauer_insgesamt" target="b"/>
           <choice description="ALG I-Bezug" name="bezug_alg1" size="1" target="c">
             <bool description="Keine Angabe" name="keineangabe" value="-1"/>
-            <bool description="Ja" name="ja" target="1"/>
-            <bool description="Nein" name="nein"/>
+            <bool description="Ja" name="ja" value="1"/>
+            <bool description="Nein" name="nein" value="0"/>
           </choice>
           <choice description="ALG II-Bezug" name="bezug_alg2" size="1" target="c">
             <bool description="Keine Angabe" name="keineangabe" value="-1"/>
-            <bool description="Ja" name="ja" target="1"/>
-            <bool description="Nein" name="nein"/>
+            <bool description="Ja" name="ja" value="1"/>
+            <bool description="Nein" name="nein" value="0"/>
           </choice>
         </group>
         <group description="Wehrpflicht/Zivildienst/Freiwilligenjahr" formularname="Wehrpflicht_Zivildienst_Freiwilligenjahr" name="wehrpflicht_zivildienst_freiwilligenjahr" target="g">

Modified: trunk/formed/privacy_statement.html
===================================================================
--- trunk/formed/privacy_statement.html	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/formed/privacy_statement.html	2008-08-13 13:16:26 UTC (rev 58)
@@ -70,15 +70,17 @@
 Diese Einwilligung kann ich jederzeit widerrufen. Mir ist bewusst, dass dadurch
 unter Umständen eine Begleitung durch die Kompetenzagentur $KA_NAME nicht mehr oder
 nicht mehr in dem geplanten oder erforderlichen Umfang gewährleistet werden
-kann.<br> Ziehe ich meinen Auftrag, mich von der Kompetenzagentur $KA_NAME bei der
-beruflichen und sozialen Integration begleiten zu lassen zurück, werden alle
-über mich gespeicherten Daten sofort anonymisiert. Wenn die Begleitung nach einem
-Zeitraum von $KA_SPEICHERDAUER Tagen nach Abschluss nicht weitergeführt wird, werden meine
-Daten bei der Kompetenzagentur $KA_NAME anonymisiert.<br> Ausgeschlossen von dieser
-Löschung bleiben die Angaben auf der Teilnehmerliste (z. B. Name, Anschrift,
-Datum Erstkontakt etc.) Die Angaben auf der Teilnehmerliste werden elektronisch
-nicht verarbeitet und dienen der Kompetenzagentur $KA_NAME und dem PT-DLR zu
-abrechnungstechnischen Zwecken.
+kann.<br> 
+Ziehe ich meinen Auftrag, mich von der Kompetenzagentur $KA_NAME bei der
+beruflichen und sozialen Integration begleiten zu lassen zurück,  wird der
+Personenbezug meiner Daten sofort gelöscht, d.h. diese  werden anonymisiert
+(s.o.). Wenn die Begleitung  nach einem Zeitraum von $KA_SPEICHERDAUER Tagen
+nach Abschluss nicht weitergeführt  wird, werden meine Daten bei der
+Kompetenzagentur $KA_NAME anonymisiert.</br>
+Ausgeschlossen von dieser Löschung bleiben die Angaben auf der Teilnehmerliste
+(z. B. Name, Anschrift, Datum Erstkontakt etc.) Die Angaben auf der
+Teilnehmerliste werden elektronisch nicht verarbeitet und dienen der
+Kompetenzagentur $KA_NAME und dem PT-DLR zu abrechnungstechnischen Zwecken.
 </p>
 <p>
 Ich habe jederzeit die Möglichkeit, meine Fallakte bei der Kompetenzagentur $KA_NAME

Modified: trunk/formed/waska-hilfetexte.xhtml
===================================================================
--- trunk/formed/waska-hilfetexte.xhtml	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/formed/waska-hilfetexte.xhtml	2008-08-13 13:16:26 UTC (rev 58)
@@ -7,6 +7,11 @@
   </head>
   <body>
 
+    <div id="schulpflichtig">
+      <h2>Schulpflicht</h2>
+      <p>Die Frage nach der Schulpflicht bezieht sich nicht auf eine eventuelle Berufsschulpficht.
+    </div>
+
     <div id="kontaktdaten_arge">
       <h2>Kontaktdaten ARGE/Optionskommune</h2>
       <p>Je nach Bedarf ausschließlich zu Ihrer eigenen Benutzung. Fließt nicht in die Auswertung ein. </p>

Modified: trunk/waskaweb/config/routing.py
===================================================================
--- trunk/waskaweb/config/routing.py	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/config/routing.py	2008-08-13 13:16:26 UTC (rev 58)
@@ -33,6 +33,7 @@
     map.connect('case/showAppointment/:id/:confirmed', controller="case", action="showAppointment", confirmed=1)
     map.connect('case/anonymize/:id/:confirmed', controller="case", action="anonymize")
     map.connect('case/markForAnonymize/:id/:confirmed', controller="case", action="markForAnonymize")
+    map.connect('case/markForAnonymizeFromOverview/:id/:confirmed', controller="case", action="markForAnonymizeFromOverview")
     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/agency_overview.py
===================================================================
--- trunk/waskaweb/controllers/agency_overview.py	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/controllers/agency_overview.py	2008-08-13 13:16:26 UTC (rev 58)
@@ -113,8 +113,9 @@
         c.agencys.search(search_str)
 
         ##count num of cases
-        c.count_all = len([x for x in c.agencys.getDatasets()])
-
+        c.count_all = 0
+        for x in c.agencys.getDatasets():
+            c.count_all += x.num_cases
         ## Load case-selection and merge with default search options
         ## Ok please close your eyes now!!! This is.... well ugly
         form_defaults_copy = form_defaults.copy()

Modified: trunk/waskaweb/controllers/case.py
===================================================================
--- trunk/waskaweb/controllers/case.py	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/controllers/case.py	2008-08-13 13:16:26 UTC (rev 58)
@@ -246,6 +246,10 @@
         case = self._loadCase(id)
         formular = []
         c.print_version = 1
+        # First page is print version of the digest ()
+        c.digest = case.getDigest(empty)
+        digest = render('/casemanagement/digest_body.mako')
+        formular.append(unicode(digest, 'utf-8'))
         for ti in self.getNavigation().getAllItems():
             if ti.key in ['27', '28', '29', '30']: continue #ignoring empty aid pages
             content, navigation = self._getRenderdFormElements(ti, id, ro_mode=True, no_data=empty)
@@ -264,12 +268,6 @@
         page = render('/casemanagement/formular.mako')
         return page
 
-        #c.notification_for = PRINTALL_NOTIFICATION 
-        #c.notification_text = PRINTALL_NOTIFICATION_TEXT 
-        #c.url_ok = h.url_for(action="digest")
-        #c.form_navigation = self._getFormNavigation()
-        #return render('/casemanagement/dialogs/notificate_printall.mako')
-
     @checkRole('cm_ka')
     def new(self):
         session_case = SessionCase()
@@ -397,7 +395,9 @@
 
     @checkRole(('admin_ka', 'cm_ka', 'pb_ka'))
     def showHelp(self, help_id):
-        c.helpdata  = unicode(g.helpData.getHelp(help_id), 'utf-8')
+        help = g.helpData.getHelp(help_id)
+        if help is None: raise HTTPNotFound()
+        c.helpdata  = unicode(help, 'utf-8')
         return render('/casemanagement/help.mako')
 
     @checkRole('cm_ka')
@@ -727,6 +727,7 @@
     def editLogbookEntry(self, id):
         id = self._checkInt(id)
         c.form_navigation = self._getFormNavigation()
+        c.form_errors = {}
         entry_data = {}
         try:
             entry = LogbookEntry()
@@ -1001,7 +1002,7 @@
         confirmed = self._checkBool(confirmed)
         c.ds_id   = id
         if confirmed == 1:
-            case = self._loadCase(id)
+            case = load_case(id)
             case.setState(3)
             c.success_for   =   u'Fallakte gelöscht!' 
             c.success_text  =   u'Die Fallakte wurde zum Löschen an die Administration weitergeleitet.' 
@@ -1101,14 +1102,37 @@
             return render('/casemanagement/dialogs/confirm_close.mako')
 
     @checkRole('cm_ka')
+    def markForAnonymizeFromOverview(self, id, confirmed):
+        try:
+            id        = self._checkInt(id)
+            confirmed = self._checkBool(confirmed)
+            c.ds_id   = id
+            case = load_case(id)
+            if confirmed == 1:
+                state = case.getState().setState(4)
+                if state:
+                    c.success_for   =  ANONYMIZE_SUCCESS
+                    c.success_text  =  MARKANONYMIZE_SUCCESS_TEXT
+                    c.url_ok        =  h.url_for(controller="/case_overview")
+                    return render('/casemanagement/dialogs/success_markanonymize.mako')
+            else:
+                c.confirm_for = ANONYMIZE_CONFIRM
+                c.question = MARKANONYMIZE_CONFIRM_TEXT
+                c.url_yes = "/case/markForAnonymize/%s/1" % id
+                c.url_no  =  h.url_for(controller="/case_overview")
+                return render('/casemanagement/dialogs/confirm_markanonymizeFromOverview.mako')
+        except:
+            return render('/tests/trace.mako')
+
+    @checkRole('cm_ka')
     def markForAnonymize(self, id, confirmed):
         try:
             id        = self._checkInt(id)
             confirmed = self._checkBool(confirmed)
             c.ds_id   = id
+            case = load_case(id)
             c.form_navigation = self._getFormNavigation()
             if confirmed == 1:
-                case = self._loadCase(id)
                 state = case.getState().setState(4)
                 if state:
                     c.success_for   =  ANONYMIZE_SUCCESS
@@ -1116,7 +1140,6 @@
                     c.url_ok        =  h.url_for(controller="/case_overview")
                     return render('/casemanagement/dialogs/success_markanonymize.mako')
             else:
-                c.context = "../main.mako"
                 c.confirm_for = ANONYMIZE_CONFIRM
                 c.question = MARKANONYMIZE_CONFIRM_TEXT
                 c.url_yes = "/case/markForAnonymize/%s/1" % id

Modified: trunk/waskaweb/controllers/case_overview.py
===================================================================
--- trunk/waskaweb/controllers/case_overview.py	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/controllers/case_overview.py	2008-08-13 13:16:26 UTC (rev 58)
@@ -113,6 +113,9 @@
         search_options.append('state:%s' % 4)
     if options.get('show_anonymized') == '1':
         search_options.append('state:%s' % 5)
+        # For cm users show cases which are marked for anon too
+        if h.hasRole('cm_ka'): 
+            search_options.append('state:%s' % 4)
     if options.get('gender') >= -1:
         search_options.append('gender:%s' % options.get('gender'))
     if options.get('branch'):
@@ -232,7 +235,10 @@
         c.count_all = len([x for x in c.cases.getDatasets()])
         c.count_own = len([x for x in c.cases.getDatasets() if x.getEditor().id == user.id])
         c.count_standin = c.count_all - c.count_own 
-        c.count_anon = len([x for x in c.cases.getDatasets() if x.getState().getState() == 5])
+        if h.hasRole('cm_ka'):
+            c.count_anon = len([x for x in c.cases.getDatasets() if x.getState().getState() in (4,5)])
+        else:
+            c.count_anon = len([x for x in c.cases.getDatasets() if x.getState().getState() == 5])
         c.count_markanon = len([x for x in c.cases.getDatasets() if x.getState().getState() == 4])
         c.count_del  = len([x for x in c.cases.getDatasets() if x.getState().getState() == 3])
 
@@ -265,6 +271,17 @@
         return self.overview()
 
     @checkRole(('admin_ka', 'cm_ka', 'pt_dlr'))
+    def listBadCases(self):
+        user = session.get('USER_AUTHORIZED')
+        c.type_1_list = CaseOverview().search('state:1;state:2;state:5;own:%s;bad:1' % user.id)
+        c.type_2_list = CaseOverview().search('state:1;state:2;state:5;own:%s;bad:2' % user.id)
+        c.type_3_list = CaseOverview().search('state:1;state:2;state:5;own:%s;bad:3' % user.id)
+        c.type_4_list = CaseOverview().search('state:1;state:2;state:5;own:%s;bad:4' % user.id)
+        c.type_5_list = CaseOverview().search('state:1;state:2;state:5;own:%s;bad:5' % user.id)
+        c.type_6_list = CaseOverview().search('state:1;state:2;state:5;own:%s;bad:6' % user.id)
+        return render('/casemanagement/listbadcases.mako')
+
+    @checkRole(('admin_ka', 'cm_ka', 'pt_dlr'))
     def bundleAction(self):
         validator = BundleActionForm()
         c.context           = "../main.mako" 

Modified: trunk/waskaweb/controllers/evaluate.py
===================================================================
--- trunk/waskaweb/controllers/evaluate.py	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/controllers/evaluate.py	2008-08-13 13:16:26 UTC (rev 58)
@@ -129,6 +129,8 @@
                 # Verhältnis Beratungskunden
                 e1 = Evaluation_1(self._getCompressedIds(reset))
                 c.eval_1_total, c.eval_1_ber, c.eval_1_ber_percent, c.eval_1_cm, c.eval_1_cm_percent = e1.perform()
+                c.count_total = e1.getTotal()
+                c.count_total_valid = e1.getTotalValid()
                 # Zugang zur KA
                 e4 = Evaluation_4(self._getCompressedIds(reset))
                 c.eval_4 = e4.perform()
@@ -146,6 +148,8 @@
                 # Verweildauer CM
                 e10 = Evaluation_10(self._getCompressedIds(reset))
                 c.eval_10 = e10.perform()
+                c.count_total = e10.getTotal()
+                c.count_total_valid = e10.getTotalValid()
                 e13 = Evaluation_13(self._getCompressedIds(reset))
                 c.eval_13 = e13.perform()
                 # Altersverteilung 
@@ -165,6 +169,8 @@
                 # Vermittlung
                 e6 = Evaluation_6(self._getCompressedIds(reset))
                 c.eval_6 = e6.perform()
+                c.count_total = e6.getTotal()
+                c.count_total_valid = e6.getTotalValid()
                 # Rechtskreis nach Vermittlung
                 e7 = Evaluation_7(self._getCompressedIds(reset))
                 c.eval_7 = e7.perform()

Modified: trunk/waskaweb/controllers/rg_aid.py
===================================================================
--- trunk/waskaweb/controllers/rg_aid.py	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/controllers/rg_aid.py	2008-08-13 13:16:26 UTC (rev 58)
@@ -99,7 +99,7 @@
         if confirmed == 1:
             factory  = AidObjectFactory()
             aid      = factory.load(int(ds_type), int(rg_id))
-            if aid.delete():
+            if aid is None or aid.delete():
                 # Redirect to the overview page: 14 should be the correct page key 
                 c.success_for   = u'Angebot gelöscht!'
                 c.success_text  = u'Bitte klicken Sie auf "OK", um fortzufahren.'

Modified: trunk/waskaweb/controllers/waska.py
===================================================================
--- trunk/waskaweb/controllers/waska.py	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/controllers/waska.py	2008-08-13 13:16:26 UTC (rev 58)
@@ -11,6 +11,7 @@
 from waskaweb.lib.base     import *
 from waskaweb.lib.security import checkLogin, userIdentity, generateID, checkRole
 from waskaweb.model.user   import UserObject
+from waskaweb.model.case   import CaseOverview
 from waskaweb.model.appointment import MaxSaveTimeReminderOverview, \
                                        CaseAppointmentOverview, \
                                        GlobalAppointmentOverview, \
@@ -55,6 +56,16 @@
                 caseapp.sort()
                 c.appointmentlist = caseapp
             c.globalappointmentlist = globalapp
+
+        #find out if there are cases with errors
+        user = session['USER_AUTHORIZED']
+        search_str = "state:1;state:2;state:5;bad:1;bad:2;bad:3;bad:4;bad:5;bad:6;own:%s" % user.id
+        c.num_error_cases = len(CaseOverview().search(search_str))
+        if c.num_error_cases > 0:
+            session['hascaseerrors'] = True
+        else:
+            session['hascaseerrors'] = False 
+        session.save()
         return render('/start/start.mako')
 
     def help(self):

Modified: trunk/waskaweb/i18n/de/LC_MESSAGES/waskaweb.po
===================================================================
--- trunk/waskaweb/i18n/de/LC_MESSAGES/waskaweb.po	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/i18n/de/LC_MESSAGES/waskaweb.po	2008-08-13 13:16:26 UTC (rev 58)
@@ -7,9 +7,9 @@
 msgstr ""
 "Project-Id-Version: waskaweb 0.0.0\n"
 "Report-Msgid-Bugs-To: EMAIL at ADDRESS\n"
-"POT-Creation-Date: 2008-07-01 11:13+0200\n"
+"POT-Creation-Date: 2008-07-08 14:31+0200\n"
 "PO-Revision-Date: 2007-10-14 20:33+0200\n"
-"Last-Translator: Torsten Irländer<torsten.irlaender at intevation.de>\n"
+"Last-Translator: Torsten Irländer<torsten.irlaender at intevation.de>\n"
 "Language-Team: de <LL at li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -188,7 +188,7 @@
 "Ihre Standard-Vertretung wurde gespeichert. Bitte klicken Sie auf OK, um "
 "fortzufahren."
 
-#: waskaweb/lib/evaluation.py:124
+#: waskaweb/lib/evaluation.py:130
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:43
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:64
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:43
@@ -196,7 +196,7 @@
 msgid "cm_eval_summary_header_1"
 msgstr "1.1. Verhältnis Beratungskunden/Aufnahmen in das Case-Management (CM)"
 
-#: waskaweb/lib/evaluation.py:180
+#: waskaweb/lib/evaluation.py:186
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:50
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:50
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:116
@@ -204,7 +204,7 @@
 msgid "cm_eval_summary_header_4"
 msgstr "2.2. Alters- und Geschlechterstruktur in %"
 
-#: waskaweb/lib/evaluation.py:224
+#: waskaweb/lib/evaluation.py:230
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:51
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:51
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:183
@@ -212,32 +212,32 @@
 msgid "cm_eval_summary_header_5"
 msgstr "2.3. Migrationshintergrund"
 
-#: waskaweb/lib/evaluation.py:274
+#: waskaweb/lib/evaluation.py:280
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:95
 msgid "cm_eval_header_access_youngster_to_agency"
 msgstr "1.2.1. Zugang des Jugendlichen zur Kompetenzagentur"
 
-#: waskaweb/lib/evaluation.py:319
+#: waskaweb/lib/evaluation.py:325
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:125
 msgid "cm_eval_head_law_access_agency"
 msgstr "1.2.2. Angaben zum Rechtskreis beim Zugang zur Kompetenzagentur"
 
-#: waskaweb/lib/evaluation.py:370
+#: waskaweb/lib/evaluation.py:376
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_3.mako:65
 msgid "cm_eval_head_where_to_place_youngster"
 msgstr "3.1.1. Wohin wurden die Jugendlichen vermittlelt?"
 
-#: waskaweb/lib/evaluation.py:416
+#: waskaweb/lib/evaluation.py:422
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_3.mako:95
 msgid "cm_eval_header_law_changed_after_place"
 msgstr "3.1.2. Angaben zum Rechtskreis nach der Vermittlung"
 
-#: waskaweb/lib/evaluation.py:487
+#: waskaweb/lib/evaluation.py:493
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:151
 msgid "cm_eval_header_on_age"
 msgstr "2.2.2. Angaben zur Altersverteilung"
 
-#: waskaweb/lib/evaluation.py:552
+#: waskaweb/lib/evaluation.py:558
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:52
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:52
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:213
@@ -245,21 +245,21 @@
 msgid "cm_eval_summary_header_6"
 msgstr "2.4. Förderbedarf"
 
-#: waskaweb/lib/evaluation.py:616
+#: waskaweb/lib/evaluation.py:622
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:63
 msgid "cm_eval_length_cm"
 msgstr "2.1.1. Verweildauer im CM"
 
-#: waskaweb/lib/evaluation.py:657
+#: waskaweb/lib/evaluation.py:663
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:90
 msgid "cm_eval_avg_length_cm"
 msgstr "2.1.2. Durchschnittliche Verweildauer in Wochen"
 
-#: waskaweb/lib/evaluation.py:707
+#: waskaweb/lib/evaluation.py:713
 msgid "cm_eval_header_graduation"
 msgstr "1.3. Höchster erreichte Schulanbschluss"
 
-#: waskaweb/lib/evaluation.py:757
+#: waskaweb/lib/evaluation.py:763
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:155
 msgid "cm_eval_header_work"
 msgstr "1.2.3. Status des Jugendlichen beim Zugang zur Kompetenzagentur"
@@ -280,47 +280,92 @@
 msgid "cm_rg_aid_overview_table_edit"
 msgstr "Bearbeiten"
 
-#: waskaweb/lib/renderer.py:216
+#: waskaweb/lib/renderer.py:214 waskaweb/lib/renderer.py:215
+#: waskaweb/templates/administration/overview_user.mako:43
+#: waskaweb/templates/administration/overview_user.mako:60
+#: waskaweb/templates/administration/overview_usergroups.mako:34
+#: waskaweb/templates/administration/overview_usergroups.mako:43
+#: waskaweb/templates/appointments/appointmentlist.mako:3
+#: waskaweb/templates/casemanagement/appointmentlist.mako:3
+#: waskaweb/templates/casemanagement/caselist.mako:70
+#: waskaweb/templates/casemanagement/caselist.mako:123
+#: waskaweb/templates/casemanagement/reminderlist.mako:4
+#: waskaweb/templates/documents/case_overview.mako:42
+#: waskaweb/templates/documents/case_overview.mako:53
+#: waskaweb/templates/documents/global_overview.mako:39
+#: waskaweb/templates/documents/global_overview.mako:40
+#: waskaweb/templates/documents/global_overview.mako:51
+#: waskaweb/templates/documents/global_overview.mako:52
+#: waskaweb/templates/start/appointmentlist.mako:6
+#: waskaweb/templates/start/appointmentlist.mako:9
+#: waskaweb/templates/start/appointmentlist.mako:13
+#: waskaweb/templates/start/globalappointmentlist.mako:4
+#: waskaweb/templates/start/remindlist.mako:4
+msgid "cm_overview_a_show"
+msgstr "Anzeigen"
+
+#: waskaweb/lib/renderer.py:216 waskaweb/lib/renderer.py:217
+#: waskaweb/templates/administration/overview_user.mako:45
+#: waskaweb/templates/administration/overview_user.mako:62
+#: waskaweb/templates/administration/overview_usergroups.mako:35
+#: waskaweb/templates/administration/overview_usergroups.mako:44
+#: waskaweb/templates/appointments/appointmentlist.mako:5
+#: waskaweb/templates/casemanagement/agencylist.mako:29
+#: waskaweb/templates/casemanagement/agencylist.mako:39
+#: waskaweb/templates/casemanagement/appointmentlist.mako:5
+#: waskaweb/templates/casemanagement/caselist.mako:74
+#: waskaweb/templates/casemanagement/caselist.mako:84
+#: waskaweb/templates/casemanagement/caselist.mako:127
+#: waskaweb/templates/casemanagement/caselist.mako:137
+#: waskaweb/templates/casemanagement/reminderlist.mako:7
+#: waskaweb/templates/documents/case_overview.mako:44
+#: waskaweb/templates/documents/case_overview.mako:55
+#: waskaweb/templates/documents/global_overview.mako:42
+#: waskaweb/templates/documents/global_overview.mako:54
+msgid "cm_overview_a_delete"
+msgstr "Löschen"
+
+#: waskaweb/lib/renderer.py:218
 msgid "cm_rg_aid_overview_table_no_offer_found"
 msgstr "Keine Angebote gefunden"
 
-#: waskaweb/lib/renderer.py:217
+#: waskaweb/lib/renderer.py:219
 msgid "cm_rg_aid_overview_legend_legend"
 msgstr "Legende:"
 
-#: waskaweb/lib/renderer.py:218
+#: waskaweb/lib/renderer.py:220
 msgid "cm_rg_aid_overview_legend_bb"
 msgstr "(BB)"
 
-#: waskaweb/lib/renderer.py:219
+#: waskaweb/lib/renderer.py:221
 msgid "cm_rg_aid_overview_legend_common_educational_area"
 msgstr "Allgemein bildenden Bereich"
 
-#: waskaweb/lib/renderer.py:220
+#: waskaweb/lib/renderer.py:222
 msgid "cm_rg_aid_overview_legend_bv"
 msgstr "(BV)"
 
-#: waskaweb/lib/renderer.py:221
+#: waskaweb/lib/renderer.py:223
 msgid "cm_rg_aid_overview_legend_vocational_preparation"
 msgstr "Bereich der Berufsvorbereitung"
 
-#: waskaweb/lib/renderer.py:222
+#: waskaweb/lib/renderer.py:224
 msgid "cm_rg_aid_overview_legend_bq"
 msgstr "(BQ)"
 
-#: waskaweb/lib/renderer.py:223
+#: waskaweb/lib/renderer.py:225
 msgid "cm_rg_aid_overview_legend_qualifications"
 msgstr "Berufliche Qualifizierung"
 
-#: waskaweb/lib/renderer.py:224
+#: waskaweb/lib/renderer.py:226
 msgid "cm_rg_aid_overview_legend_lb"
 msgstr "(LB)"
 
-#: waskaweb/lib/renderer.py:225
+#: waskaweb/lib/renderer.py:227
 msgid "cm_rg_aid_overview_legend_life_skills"
 msgstr "Lebensbewältigung"
 
-#: waskaweb/lib/renderer.py:226
+#: waskaweb/lib/renderer.py:228
 msgid "cm_rg_aid_overview_legend_new_offer"
 msgstr "Neues Angebot hinzufügen"
 
@@ -453,33 +498,33 @@
 msgid "menu_cm_link_import"
 msgstr "Fallakte importieren"
 
-#: waskaweb/templates/main.mako:160
+#: waskaweb/templates/main.mako:163
 msgid "menu_header_adm"
 msgstr "Administration"
 
-#: waskaweb/templates/main.mako:162
+#: waskaweb/templates/main.mako:165
 msgid "menu_adm_link_useroverview"
 msgstr "Benutzer"
 
-#: waskaweb/templates/main.mako:165
+#: waskaweb/templates/main.mako:168
 msgid "menu_adm_link_usergroupoverview"
 msgstr "Benutzergruppen"
 
-#: waskaweb/templates/main.mako:168
+#: waskaweb/templates/main.mako:171
 msgid "menu_adm_link_showsettings"
 msgstr "Agentur"
 
-#: waskaweb/templates/main.mako:181
+#: waskaweb/templates/main.mako:184
 msgid "main_formular_input_error"
 msgstr "Fehlerhafte Formulareingabe"
 
-#: waskaweb/templates/main.mako:194
+#: waskaweb/templates/main.mako:197
 msgid "footer_title"
 msgstr "WASKA"
 
-#: waskaweb/templates/main.mako:194
+#: waskaweb/templates/main.mako:197
 msgid "footer_version"
-msgstr "01.07.2008 | Version 1.0.3rc5"
+msgstr "09.07.2008 | Version 1.0.3rc6"
 
 #: waskaweb/templates/main_login.mako:38
 #: waskaweb/templates/start/responsible.mako:149
@@ -914,49 +959,6 @@
 msgid "adm_overview_tbl_header_actions"
 msgstr "Aktionen"
 
-#: waskaweb/templates/administration/overview_user.mako:43
-#: waskaweb/templates/administration/overview_user.mako:60
-#: waskaweb/templates/administration/overview_usergroups.mako:34
-#: waskaweb/templates/administration/overview_usergroups.mako:43
-#: waskaweb/templates/appointments/appointmentlist.mako:3
-#: waskaweb/templates/casemanagement/appointmentlist.mako:3
-#: waskaweb/templates/casemanagement/caselist.mako:70
-#: waskaweb/templates/casemanagement/caselist.mako:123
-#: waskaweb/templates/casemanagement/reminderlist.mako:4
-#: waskaweb/templates/documents/case_overview.mako:42
-#: waskaweb/templates/documents/case_overview.mako:53
-#: waskaweb/templates/documents/global_overview.mako:39
-#: waskaweb/templates/documents/global_overview.mako:40
-#: waskaweb/templates/documents/global_overview.mako:51
-#: waskaweb/templates/documents/global_overview.mako:52
-#: waskaweb/templates/start/appointmentlist.mako:6
-#: waskaweb/templates/start/appointmentlist.mako:9
-#: waskaweb/templates/start/appointmentlist.mako:13
-#: waskaweb/templates/start/globalappointmentlist.mako:4
-#: waskaweb/templates/start/remindlist.mako:4
-msgid "cm_overview_a_show"
-msgstr "Anzeigen"
-
-#: waskaweb/templates/administration/overview_user.mako:45
-#: waskaweb/templates/administration/overview_user.mako:62
-#: waskaweb/templates/administration/overview_usergroups.mako:35
-#: waskaweb/templates/administration/overview_usergroups.mako:44
-#: waskaweb/templates/appointments/appointmentlist.mako:5
-#: waskaweb/templates/casemanagement/agencylist.mako:29
-#: waskaweb/templates/casemanagement/agencylist.mako:39
-#: waskaweb/templates/casemanagement/appointmentlist.mako:5
-#: waskaweb/templates/casemanagement/caselist.mako:74
-#: waskaweb/templates/casemanagement/caselist.mako:84
-#: waskaweb/templates/casemanagement/caselist.mako:127
-#: waskaweb/templates/casemanagement/caselist.mako:137
-#: waskaweb/templates/casemanagement/reminderlist.mako:7
-#: waskaweb/templates/documents/case_overview.mako:44
-#: waskaweb/templates/documents/case_overview.mako:55
-#: waskaweb/templates/documents/global_overview.mako:42
-#: waskaweb/templates/documents/global_overview.mako:54
-msgid "cm_overview_a_delete"
-msgstr "Löschen"
-
 #: waskaweb/templates/administration/overview_usergroups.mako:13
 msgid "adm_header_usergroup_overview"
 msgstr "Benutzergruppen"
@@ -1332,10 +1334,6 @@
 msgid "app_actions_link_newappointment"
 msgstr "Neuen Termin anlegen"
 
-#: waskaweb/templates/appointments/overview.mako:20
-msgid "app_con_list_all_appointments"
-msgstr "Hier wird eine Auflistung aller Termine angezeigt"
-
 #: waskaweb/templates/appointments/overview_body.mako:5
 #: waskaweb/templates/appointments/remindlist_body.mako:5
 #: waskaweb/templates/start/globalappointmentlist.mako:9
@@ -1462,14 +1460,10 @@
 #: waskaweb/templates/casemanagement/dialogs/success_delete_cm.mako:5
 #: waskaweb/templates/casemanagement/dialogs/success_markdelete.mako:5
 #: waskaweb/templates/casemanagement/dialogs/success_restore.mako:5
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0.mako:6
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0_month.mako:6
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0_year.mako:6
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:6
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:6
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_3.mako:6
 #: waskaweb/templates/casemanagement/static_form/statement.mako:5
-#: waskaweb/templates/casemanagement/static_form/statement_print.mako:5
 #: waskaweb/templates/statement/dialogs/missing_statement.mako:5
 msgid "cm_np_root"
 msgstr "Case-Management"
@@ -1538,8 +1532,8 @@
 #: 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/logbook/edit.mako:10
-#: waskaweb/templates/logbook/new.mako:10
+#: waskaweb/templates/logbook/edit.mako:11
+#: waskaweb/templates/logbook/new.mako:11
 #: waskaweb/templates/logbook/overview.mako:6
 #: waskaweb/templates/logbook/show.mako:5
 #: waskaweb/templates/logbook/dialogs/confirm_delete_logbook_entry.mako:5
@@ -1747,9 +1741,6 @@
 msgstr "Fallakte exportieren"
 
 #: waskaweb/templates/casemanagement/evaluation.mako:5
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0.mako:7
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0_month.mako:7
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0_year.mako:7
 msgid "cm_np_evaluate"
 msgstr "Auswertung"
 
@@ -2087,18 +2078,12 @@
 msgid "cm_np_restore_success"
 msgstr "Wiederherstellen erfolgreich!"
 
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0.mako:8
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0_month.mako:8
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0_year.mako:8
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:7
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:7
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_3.mako:7
 msgid "cm_np_evaluate_result"
 msgstr "Auswertungen"
 
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0.mako:10
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0_month.mako:10
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0_year.mako:10
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:9
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:9
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_3.mako:9
@@ -2342,10 +2327,6 @@
 msgid "cm_eval_table_law_change"
 msgstr "Rechtskreis"
 
-#: waskaweb/templates/casemanagement/static_form/statement_print.mako:6
-msgid "cm_np_statement"
-msgstr "Einwilligungserklärung"
-
 #: waskaweb/templates/dialogs/alert.mako:3
 msgid "dialog_header_alert"
 msgstr "Achtung!"
@@ -2717,6 +2698,12 @@
 msgid "adm_np_changepassword"
 msgstr "Benutzerpasswort geändert!"
 
+#~ msgid "app_con_list_all_appointments"
+#~ msgstr "Hier wird eine Auflistung aller Termine angezeigt"
+
+#~ msgid "cm_np_statement"
+#~ msgstr "Einwilligungserklärung"
+
 #~ msgid "cm_evaluate_result_note"
 #~ msgstr ""
 #~ "Durch die folgenden Auswertungen können Sie einige wichtige Aussagen über "

Modified: trunk/waskaweb/i18n/waskaweb.pot
===================================================================
--- trunk/waskaweb/i18n/waskaweb.pot	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/i18n/waskaweb.pot	2008-08-13 13:16:26 UTC (rev 58)
@@ -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-07-01 11:13+0200\n"
+"POT-Creation-Date: 2008-07-08 14:31+0200\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"
@@ -159,7 +159,7 @@
 msgid "adm_edit_standin_success_text"
 msgstr ""
 
-#: waskaweb/lib/evaluation.py:124
+#: waskaweb/lib/evaluation.py:130
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:43
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:64
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:43
@@ -167,7 +167,7 @@
 msgid "cm_eval_summary_header_1"
 msgstr ""
 
-#: waskaweb/lib/evaluation.py:180
+#: waskaweb/lib/evaluation.py:186
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:50
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:50
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:116
@@ -175,7 +175,7 @@
 msgid "cm_eval_summary_header_4"
 msgstr ""
 
-#: waskaweb/lib/evaluation.py:224
+#: waskaweb/lib/evaluation.py:230
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:51
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:51
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:183
@@ -183,32 +183,32 @@
 msgid "cm_eval_summary_header_5"
 msgstr ""
 
-#: waskaweb/lib/evaluation.py:274
+#: waskaweb/lib/evaluation.py:280
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:95
 msgid "cm_eval_header_access_youngster_to_agency"
 msgstr ""
 
-#: waskaweb/lib/evaluation.py:319
+#: waskaweb/lib/evaluation.py:325
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:125
 msgid "cm_eval_head_law_access_agency"
 msgstr ""
 
-#: waskaweb/lib/evaluation.py:370
+#: waskaweb/lib/evaluation.py:376
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_3.mako:65
 msgid "cm_eval_head_where_to_place_youngster"
 msgstr ""
 
-#: waskaweb/lib/evaluation.py:416
+#: waskaweb/lib/evaluation.py:422
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_3.mako:95
 msgid "cm_eval_header_law_changed_after_place"
 msgstr ""
 
-#: waskaweb/lib/evaluation.py:487
+#: waskaweb/lib/evaluation.py:493
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:151
 msgid "cm_eval_header_on_age"
 msgstr ""
 
-#: waskaweb/lib/evaluation.py:552
+#: waskaweb/lib/evaluation.py:558
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:52
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:52
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:213
@@ -216,21 +216,21 @@
 msgid "cm_eval_summary_header_6"
 msgstr ""
 
-#: waskaweb/lib/evaluation.py:616
+#: waskaweb/lib/evaluation.py:622
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:63
 msgid "cm_eval_length_cm"
 msgstr ""
 
-#: waskaweb/lib/evaluation.py:657
+#: waskaweb/lib/evaluation.py:663
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:90
 msgid "cm_eval_avg_length_cm"
 msgstr ""
 
-#: waskaweb/lib/evaluation.py:707
+#: waskaweb/lib/evaluation.py:713
 msgid "cm_eval_header_graduation"
 msgstr ""
 
-#: waskaweb/lib/evaluation.py:757
+#: waskaweb/lib/evaluation.py:763
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:155
 msgid "cm_eval_header_work"
 msgstr ""
@@ -251,47 +251,92 @@
 msgid "cm_rg_aid_overview_table_edit"
 msgstr ""
 
-#: waskaweb/lib/renderer.py:216
+#: waskaweb/lib/renderer.py:214 waskaweb/lib/renderer.py:215
+#: waskaweb/templates/administration/overview_user.mako:43
+#: waskaweb/templates/administration/overview_user.mako:60
+#: waskaweb/templates/administration/overview_usergroups.mako:34
+#: waskaweb/templates/administration/overview_usergroups.mako:43
+#: waskaweb/templates/appointments/appointmentlist.mako:3
+#: waskaweb/templates/casemanagement/appointmentlist.mako:3
+#: waskaweb/templates/casemanagement/caselist.mako:70
+#: waskaweb/templates/casemanagement/caselist.mako:123
+#: waskaweb/templates/casemanagement/reminderlist.mako:4
+#: waskaweb/templates/documents/case_overview.mako:42
+#: waskaweb/templates/documents/case_overview.mako:53
+#: waskaweb/templates/documents/global_overview.mako:39
+#: waskaweb/templates/documents/global_overview.mako:40
+#: waskaweb/templates/documents/global_overview.mako:51
+#: waskaweb/templates/documents/global_overview.mako:52
+#: waskaweb/templates/start/appointmentlist.mako:6
+#: waskaweb/templates/start/appointmentlist.mako:9
+#: waskaweb/templates/start/appointmentlist.mako:13
+#: waskaweb/templates/start/globalappointmentlist.mako:4
+#: waskaweb/templates/start/remindlist.mako:4
+msgid "cm_overview_a_show"
+msgstr ""
+
+#: waskaweb/lib/renderer.py:216 waskaweb/lib/renderer.py:217
+#: waskaweb/templates/administration/overview_user.mako:45
+#: waskaweb/templates/administration/overview_user.mako:62
+#: waskaweb/templates/administration/overview_usergroups.mako:35
+#: waskaweb/templates/administration/overview_usergroups.mako:44
+#: waskaweb/templates/appointments/appointmentlist.mako:5
+#: waskaweb/templates/casemanagement/agencylist.mako:29
+#: waskaweb/templates/casemanagement/agencylist.mako:39
+#: waskaweb/templates/casemanagement/appointmentlist.mako:5
+#: waskaweb/templates/casemanagement/caselist.mako:74
+#: waskaweb/templates/casemanagement/caselist.mako:84
+#: waskaweb/templates/casemanagement/caselist.mako:127
+#: waskaweb/templates/casemanagement/caselist.mako:137
+#: waskaweb/templates/casemanagement/reminderlist.mako:7
+#: waskaweb/templates/documents/case_overview.mako:44
+#: waskaweb/templates/documents/case_overview.mako:55
+#: waskaweb/templates/documents/global_overview.mako:42
+#: waskaweb/templates/documents/global_overview.mako:54
+msgid "cm_overview_a_delete"
+msgstr ""
+
+#: waskaweb/lib/renderer.py:218
 msgid "cm_rg_aid_overview_table_no_offer_found"
 msgstr ""
 
-#: waskaweb/lib/renderer.py:217
+#: waskaweb/lib/renderer.py:219
 msgid "cm_rg_aid_overview_legend_legend"
 msgstr ""
 
-#: waskaweb/lib/renderer.py:218
+#: waskaweb/lib/renderer.py:220
 msgid "cm_rg_aid_overview_legend_bb"
 msgstr ""
 
-#: waskaweb/lib/renderer.py:219
+#: waskaweb/lib/renderer.py:221
 msgid "cm_rg_aid_overview_legend_common_educational_area"
 msgstr ""
 
-#: waskaweb/lib/renderer.py:220
+#: waskaweb/lib/renderer.py:222
 msgid "cm_rg_aid_overview_legend_bv"
 msgstr ""
 
-#: waskaweb/lib/renderer.py:221
+#: waskaweb/lib/renderer.py:223
 msgid "cm_rg_aid_overview_legend_vocational_preparation"
 msgstr ""
 
-#: waskaweb/lib/renderer.py:222
+#: waskaweb/lib/renderer.py:224
 msgid "cm_rg_aid_overview_legend_bq"
 msgstr ""
 
-#: waskaweb/lib/renderer.py:223
+#: waskaweb/lib/renderer.py:225
 msgid "cm_rg_aid_overview_legend_qualifications"
 msgstr ""
 
-#: waskaweb/lib/renderer.py:224
+#: waskaweb/lib/renderer.py:226
 msgid "cm_rg_aid_overview_legend_lb"
 msgstr ""
 
-#: waskaweb/lib/renderer.py:225
+#: waskaweb/lib/renderer.py:227
 msgid "cm_rg_aid_overview_legend_life_skills"
 msgstr ""
 
-#: waskaweb/lib/renderer.py:226
+#: waskaweb/lib/renderer.py:228
 msgid "cm_rg_aid_overview_legend_new_offer"
 msgstr ""
 
@@ -422,31 +467,31 @@
 msgid "menu_cm_link_import"
 msgstr ""
 
-#: waskaweb/templates/main.mako:160
+#: waskaweb/templates/main.mako:163
 msgid "menu_header_adm"
 msgstr ""
 
-#: waskaweb/templates/main.mako:162
+#: waskaweb/templates/main.mako:165
 msgid "menu_adm_link_useroverview"
 msgstr ""
 
-#: waskaweb/templates/main.mako:165
+#: waskaweb/templates/main.mako:168
 msgid "menu_adm_link_usergroupoverview"
 msgstr ""
 
-#: waskaweb/templates/main.mako:168
+#: waskaweb/templates/main.mako:171
 msgid "menu_adm_link_showsettings"
 msgstr ""
 
-#: waskaweb/templates/main.mako:181
+#: waskaweb/templates/main.mako:184
 msgid "main_formular_input_error"
 msgstr ""
 
-#: waskaweb/templates/main.mako:194
+#: waskaweb/templates/main.mako:197
 msgid "footer_title"
 msgstr ""
 
-#: waskaweb/templates/main.mako:194
+#: waskaweb/templates/main.mako:197
 msgid "footer_version"
 msgstr ""
 
@@ -873,49 +918,6 @@
 msgid "adm_overview_tbl_header_actions"
 msgstr ""
 
-#: waskaweb/templates/administration/overview_user.mako:43
-#: waskaweb/templates/administration/overview_user.mako:60
-#: waskaweb/templates/administration/overview_usergroups.mako:34
-#: waskaweb/templates/administration/overview_usergroups.mako:43
-#: waskaweb/templates/appointments/appointmentlist.mako:3
-#: waskaweb/templates/casemanagement/appointmentlist.mako:3
-#: waskaweb/templates/casemanagement/caselist.mako:70
-#: waskaweb/templates/casemanagement/caselist.mako:123
-#: waskaweb/templates/casemanagement/reminderlist.mako:4
-#: waskaweb/templates/documents/case_overview.mako:42
-#: waskaweb/templates/documents/case_overview.mako:53
-#: waskaweb/templates/documents/global_overview.mako:39
-#: waskaweb/templates/documents/global_overview.mako:40
-#: waskaweb/templates/documents/global_overview.mako:51
-#: waskaweb/templates/documents/global_overview.mako:52
-#: waskaweb/templates/start/appointmentlist.mako:6
-#: waskaweb/templates/start/appointmentlist.mako:9
-#: waskaweb/templates/start/appointmentlist.mako:13
-#: waskaweb/templates/start/globalappointmentlist.mako:4
-#: waskaweb/templates/start/remindlist.mako:4
-msgid "cm_overview_a_show"
-msgstr ""
-
-#: waskaweb/templates/administration/overview_user.mako:45
-#: waskaweb/templates/administration/overview_user.mako:62
-#: waskaweb/templates/administration/overview_usergroups.mako:35
-#: waskaweb/templates/administration/overview_usergroups.mako:44
-#: waskaweb/templates/appointments/appointmentlist.mako:5
-#: waskaweb/templates/casemanagement/agencylist.mako:29
-#: waskaweb/templates/casemanagement/agencylist.mako:39
-#: waskaweb/templates/casemanagement/appointmentlist.mako:5
-#: waskaweb/templates/casemanagement/caselist.mako:74
-#: waskaweb/templates/casemanagement/caselist.mako:84
-#: waskaweb/templates/casemanagement/caselist.mako:127
-#: waskaweb/templates/casemanagement/caselist.mako:137
-#: waskaweb/templates/casemanagement/reminderlist.mako:7
-#: waskaweb/templates/documents/case_overview.mako:44
-#: waskaweb/templates/documents/case_overview.mako:55
-#: waskaweb/templates/documents/global_overview.mako:42
-#: waskaweb/templates/documents/global_overview.mako:54
-msgid "cm_overview_a_delete"
-msgstr ""
-
 #: waskaweb/templates/administration/overview_usergroups.mako:13
 msgid "adm_header_usergroup_overview"
 msgstr ""
@@ -1291,10 +1293,6 @@
 msgid "app_actions_link_newappointment"
 msgstr ""
 
-#: waskaweb/templates/appointments/overview.mako:20
-msgid "app_con_list_all_appointments"
-msgstr ""
-
 #: waskaweb/templates/appointments/overview_body.mako:5
 #: waskaweb/templates/appointments/remindlist_body.mako:5
 #: waskaweb/templates/start/globalappointmentlist.mako:9
@@ -1421,14 +1419,10 @@
 #: waskaweb/templates/casemanagement/dialogs/success_delete_cm.mako:5
 #: waskaweb/templates/casemanagement/dialogs/success_markdelete.mako:5
 #: waskaweb/templates/casemanagement/dialogs/success_restore.mako:5
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0.mako:6
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0_month.mako:6
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0_year.mako:6
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:6
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:6
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_3.mako:6
 #: waskaweb/templates/casemanagement/static_form/statement.mako:5
-#: waskaweb/templates/casemanagement/static_form/statement_print.mako:5
 #: waskaweb/templates/statement/dialogs/missing_statement.mako:5
 msgid "cm_np_root"
 msgstr ""
@@ -1497,7 +1491,7 @@
 #: 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/logbook/edit.mako:10 waskaweb/templates/logbook/new.mako:10
+#: waskaweb/templates/logbook/edit.mako:11 waskaweb/templates/logbook/new.mako:11
 #: waskaweb/templates/logbook/overview.mako:6
 #: waskaweb/templates/logbook/show.mako:5
 #: waskaweb/templates/logbook/dialogs/confirm_delete_logbook_entry.mako:5
@@ -1703,9 +1697,6 @@
 msgstr ""
 
 #: waskaweb/templates/casemanagement/evaluation.mako:5
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0.mako:7
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0_month.mako:7
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0_year.mako:7
 msgid "cm_np_evaluate"
 msgstr ""
 
@@ -2031,18 +2022,12 @@
 msgid "cm_np_restore_success"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0.mako:8
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0_month.mako:8
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0_year.mako:8
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:7
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:7
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_3.mako:7
 msgid "cm_np_evaluate_result"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0.mako:10
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0_month.mako:10
-#: waskaweb/templates/casemanagement/evaluation/evaluation_result_0_year.mako:10
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako:9
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako:9
 #: waskaweb/templates/casemanagement/evaluation/evaluation_result_3.mako:9
@@ -2272,10 +2257,6 @@
 msgid "cm_eval_table_law_change"
 msgstr ""
 
-#: waskaweb/templates/casemanagement/static_form/statement_print.mako:6
-msgid "cm_np_statement"
-msgstr ""
-
 #: waskaweb/templates/dialogs/alert.mako:3
 msgid "dialog_header_alert"
 msgstr ""

Modified: trunk/waskaweb/lib/evaluation.py
===================================================================
--- trunk/waskaweb/lib/evaluation.py	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/lib/evaluation.py	2008-08-13 13:16:26 UTC (rev 58)
@@ -17,8 +17,9 @@
 
 class Evaluation:
     def __init__(self, compressed_ids=None):
-        self.total = 0;
-        self.total_cm = 0;
+        self.total_valid = 0;
+        self.total_valid_cm = 0;
+        self.allcases = 0;
         self.compressed_ids = compressed_ids # addition where statement
                                              # to define a subset of cases
         conn, c1 = None, None
@@ -27,19 +28,29 @@
                 conn = db.getConnection()
                 c1 = conn.cursor()
                 c1.execute("""SELECT count(id) from master_tbl_eval_incm_view m WHERE %s""" % self.where_clause(self.compressed_ids))
-                self.total_cm = c1.fetchone()[0]
+                self.total_valid_cm = c1.fetchone()[0]
                 # Num of cases which are finished (aborted or regular ending)
                 c1.execute("""SELECT count(id) from master_tbl_eval_incm_view m where art_beendigung <> -1 AND %s""" % self.where_clause(self.compressed_ids))
-                self.total_cmfinished = c1.fetchone()[0]
+                self.total_valid_cmfinished = c1.fetchone()[0]
                 c1.close(); c1 = None
                 c1 = conn.cursor()
                 c1.execute("""SELECT count(id) from master_tbl_eval_total_view m WHERE %s""" % self.where_clause(self.compressed_ids))
-                self.total = c1.fetchone()[0]
+                self.total_valid = c1.fetchone()[0]
+                c1.close(); c1 = None
+                c1 = conn.cursor()
+                c1.execute("""SELECT count(id) from master_tbl_eval_total_view m""")
+                self.allcases = c1.fetchone()[0]
             finally:
                 db.recycleConnection(conn, c1)
         except:
             print >> sys.stderr, "Error! Could not get connection in evaluation"
 
+    def getTotal(self):
+        return self.allcases
+
+    def getTotalValid(self):
+        return self.total_valid
+
     def where_clause(self, ids, field="id"):
         if c.isEvaluationServer:
             return self._build_eval_where_clause(ids)
@@ -52,7 +63,7 @@
         form_defaults = session.get('CASE_OVERVIEW_SEARCHOPTIONS') or {}
         search_options = parseSearchOptions(form_defaults)
         search_str = ";".join(search_options)
-        search, options, states = dummy_search._parse_search_str(search_str)
+        search, options, states, bad_types = dummy_search._parse_search_str(search_str)
 
         gender = options.get('gender') and "m.geschlecht = %s" % options.get('gender') or "TRUE"
         #cm-state
@@ -74,7 +85,13 @@
         fields = {'start_field': interval_start_field, 'start_date': interval_start_date, 'end_field': interval_end_field, 'end_date': interval_end_date} 
         time_interval = "(coalesce(%(start_field)s, '1970-01-01'::date) <= '%(end_date)s'::date AND coalesce(%(start_field)s, '1970-01-01'::date) <= coalesce(%(end_field)s, now()) AND coalesce(%(end_field)s, now()) >= '%(start_date)s'::date)" % fields
 
-        where = "AND ".join([fkz, '%s ' % gender, '%s ' % cm, '%s ' % time_interval])
+        # Indicator for inconsistent cases (only for evaluation server)
+        if c.isEvalutaionServer:
+            valid_data = "freie_dokumentation_abschlussbewertung IS NOT NULL"
+        else:
+            valid_data = "TRUE"
+
+        where = "AND ".join([fkz, '%s ' % gender, '%s ' % cm, '%s ' % time_interval, '%s ' % valid_data])
         return where
 
     def perform(self):
@@ -108,24 +125,24 @@
 
     def perform(self):
         try:
-            if self.total == 0: divisor = 1
-            else: divisor = self.total
+            if self.total_valid == 0: divisor = 1
+            else: divisor = self.total_valid
             self.cm_percent = "%s" % h.formatNumber(
-                float(self.total_cm)/float(divisor)*100)
+                float(self.total_valid_cm)/float(divisor)*100)
             self.ber_percent = "%s" % h.formatNumber(
-                float(self.total-self.total_cm)/float(divisor)*100)
+                float(self.total_valid-self.total_valid_cm)/float(divisor)*100)
         except:
             print >> sys.stderr, "No results for eval 1"
             self.percent = 0;
-        return (self.total, (self.total-self.total_cm), self.ber_percent, self.total_cm, self.cm_percent) 
+        return (self.total_valid, (self.total_valid-self.total_valid_cm), self.ber_percent, self.total_valid_cm, self.cm_percent) 
 
     def doExport(self, f):
         self.perform()
         f.write(u"#%s (Auswertung: alle Jugendliche)\r\n" % _('cm_eval_summary_header_1'))
         f.write(u"Jugendliche;Anzahl;Prozent\r\n")
-        f.write(u"Gesamt Jugendliche;%s;100%%\r\n" % (self.total))
-        f.write(u"Davon Beratungskunden;%s;%s%%\r\n" % (self.total-self.total_cm, self.ber_percent))
-        f.write(u"Davon in das CM übernommen;%s;%s%%\r\n" %(self.total_cm, self.cm_percent))
+        f.write(u"Gesamt Jugendliche;%s;100%%\r\n" % (self.total_valid))
+        f.write(u"Davon Beratungskunden;%s;%s%%\r\n" % (self.total_valid-self.total_valid_cm, self.ber_percent))
+        f.write(u"Davon in das CM übernommen;%s;%s%%\r\n" %(self.total_valid_cm, self.cm_percent))
 
 class Evaluation_2(Evaluation):
     def __init__(self, compressed_ids):
@@ -157,10 +174,10 @@
                         self.i[0] += g[0]
                     else:
                         self.u[0] += g[0]
-                self.total = self.m[0]+self.w[0]+self.i[0]+self.u[0]
-                if self.total > 0:
-                    if self.total == 0: divisor = 1
-                    else: divisor = self.total_cm
+                self.total_valid = self.m[0]+self.w[0]+self.i[0]+self.u[0]
+                if self.total_valid > 0:
+                    if self.total_valid == 0: divisor = 1
+                    else: divisor = self.total_valid_cm
                     self.m[1] = "%s" % h.formatNumber(
                         float(self.m[0])/float(divisor)*100)
                     self.w[1] = "%s" % h.formatNumber(
@@ -173,7 +190,7 @@
                 db.recycleConnection(conn, cur)
         except:
             print >> sys.stderr, "No result for eval 2"
-        return (self.total,self.m,self.w,self.i,self.u)
+        return (self.total_valid,self.m,self.w,self.i,self.u)
 
     def doExport(self, f):
         self.perform()
@@ -207,8 +224,8 @@
                     else:
                         r[2][0] += 1
 
-                if self.total_cm == 0: divisor = 1
-                else: divisor = self.total_cm
+                if self.total_valid_cm == 0: divisor = 1
+                else: divisor = self.total_valid_cm
                 r[0][1] = "%s" % h.formatNumber(float(r[0][0])/float(divisor)*100)
                 r[1][1] = "%s" % h.formatNumber(float(r[1][0])/float(divisor)*100)
                 r[2][1] = "%s" % h.formatNumber(float(r[2][0])/float(divisor)*100)
@@ -248,8 +265,8 @@
                 c1 = conn.cursor()
                 c1.execute(sql)
 
-                if self.total == 0: divisor = 1
-                else: divisor = self.total
+                if self.total_valid == 0: divisor = 1
+                else: divisor = self.total_valid
 
                 for r in c1.fetchall():
                     result[r[0]] = []
@@ -295,8 +312,8 @@
                 conn = db.getConnection()
                 c1 = conn.cursor()
                 c1.execute(sql)
-                if self.total == 0: divisor = 1
-                else: divisor = self.total
+                if self.total_valid == 0: divisor = 1
+                else: divisor = self.total_valid
                 for r in c1.fetchall():
                     result[r[0]] = []
                     try:
@@ -341,8 +358,8 @@
                 conn = db.getConnection()
                 c1 = conn.cursor()
                 c1.execute(sql)
-                if self.total == 0: divisor = 1
-                else: divisor = self.total_cmfinished
+                if self.total_valid == 0: divisor = 1
+                else: divisor = self.total_valid_cmfinished
                 for r in c1.fetchall():
                     result[r[0]] = []
                     try:
@@ -392,8 +409,8 @@
                 conn = db.getConnection()
                 c1 = conn.cursor()
                 c1.execute(sql)
-                if self.total == 0: divisor = 1
-                else: divisor = self.total_cmfinished
+                if self.total_valid == 0: divisor = 1
+                else: divisor = self.total_valid_cmfinished
                 for r in c1.fetchall():
                     result[r[0]] = []
                     try:
@@ -440,8 +457,8 @@
                 c1.execute(
                     """select date_part('year', age(geburtsdatum::timestamp)) 
                        from master_tbl_eval_incm_view m WHERE %s""" % self.where_clause(self.compressed_ids))
-                if self.total == 0: divisor = 1
-                else: divisor = self.total_cm
+                if self.total_valid == 0: divisor = 1
+                else: divisor = self.total_valid_cm
                 for r in c1.fetchall():
                     if 0 < r[0] < 14:
                         result[0][1] += 1
@@ -527,8 +544,8 @@
                 c1.close(); c1 = None
                 total = 0
                 # Gesamtanzahl der Maßnahmen berechnen
-                if self.total_cm == 0: divisor = 1
-                else: divisor = self.total_cm
+                if self.total_valid_cm == 0: divisor = 1
+                else: divisor = self.total_valid_cm
                 total = divisor
                 #for r in result: total += r[1]
                 result[0][2] = "%s" % h.formatNumber(
@@ -574,8 +591,8 @@
             GROUP BY zeitraum_fallmanagement
             ORDER BY zeitraum_fallmanagement
         """  % self.where_clause(self.compressed_ids, 'm.id') 
-        if self.total_cm == 0: divisor = 1
-        else: divisor = self.total_cm
+        if self.total_valid_cm == 0: divisor = 1
+        else: divisor = self.total_valid_cm
         try:
             conn, c1, query_result = None, None, None
             try:
@@ -680,8 +697,8 @@
                 c1 = conn.cursor()
                 c1.execute(sql)
 
-                if self.total == 0: divisor = 1
-                else: divisor = self.total
+                if self.total_valid == 0: divisor = 1
+                else: divisor = self.total_valid
 
                 for r in c1.fetchall():
                     result[r[0]] = []
@@ -730,8 +747,8 @@
                 c1 = conn.cursor()
                 c1.execute(sql)
 
-                if self.total == 0: divisor = 1
-                else: divisor = self.total
+                if self.total_valid == 0: divisor = 1
+                else: divisor = self.total_valid
 
                 for r in c1.fetchall():
                     result[r[0]] = []

Modified: trunk/waskaweb/lib/filters.py
===================================================================
--- trunk/waskaweb/lib/filters.py	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/lib/filters.py	2008-08-13 13:16:26 UTC (rev 58)
@@ -8,7 +8,7 @@
 from cgi import escape
 
 def no_none(text):
-    if text == 'None' or text == u'None':
+    if text == 'None' or text == u'None' or not text:
         return ''
     return text
 

Modified: trunk/waskaweb/lib/renderer.py
===================================================================
--- trunk/waskaweb/lib/renderer.py	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/lib/renderer.py	2008-08-13 13:16:26 UTC (rev 58)
@@ -211,8 +211,10 @@
         s_act      = _('cm_rg_aid_overview_table_actions')
         #s_show     = _('cm_rg_aid_overview_table_show')
         s_edit     = _('cm_rg_aid_overview_table_edit')
-        s_show     = '''<img src="/images/icons/view_red.gif" border="0" alt="${_('cm_overview_a_show')}" title="${_('cm_overview_a_show')}">''' 
-        s_delete   = '''<img src="/images/icons/delete_red.gif" border="0" alt="${_('cm_overview_a_delete')}" title="${_('cm_overview_a_delete')}">'''  
+        s_show     = '<img src="/images/icons/view_red.gif" border="0" alt="' + _('cm_overview_a_show') + \
+            '" title="' + _('cm_overview_a_show') + '">'
+        s_delete   = '<img src="/images/icons/delete_red.gif" border="0" alt="' + _('cm_overview_a_delete') + \
+            '" title="' + _('cm_overview_a_delete') + '">'
         s_notfound = _('cm_rg_aid_overview_table_no_offer_found')
         s_legend   = _('cm_rg_aid_overview_legend_legend')
         s_bb       = _('cm_rg_aid_overview_legend_bb')

Modified: trunk/waskaweb/lib/search.py
===================================================================
--- trunk/waskaweb/lib/search.py	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/lib/search.py	2008-08-13 13:16:26 UTC (rev 58)
@@ -14,7 +14,7 @@
 
 SAVE_SEARCH = re.compile(r'[^\w:;\-\. ]', re.UNICODE)
 
-VALID_OPTIONS = ['editor', 'own', 'standin', 'state', 'sort_field', 'sort_order', 'interval_start_date', 'interval_end_date', 'interval_start_field', 'interval_end_field', 'gender', 'cm', 'branch', 'fkz']
+VALID_OPTIONS = ['editor', 'own', 'standin', 'state', 'sort_field', 'sort_order', 'interval_start_date', 'interval_end_date', 'interval_start_field', 'interval_end_field', 'gender', 'cm', 'branch', 'fkz', 'bad']
 
 SEARCH_CASE_SQL = \
 """ SELECT
@@ -51,8 +51,16 @@
       AND %s
       AND %s
       AND %s
+      AND %s
     ORDER BY %s %s"""
 
+BAD_TYPE_QUERY = {'1': 'm.erstgespraech is NULL', 
+                  '2': 'm.erstgespraech::timestamp > now()',
+                  '3': 'm.erstgespraech::timestamp > m.beendigung_5::timestamp',
+                  '4': 'm.beendigung_5::timestamp > now()',
+                  '5': '(m.art_beendigung <> -1 AND m.beendigung_5 is NULL)',
+                  '6': '(m.art_beendigung = -1 AND m.beendigung_5 is not NULL)'}
+
 SEARCH_AGENCY_SQL = \
 """select count(m.id) as anzahl,
 m.fkz,
@@ -75,6 +83,7 @@
         # implement some searchengine here
         search = []
         allowed_states = [-1]
+        bad_types= []
         options = {}
 
         if s:
@@ -87,15 +96,17 @@
                         if key in VALID_OPTIONS:
                             if key == 'state':
                                 allowed_states.append(int(value))
+                            if key == 'bad':
+                                bad_types.append(int(value))
                             else:
                                 options[key] = value
                     except ValueError:
                         print >> sys.stderr, "Found invalid search syntax in options"
                 else:
                     search.append(option)
-        return search, options, allowed_states
+        return search, options, allowed_states, bad_types
 
-    def _build_sql(self, search, options, allowed_states):
+    def _build_sql(self, search, options, allowed_states, bad_types):
         pass
 
     def queryDB(self, sql, fields):
@@ -116,8 +127,8 @@
 
     def perform(self, search_str):
         '''Returns the result set of a search based on the search string'''
-        search, options, states = self._parse_search_str(search_str)
-        sql, fields = self._build_sql(search, options, states)
+        search, options, states, bad_types = self._parse_search_str(search_str)
+        sql, fields = self._build_sql(search, options, states, bad_types)
         result = self.queryDB(sql, fields)
         return result
 
@@ -125,7 +136,7 @@
     def __init__(self):
         Search.__init__(self)
 
-    def _build_sql(self, search, options, allowed_states):
+    def _build_sql(self, search, options, allowed_states, bad_types):
         fields = {'needle': ""}
         gender = options.get('gender') and "m.geschlecht = %s" % options.get('gender') or "TRUE"
         #cm-state
@@ -157,7 +168,7 @@
     def __init__(self):
         Search.__init__(self)
 
-    def _build_sql(self, search, options, allowed_states):
+    def _build_sql(self, search, options, allowed_states, bad_types):
         fields = {'needle': ""}
         # Show all cases regardless if the privacy statement has been declined
         #ee =  h.hasRole(['cm_ka']) and "m.einverstaendniserklaerung <> 0" or "TRUE"
@@ -178,15 +189,27 @@
         branch = options.get('branch') and "b.filiale = '%s'" % options.get('branch') or "TRUE"
         fkz = options.get('fkz') and "m.fkz = '%s'" % options.get('fkz') or "TRUE"
 
+        #Identify bad cases
+        bad_query = []
+        for type_id in bad_types:
+            query = BAD_TYPE_QUERY.get(str(type_id))
+            if query:
+                bad_query.append(query)
+        if len(bad_query) > 0:
+            bad = "(%s)" % " OR ".join(bad_query)
+        else:
+            bad = 'TRUE'
+
         #Build timeinterval
         time_interval = "TRUE"
-        interval_start_field = options.get('interval_start_field', "erstgespraech")
-        interval_end_field = options.get('interval_end_field', "beendigung_5")
-        interval_start_date = options.get('interval_start_date',"1970-01-01")
-        d = datetime.today()
-        interval_end_date = options.get('interval_end_date', d.strftime('%Y-%m-%d'))
-        fields = {'start_field': interval_start_field, 'start_date': interval_start_date, 'end_field': interval_end_field, 'end_date': interval_end_date} 
-        time_interval = "(coalesce(%(start_field)s, '1970-01-01'::date) <= '%(end_date)s'::date AND coalesce(%(start_field)s, '1970-01-01'::date) <= coalesce(%(end_field)s, now()) AND coalesce(%(end_field)s, now()) >= '%(start_date)s'::date)" % fields
+        if options.get('interval_start_date') and options.get('interval_end_date'):
+            interval_start_field = options.get('interval_start_field', "erstgespraech")
+            interval_end_field = options.get('interval_end_field', "beendigung_5")
+            interval_start_date = options.get('interval_start_date',"1970-01-01")
+            d = datetime.today()
+            interval_end_date = options.get('interval_end_date', d.strftime('%Y-%m-%d'))
+            fields = {'start_field': interval_start_field, 'start_date': interval_start_date, 'end_field': interval_end_field, 'end_date': interval_end_date} 
+            time_interval = "(coalesce(%(start_field)s, '1970-01-01'::date) <= '%(end_date)s'::date AND coalesce(%(start_field)s, '1970-01-01'::date) <= coalesce(%(end_field)s, now()) AND coalesce(%(end_field)s, now()) >= '%(start_date)s'::date)" % fields
 
 
         #cm-state
@@ -201,7 +224,7 @@
 
 
         fields['needle'] = " ".join(search) 
-        SQL = SEARCH_CASE_SQL % (",".join([str(x) for x in allowed_states]), ee, allowed_viewer, editor, gender, time_interval, cm, branch, fkz, sort_field, sort_order) 
+        SQL = SEARCH_CASE_SQL % (",".join([str(x) for x in allowed_states]), ee, allowed_viewer, editor, gender, time_interval, cm, branch, fkz, bad, sort_field, sort_order) 
         return (SQL, fields)
 
 # vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8:

Modified: trunk/waskaweb/lib/validators.py
===================================================================
--- trunk/waskaweb/lib/validators.py	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/lib/validators.py	2008-08-13 13:16:26 UTC (rev 58)
@@ -161,13 +161,22 @@
     def validate_python(self, value, state):
         try:
             conn, cur = None, None
-            fields = {'name': value, 'id': state.groupid}
+            if state:
+                fields = {'name': value, 'id': state.groupid}
+            else:
+                fields = {'name': value, 'id': None}
             try:
                 conn = db.getConnection()
                 cur  = conn.cursor()
                 cur.execute("SELECT name FROM ka_benutzergruppe_tbl_view WHERE id = %(id)s", fields)
                 result = cur.fetchone()
-                if result[0] != value:
+
+                if result:
+                    newname = result[0]
+                else: 
+                    newname = result
+
+                if newname != value:
                     cur.execute("SELECT id FROM ka_benutzergruppe_tbl_view WHERE name = %(name)s", fields)
                     result = cur.fetchone()
                     if result:
@@ -315,26 +324,30 @@
 class StringTooLong(formencode.validators.FancyValidator):
 
     messages = {
-        'invalid_length': u'Bitte geben Sie einen Text mit maximal 80 Zeichen an.',
+        'invalid_length': u'Bitte geben Sie einen Text mit maximal %(max)i Zeichen an.',
         }
 
+    def __init__(self, max=80):
+        self.maxlength = max
+
     def _to_python(self, value, state):
         return value.strip()
 
     def validate_python(self, value, state):
-        if not value is None and len(value) > 80:
-            raise formencode.Invalid(self.message("invalid_length", state), value, state)
+        if not value is None and len(value) > self.maxlength:
+            raise formencode.Invalid(self.message("invalid_length", state, max=self.maxlength), value, state)
 
 class CreateAppointmentForm(BaseFormValidator):
     start_date = formencode.All(formencode.validators.String(not_empty=True), DateCheck())
     start_time = formencode.All(formencode.validators.String(not_empty=True), TimeCheck())
     end_date   = DateCheck()
     end_time   = TimeCheck()
-    title      = formencode.validators.String(not_empty=True)
+    title      = formencode.All(formencode.validators.String(not_empty=True), StringTooLong(128))
 
 class CreateLogbookForm(BaseFormValidator):
     date         = DateCheck(not_empty=True)
     time         = TimeCheck(not_empty=True)
+    duration     = formencode.validators.Int()
     short_notice = StringTooLong()
 
 class EditLogbookForm(CreateLogbookForm):

Modified: trunk/waskaweb/lib/xmlimport.py
===================================================================
--- trunk/waskaweb/lib/xmlimport.py	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/lib/xmlimport.py	2008-08-13 13:16:26 UTC (rev 58)
@@ -60,8 +60,8 @@
         "kontaktdaten_weitere_institutionen": _text_converter,
         "vorname_1": _text_converter,
         "name_1": _text_converter,
+        "geburtsdatum": _date_converter,
         "geschlecht": _choice_converter,
-        "geburtsdatum": _date_converter,
         "familienstand": _choice_converter,
         "strasse": _text_converter,
         "plz": _text_converter,
@@ -106,6 +106,7 @@
         "arzt_gutachten_psychisch": _bool_converter,
         "psychische_beeintraechtigungen": _choice_converter,
         "psychische_beeintraechtigungen_text": _text_converter,
+        "anerkannte_behinderung": _choice_converter,
         "mutter_2": _bool_converter,
         "vater_2": _bool_converter,
         "grosseltern": _bool_converter,
@@ -183,6 +184,8 @@
         "anzahl_arbeitslosigkeit": _int_converter,
         "dauer_nach_letzter_beschaeftigung": _int_converter,
         "dauer_insgesamt": _int_converter,
+        "bezug_alg1": _choice_converter,
+        "bezug_alg2": _choice_converter,
         "wehrpflicht_zivildienst_freiwilligenjahr_1": _choice_converter,
         "art_des_dienstes": _choice_converter,
         "dauer_2": _int_converter,
@@ -208,6 +211,7 @@
         "anzahl_der_stunden": _int_converter,
         "zeitraum_fallmanagement": _int_converter,
         "beendigung_5": _date_converter,
+        "vorzeitige_beendigung": _choice_converter,
         "art_beendigung": _choice_converter,
         "abbruch_durch": _choice_converter,
         "gruende_abbruch": _choice_converter,

Modified: trunk/waskaweb/model/case.py
===================================================================
--- trunk/waskaweb/model/case.py	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/model/case.py	2008-08-13 13:16:26 UTC (rev 58)
@@ -598,6 +598,10 @@
 
 class CaseDigest:
     def __init__(self, id):
+        self.resetValues(id)
+        self._loadFromDB(id)
+
+    def resetValues(self, id):
         self.id              = id
         self.first_name      = '' 
         self.last_name       = '' 
@@ -619,7 +623,6 @@
         self.parent_mobiletel   = ''
         self.parent_email       = ''
 
-        self._loadFromDB(id)
 
     def hasSignedPrivacyStatement(self):
         return self.statement
@@ -843,12 +846,15 @@
             db.recycleConnection(con, cur)
         return id 
 
-    def getDigest(self):
+    def getDigest(self, empty=False):
         '''Returns the digest of the case'''
         if not self.digest is None: return self.digest
         try:
             # Create digest
             self.digest = CaseDigest(self.id)
+            # This is Ürkan-Mode
+            if empty:
+                self.digest.resetValues(self.id)
             return self.digest
         except:
             self.digest = None

Modified: trunk/waskaweb/model/repeatgroup.py
===================================================================
--- trunk/waskaweb/model/repeatgroup.py	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/model/repeatgroup.py	2008-08-13 13:16:26 UTC (rev 58)
@@ -39,6 +39,9 @@
 RG_QUALI_DB_TBL  = "rg_angebote_berufliche_qualifizierung_tbl_view"
 RG_LEBEN_DB_TBL  = "rg_angebote_lebensbewaeltigung_tbl_view"
 
+class NotFoundError(StandardError):
+    pass
+
 class AidList:
     def __init__(self, case_id):
         self.aid_list = []
@@ -83,10 +86,14 @@
 class AidObjectFactory:
     
     def load(self, type_id, aid_id):
-        if type_id == 0: return AidObject_BB(aid_id) 
-        if type_id == 1: return AidObject_BV(aid_id) 
-        if type_id == 2: return AidObject_BQ(aid_id) 
-        if type_id == 3: return AidObject_LB(aid_id)
+        try:
+            if type_id == 0: return AidObject_BB(aid_id) 
+            if type_id == 1: return AidObject_BV(aid_id) 
+            if type_id == 2: return AidObject_BQ(aid_id) 
+            if type_id == 3: return AidObject_LB(aid_id)
+        except NotFoundError:
+            pass
+
         return None
 
     def create(self, type_id):
@@ -112,6 +119,7 @@
 
     def load(self, id):
         r = self._load(id)
+        if r is None: raise NotFoundError()
         try:
             self.id          = r[0] 
             self.aid_form    = unicode(str(r[1]), 'utf-8') # Angebotsform

Modified: trunk/waskaweb/model/semantic.py
===================================================================
--- trunk/waskaweb/model/semantic.py	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/model/semantic.py	2008-08-13 13:16:26 UTC (rev 58)
@@ -1,4 +1,4 @@
-# -*- coding: latin1 -*-
+# -*- coding: utf-8 -*-
 #
 # Copyright (c) 2007 by Intevation GmbH
 # Authors:
@@ -90,11 +90,11 @@
 
             if value < minv:
                 raise SematicError(
-                    "%d ist kleiner als %d." % (value, minv))
+                    u"%d ist kleiner als der zulässige Minimalwert %d." % (value, minv))
 
             if value > maxv:
                 raise SematicError(
-                    "%d is groesser als %d." % (value, maxv))
+                    u"%d ist größer als der zulässige Maximalwert %d." % (value, maxv))
         except ValueError:
             raise SematicError(
                 "Check constraints for '%s'" % nc.getName())
@@ -127,7 +127,7 @@
             try: 
                 return date(year, month, day)
             except ValueError:
-                raise SematicError("'%s' ist kein gueltiges Datum." % value)
+                raise SematicError(u"'%s' ist kein gültiges Datum." % value)
 
         raise SematicError("'%s' ist kein Datum." % value)
 
@@ -188,7 +188,7 @@
                             v = _checkBool(i, value)
                             if not v is None: return v
 
-        raise SematicError("'%s' ist kein valider Wert fuer '%s'" % (
+        raise SematicError(u"'%s' ist kein valider Wert für '%s'" % (
             value, nc.getName()))
 
 class RadioChecker(ValueChecker):

Modified: trunk/waskaweb/model/statement.py
===================================================================
--- trunk/waskaweb/model/statement.py	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/model/statement.py	2008-08-13 13:16:26 UTC (rev 58)
@@ -135,6 +135,7 @@
         out.append(u'<th width="100">Von</th>')
         out.append(u'<th width="100">Bis</th>')
         out.append(u'<th>Institution</th>')
+        out.append(u'<th>Art der Unterstützung</th>')
         out.append(u'<th>Angebotsform</th>')
         out.append(u"</tr>")
         if len(rg_list) <= 0:
@@ -142,10 +143,11 @@
         else:
             for rg in rg_list:
                 out.append(u"<tr>")
-                out.append(u"<td>%s</td>" % rg.start_date)
-                out.append(u"<td>%s</td>" % rg.end_date)
-                out.append(u"<td>%s</td>" % rg.institution)
-                out.append(u"<td>%s</td>" % rg.type)
+                out.append(u"<td>%s</td>" % F.NA(rg.start_date))
+                out.append(u"<td>%s</td>" % F.NA(rg.end_date))
+                out.append(u"<td>%s</td>" % F.NA(rg.institution))
+                out.append(u"<td>%s</td>" % F.NA(rg.type))
+                out.append(u"<td>%s</td>" % F.NA(rg.category))
                 out.append(u"</tr>")
         out.append(u"</table>")
         out.append(u"""<div class="legend">

Modified: trunk/waskaweb/templates/appointments/edit_body.mako
===================================================================
--- trunk/waskaweb/templates/appointments/edit_body.mako	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/templates/appointments/edit_body.mako	2008-08-13 13:16:26 UTC (rev 58)
@@ -57,10 +57,10 @@
   <div class="w100">
     % if c.form_errors.get('title'):
       <label for="title" class="error_font">${_('app_form_title')}</label><br>
-      <input type="text" class="field error_box" id="title" name="title">
+      <input type="text" class="field error_box" id="title" name="title" maxlength="128">
     % else:
       <label for="title">${_('app_form_title')}</label><br>
-      <input type="text" class="field" id="title" name="title">
+      <input type="text" class="field" id="title" name="title" maxlength="128">
     % endif
   </div>
   <div class="w100">

Modified: trunk/waskaweb/templates/casemanagement/agencylist.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/agencylist.mako	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/templates/casemanagement/agencylist.mako	2008-08-13 13:16:26 UTC (rev 58)
@@ -1,5 +1,8 @@
 ## -*- coding: utf-8 -*-
 <%! import waskaweb.lib.filters as F %>
+<div>
+  Es wurden ${c.count_all} Fallakten gefunden
+</div>
 <table>
   <tr>
     <th class="table_header_h table_checkbox">&nbsp;</th>

Modified: trunk/waskaweb/templates/casemanagement/caselist.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/caselist.mako	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/templates/casemanagement/caselist.mako	2008-08-13 13:16:26 UTC (rev 58)
@@ -35,9 +35,17 @@
     % if idset:
       <tr>
         <td><input type="checkbox" name="case_id" value="${case.id}"></td>
-        <td>${case.knr       | F.NA, h}</td>
-        <td>${h.getCaseShort(case.last_name, 15) | F.NA, h}</td>
-        <td>${h.getCaseShort(case.first_name, 15) | F.NA, h}</td>
+        ## If the case is marked for anonymisation do not show the
+        ## first and lastname and the customer number.
+        % if case.getState().getState() == 4 and h.hasRole('cm_ka'):
+          <td>${h.getCaseShort('', 15) | F.NA, h}</td>
+          <td>${h.getCaseShort('', 15) | F.NA, h}</td>
+          <td>${h.getCaseShort('', 15) | F.NA, h}</td>
+        % else:
+          <td>${case.knr       | F.NA, h}</td>
+          <td>${h.getCaseShort(case.last_name, 15) | F.NA, h}</td>
+          <td>${h.getCaseShort(case.first_name, 15) | F.NA, h}</td>
+        % endif
         % if h.hasRole(['admin_ka']):
           <td>
             ${case.getEditor().last_name | F.NA, h}, ${case.getEditor().first_name[0] | F.NA, h}.
@@ -66,7 +74,7 @@
           % endif
         </td>
         <td>
-          % if case.getState().getState() != 5:
+          % if case.getState().getState() not in (4,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']):
@@ -80,7 +88,7 @@
               <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/markForAnonymize/${case.id}/0/"><img src="/images/icons/anonym_red.gif" border="0" alt="${_('cm_overview_a_anonymize')}" title="${_('cm_overview_a_anonymize')}"></a> 
+            <a href="/case/markForAnonymizeFromOverview/${case.id}/0/"><img src="/images/icons/anonym_red.gif" border="0" alt="${_('cm_overview_a_anonymize')}" title="${_('cm_overview_a_anonymize')}"></a> 
             <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>
@@ -88,9 +96,17 @@
     % else:
       <tr>
         <td class="table_row_h"><input type="checkbox" name="case_id" value="${case.id}"></td>
-        <td class="table_row_h">${case.knr       | F.NA, h}</td>
-        <td class="table_row_h">${h.getCaseShort(case.last_name, 15) | F.NA, h}</td>
-        <td class="table_row_h">${h.getCaseShort(case.first_name, 15) | F.NA, h}</td>
+        ## If the case is marked for anonymisation do not show the
+        ## first and lastname and the customer number.
+        % if case.getState().getState() == 4 and h.hasRole('cm_ka'):
+          <td class="table_row_h">${h.getCaseShort('', 15) | F.NA, h}</td>
+          <td class="table_row_h">${h.getCaseShort('', 15) | F.NA, h}</td>
+          <td class="table_row_h">${h.getCaseShort('', 15) | F.NA, h}</td>
+        % else:
+          <td class="table_row_h">${case.knr       | F.NA, h}</td>
+          <td class="table_row_h">${h.getCaseShort(case.last_name, 15) | F.NA, h}</td>
+          <td class="table_row_h">${h.getCaseShort(case.first_name, 15) | F.NA, h}</td>
+        % endif
         % if h.hasRole(['admin_ka']):
           <td class="table_row_h">
             ${case.getEditor().last_name | F.NA, h}, ${case.getEditor().first_name[0] | F.NA, h}.
@@ -119,7 +135,7 @@
           % endif
         </td>
         <td class="table_row_h">
-          % if case.getState().getState() != 5:
+          % if case.getState().getState() not in (4,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']):
@@ -133,7 +149,7 @@
               <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/markForAnonymize/${case.id}/0/"><img src="/images/icons/anonym_red.gif" border="0" alt="${_('cm_overview_a_anonymize')}" title="${_('cm_overview_a_anonymize')}"></a> 
+            <a href="/case/markForAnonymizeFromOverview/${case.id}/0/"><img src="/images/icons/anonym_red.gif" border="0" alt="${_('cm_overview_a_anonymize')}" title="${_('cm_overview_a_anonymize')}"></a> 
             <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>

Added: trunk/waskaweb/templates/casemanagement/dialogs/confirm_markanonymizeFromOverview.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/dialogs/confirm_markanonymizeFromOverview.mako	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/templates/casemanagement/dialogs/confirm_markanonymizeFromOverview.mako	2008-08-13 13:16:26 UTC (rev 58)
@@ -0,0 +1,8 @@
+## -*- coding: utf-8 -*- 
+<%inherit file="/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" />

Modified: trunk/waskaweb/templates/casemanagement/digest.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/digest.mako	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/templates/casemanagement/digest.mako	2008-08-13 13:16:26 UTC (rev 58)
@@ -6,134 +6,4 @@
   <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">
-  <div id="content_ueberschrift">
-${_('cm_header_digest')}
-  </div>
-</div>
-% if c.daysToMaxSavetime < 0:
-<div class="dialog">
-  % if c.finished:
-    <h1><img src="/images/alert.png" alt="achtung"/>Maximale Speicherdauer überschritten!</h1>
-    <p>
-    Nach Abschluss der Nachbetreuungsphase des Jugendlichen ist eine weitere
-    Aufbewahrung der personenbezogenen Daten in der Fallakte nur bis zur
-    maximalen Speicherdauer zulässig. Die maximale Speicherdauer
-    (${c.maxsavetime} Tage) wurde seit ${abs(c.daysToMaxSavetime)} Tagen
-    überschritten! <strong>Es wird empfohlen, die Fallakte zu
-    anonymisieren!</strong>
-    </p>
-  % elif c.canceled:
-    <h1><img src="/images/alert.png" alt="achtung"/>Maximale Speicherdauer überschritten!</h1>
-    <p>
-    Nach Abbruch des Case-Managements ist eine weitere Aufbewahrung der
-    personenbezogenen Daten der Fallakte nur bis zur maximalen Speicherdauer
-    zulässig. Die maximale Speicherdauer (${c.maxsavetime} Tage) wurde seit
-    ${abs(c.daysToMaxSavetime)} Tagen überschritten! <strong>Es wird empfohlen,
-    die Fallakte zu anonymisieren!</strong>
-    </p>
-  % else:
-    <h1><img src="/images/question.png" alt="achtung"/>Inaktiver Fall?</h1>
-    <p>
-    Für die Fallakte konnte seit ${abs(c.daysToMaxSavetime)+int(c.maxsavetime)}
-    Tagen keine Aktivität festgestellt werden. Bitte prüfen Sie, ob der Fall
-    noch aktiv bearbeitet wird.
-    </p>
-  % endif
-</div>
-% else:
-<p><strong>Letzte Bearbeitung: ${c.last_access} </strong>
-  % if c.daysToMaxSavetime <= 14:
-    % if c.finished or c.canceled:
-      (Tage bis zum Überschreiten der maximalen Speicherdauer: ${c.daysToMaxSavetime})
-    % else:
-      (Tage bis zur nächsten automatischen Wiedervorlage der Fallakte: ${c.daysToMaxSavetime})
-    % endif
-  % endif
-</p>
-% endif
-<h2>${_('cm_header_digest_youth')}</h2>
-<table class="digest_table_left">
-	<tr>
-		<td class="label table_header_v table_width_mid_l">${_('cm_digest_tbl_label_lastname')}</td>
-		<td class="table_row_v">${c.digest.last_name | F.NA, h}</td>
-	</tr>
-	<tr>
-		<td class="label">${_('cm_digest_tbl_label_firstname')}</td>
-		<td class="table_row_v_2">${c.digest.first_name | F.NA, h}</td>
-	</tr>
-	<tr>
-		<td class="label table_header_v">${_('cm_digest_tbl_label_caseid')}</td>
-		<td class="table_row_v">${c.digest.knr | F.NA, h}</td>
-	</tr>
-	<tr>
-		<td class="label">${_('cm_digest_tbl_label_age')}</td>
-		<td class="table_row_v_2">${c.digest.age | F.NA, h}</td>
-	</tr>
-        <tr>
-                <td class="label table_header_v">${_('cm_digest_tbl_label_email')}</td>
-                % if c.digest.email != "None":
-                  <td class="table_row_v"><a href="mailto:${c.digest.email | F.NA, h}">${c.digest.email | F.NA, h}</a></td>
-                % else:
-                  <td class="table_row_v">${c.digest.email | F.NA, h}</td>
-                % endif
-        </tr>
-</table>
-<table class="digest_table_right">
-	<tr>
-		<td class="label table_header_v table_width_mid_l">${_('cm_digest_tbl_label_street')}</td>
-		<td class="table_row_v">${c.digest.street | F.NA, h}</td>
-	</tr>
-	<tr>
-		<td class="label">${_('cm_digest_tbl_label_plz')}</td>
-		<td class="table_row_v_2">${c.digest.plz | F.NA, h}</td>
-	</tr>
-	<tr>
-		<td class="label table_header_v">${_('cm_digest_tbl_label_city')}</td>
-		<td class="table_row_v">${c.digest.city | F.NA, h}</td>
-	</tr>
-	<tr>
-		<td class="label">${_('cm_digest_tbl_label_telephone')}</td>
-		<td class="table_row_v_2">(${c.digest.telephone_1 | F.NA, h}) ${c.digest.telephone_2 | F.NA, h}</td>
-	</tr>
-	<tr>
-		<td class="label table_header_v">${_('cm_digest_tbl_label_mobiletelephone')}</td>
-		<td class="table_row_v">(${c.digest.mobiletel | F.NA, h})</td>
-	</tr>
-	<tr>
-		<td class="label">${_('cm_digest_tbl_label_telephone_more')}</td>
-		<td class="table_row_v_2">${c.digest.telephone_more | }</td>
-	</tr>
-</table>
-
-<h2>${_('cm_header_digest_parent')}</h2>
-<table class="digest_table_left">
-  <tr>
-    <td class="label table_header_v table_width_mid_l">${_('cm_digest_tbl_label_lastname')}</td>
-    <td class="table_row_v">${c.digest.parent_last_name | F.NA, h}</td>
-  </tr>
-  <tr>
-    <td class="label">${_('cm_digest_tbl_label_firstname')}</td>
-    <td class="table_row_v_2">${c.digest.parent_first_name | F.NA, h}</td>
-  </tr>
-  <tr>
-    <td class="label table_header_v">${_('cm_digest_tbl_label_email')}</td>
-    % if c.digest.parent_email != "None":
-      <td class="table_row_v"><a href="mailto:${c.digest.parent_email | F.NA, h}">${c.digest.parent_email | F.NA, h}</a></td>
-    % else:
-      <td class="table_row_v">${c.digest.parent_email | F.NA, h}</td>
-    % endif
-  </tr>
-</table>
-<table class="digest_table_right"> 
-  <tr>
-    <td class="label table_header_v table_width_mid_l">${_('cm_digest_tbl_label_telephone')}</td>
-    <td class="table_row_v">(${c.digest.parent_telephone_1 | F.NA, h}) ${c.digest.parent_telephone_2 | F.NA, h}</td>
-  </tr>
-  <tr>
-    <td class="label">${_('cm_digest_tbl_label_mobiletelephone')}</td>
-    <td class="table_row_v_2">(${c.digest.parent_mobiletel | F.NA, h})</td>
-  </tr>
-</table>
-	
+<%include file="digest_body.mako"/>

Added: trunk/waskaweb/templates/casemanagement/digest_body.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/digest_body.mako	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/templates/casemanagement/digest_body.mako	2008-08-13 13:16:26 UTC (rev 58)
@@ -0,0 +1,133 @@
+## -*- coding: utf-8 -*-
+<%!  import waskaweb.lib.filters as F %>
+<div id="content_header_small">
+  <div id="content_ueberschrift">
+${_('cm_header_digest')}
+  </div>
+</div>
+% if not c.print_version:
+  % if c.daysToMaxSavetime < 0:
+  <div class="dialog">
+    % if c.finished:
+      <h1><img src="/images/alert.png" alt="achtung"/>Maximale Speicherdauer überschritten!</h1>
+      <p>
+      Nach Abschluss der Nachbetreuungsphase des Jugendlichen ist eine weitere
+      Aufbewahrung der personenbezogenen Daten in der Fallakte nur bis zur
+      maximalen Speicherdauer zulässig. Die maximale Speicherdauer
+      (${c.maxsavetime} Tage) wurde seit ${abs(c.daysToMaxSavetime)} Tagen
+      überschritten! <strong>Es wird empfohlen, die Fallakte zu
+      anonymisieren!</strong>
+      </p>
+    % elif c.canceled:
+      <h1><img src="/images/alert.png" alt="achtung"/>Maximale Speicherdauer überschritten!</h1>
+      <p>
+      Nach Abbruch des Case-Managements ist eine weitere Aufbewahrung der
+      personenbezogenen Daten der Fallakte nur bis zur maximalen Speicherdauer
+      zulässig. Die maximale Speicherdauer (${c.maxsavetime} Tage) wurde seit
+      ${abs(c.daysToMaxSavetime)} Tagen überschritten! <strong>Es wird empfohlen,
+      die Fallakte zu anonymisieren!</strong>
+      </p>
+    % else:
+      <h1><img src="/images/question.png" alt="achtung"/>Inaktiver Fall?</h1>
+      <p>
+      Für die Fallakte konnte seit ${abs(c.daysToMaxSavetime)+int(c.maxsavetime)}
+      Tagen keine Aktivität festgestellt werden. Bitte prüfen Sie, ob der Fall
+      noch aktiv bearbeitet wird.
+      </p>
+    % endif
+  </div>
+  % else:
+  <p><strong>Letzte Bearbeitung: ${c.last_access} </strong>
+    % if c.daysToMaxSavetime <= 14:
+      % if c.finished or c.canceled:
+        (Tage bis zum Überschreiten der maximalen Speicherdauer: ${c.daysToMaxSavetime})
+      % else:
+        (Tage bis zur nächsten automatischen Wiedervorlage der Fallakte: ${c.daysToMaxSavetime})
+      % endif
+    % endif
+  </p>
+  % endif
+% endif
+<h2>${_('cm_header_digest_youth')}</h2>
+<table class="digest_table_left">
+	<tr>
+		<td class="label table_header_v table_width_mid_l">${_('cm_digest_tbl_label_lastname')}</td>
+		<td class="table_row_v">${c.digest.last_name | F.NA, h}</td>
+	</tr>
+	<tr>
+		<td class="label">${_('cm_digest_tbl_label_firstname')}</td>
+		<td class="table_row_v_2">${c.digest.first_name | F.NA, h}</td>
+	</tr>
+	<tr>
+		<td class="label table_header_v">${_('cm_digest_tbl_label_caseid')}</td>
+		<td class="table_row_v">${c.digest.knr | F.NA, h}</td>
+	</tr>
+	<tr>
+		<td class="label">${_('cm_digest_tbl_label_age')}</td>
+		<td class="table_row_v_2">${c.digest.age | F.NA, h}</td>
+	</tr>
+        <tr>
+                <td class="label table_header_v">${_('cm_digest_tbl_label_email')}</td>
+                % if c.digest.email != "None":
+                  <td class="table_row_v"><a href="mailto:${c.digest.email | F.NA, h}">${c.digest.email | F.NA, h}</a></td>
+                % else:
+                  <td class="table_row_v">${c.digest.email | F.NA, h}</td>
+                % endif
+        </tr>
+</table>
+<table class="digest_table_right">
+	<tr>
+		<td class="label table_header_v table_width_mid_l">${_('cm_digest_tbl_label_street')}</td>
+		<td class="table_row_v">${c.digest.street | F.NA, h}</td>
+	</tr>
+	<tr>
+		<td class="label">${_('cm_digest_tbl_label_plz')}</td>
+		<td class="table_row_v_2">${c.digest.plz | F.NA, h}</td>
+	</tr>
+	<tr>
+		<td class="label table_header_v">${_('cm_digest_tbl_label_city')}</td>
+		<td class="table_row_v">${c.digest.city | F.NA, h}</td>
+	</tr>
+	<tr>
+		<td class="label">${_('cm_digest_tbl_label_telephone')}</td>
+		<td class="table_row_v_2">(${c.digest.telephone_1 | F.NA, h}) ${c.digest.telephone_2 | F.NA, h}</td>
+	</tr>
+	<tr>
+		<td class="label table_header_v">${_('cm_digest_tbl_label_mobiletelephone')}</td>
+		<td class="table_row_v">(${c.digest.mobiletel | F.NA, h})</td>
+	</tr>
+	<tr>
+		<td class="label">${_('cm_digest_tbl_label_telephone_more')}</td>
+		<td class="table_row_v_2">${c.digest.telephone_more | }</td>
+	</tr>
+</table>
+
+<h2>${_('cm_header_digest_parent')}</h2>
+<table class="digest_table_left">
+  <tr>
+    <td class="label table_header_v table_width_mid_l">${_('cm_digest_tbl_label_lastname')}</td>
+    <td class="table_row_v">${c.digest.parent_last_name | F.NA, h}</td>
+  </tr>
+  <tr>
+    <td class="label">${_('cm_digest_tbl_label_firstname')}</td>
+    <td class="table_row_v_2">${c.digest.parent_first_name | F.NA, h}</td>
+  </tr>
+  <tr>
+    <td class="label table_header_v">${_('cm_digest_tbl_label_email')}</td>
+    % if c.digest.parent_email != "None":
+      <td class="table_row_v"><a href="mailto:${c.digest.parent_email | F.NA, h}">${c.digest.parent_email | F.NA, h}</a></td>
+    % else:
+      <td class="table_row_v">${c.digest.parent_email | F.NA, h}</td>
+    % endif
+  </tr>
+</table>
+<table class="digest_table_right"> 
+  <tr>
+    <td class="label table_header_v table_width_mid_l">${_('cm_digest_tbl_label_telephone')}</td>
+    <td class="table_row_v">(${c.digest.parent_telephone_1 | F.NA, h}) ${c.digest.parent_telephone_2 | F.NA, h}</td>
+  </tr>
+  <tr>
+    <td class="label">${_('cm_digest_tbl_label_mobiletelephone')}</td>
+    <td class="table_row_v_2">(${c.digest.parent_mobiletel | F.NA, h})</td>
+  </tr>
+</table>

Modified: trunk/waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/templates/casemanagement/evaluation/evaluation_result_1.mako	2008-08-13 13:16:26 UTC (rev 58)
@@ -7,6 +7,7 @@
   <li><a href="/evaluate/evaluate/1/1">${_('cm_np_evaluate_result')}</a></li>
 </%def>
 <h1><a name="top">${_('cm_header_evaluate_result')}</a>${h.getHelp('cm_evaluate_result_note')}</h1>
+<strong>Hinweis:</strong> Es wurden ${c.count_total_valid} von ${c.count_total} im System gespeicherten Fallakten ausgewertet.
 % if not session.get('hide_search_option_on_eval', False):
 <h2>Zeitraum angeben</h2>
   <div id="search_field">
@@ -86,7 +87,6 @@
     <td >${c.eval_1_cm| F.NA, h}</td>
     <td>(${c.eval_1_cm_percent| F.NA, h}%)</td>
     <td>&nbsp;</td>
-  </tr>
 </table>
 <a href="#top">${_('cm_eval_table_to_overview')}</a> | <a href="/evaluate/exportEvaluation_1/auswertung_1_1.csv">${_('cm_eval_table_export_analysis')}</a>
 </div>

Modified: trunk/waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/templates/casemanagement/evaluation/evaluation_result_2.mako	2008-08-13 13:16:26 UTC (rev 58)
@@ -7,6 +7,7 @@
   <li><a href="/evaluate/evaluate/2/1">${_('cm_np_evaluate_result')}</a></li>
 </%def>
 <h1><a name="top">${_('cm_header_evaluate_result')}</a>${h.getHelp('cm_evaluate_result_note')}</h1>
+<strong>Hinweis:</strong> Es wurden ${c.count_total_valid} von ${c.count_total} im System gespeicherten Fallakten ausgewertet.
 % if not session.get('hide_search_option_on_eval', False):
 <h2>Zeitraum angeben</h2>
   <div id="search_field">

Modified: trunk/waskaweb/templates/casemanagement/evaluation/evaluation_result_3.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/evaluation/evaluation_result_3.mako	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/templates/casemanagement/evaluation/evaluation_result_3.mako	2008-08-13 13:16:26 UTC (rev 58)
@@ -7,6 +7,7 @@
   <li><a href="/evaluate/evaluate/3/1">${_('cm_np_evaluate_result')}</a></li>
 </%def>
 <h1><a name="top">${_('cm_header_evaluate_result')}</a>${h.getHelp('cm_evaluate_result_note')}</h1>
+<strong>Hinweis:</strong> Es wurden ${c.count_total_valid} von ${c.count_total} im System gespeicherten Fallakten ausgewertet.
 % if not session.get('hide_search_option_on_eval', False):
 <h2>Zeitraum angeben</h2>
   <div id="search_field">

Added: trunk/waskaweb/templates/casemanagement/listbadcases.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/listbadcases.mako	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/templates/casemanagement/listbadcases.mako	2008-08-13 13:16:26 UTC (rev 58)
@@ -0,0 +1,78 @@
+## -*- coding: utf-8 -*-
+<%inherit file="../main.mako" />
+<div>
+<h1>Inkonsistente Fallakten finden</h1>
+<p>Mit Hilfe der folgenden Funktionen haben Sie die Möglichkeit inkonstente Fallakten zu identifizieren. Klicken Sie auf den "Anzeige"-Button des jeweiligen Type der Inkonsistenz, um eine Auflistung der betroffenen Fälle zu erhalten.</p>
+</div>
+%if len(c.type_1_list):
+<div>
+  <h2>Fehlende Angabe zum Datum des Erstgespräch</h2>
+  <form name="list1" action="${h.url_for(controller="case_overview", action="search")}" method=post>
+  <input type="hidden" name="show_anonymized" value="1">
+  <input type="hidden" name="show_own" value="1">
+  <input type="hidden" name="show_open" value="1">
+  <input type="hidden" name="search_str" value="bad:1">
+  <input type="submit" value="Anzeigen"> (${len(c.type_1_list)} Fallakte(n))
+  </form>
+</div>
+%endif
+%if len(c.type_2_list):
+<div>
+  <h2>Datum des Erstgespräch liegt in der Zukunft</h2>
+  <form name="list1" action="${h.url_for(controller="case_overview", action="search")}" method=post>
+  <input type="hidden" name="show_anonymized" value="1">
+  <input type="hidden" name="show_own" value="1">
+  <input type="hidden" name="show_open" value="1">
+  <input type="hidden" name="search_str" value="bad:2">
+  <input type="submit" value="Anzeigen"> (${len(c.type_2_list)} Fallakte(n))
+  </form>
+</div>
+%endif
+%if len(c.type_3_list):
+<div>
+  <h2>Beendigungsdatum des CM liegt vor dem Datum des Erstgespräch</h2>
+  <form name="list1" action="${h.url_for(controller="case_overview", action="search")}" method=post>
+  <input type="hidden" name="show_anonymized" value="1">
+  <input type="hidden" name="show_own" value="1">
+  <input type="hidden" name="show_open" value="1">
+  <input type="hidden" name="search_str" value="bad:3">
+  <input type="submit" value="Anzeigen"> (${len(c.type_3_list)} Fallakte(n))
+  </form>
+</div>
+%endif
+%if len(c.type_4_list):
+<div>
+  <h2>Beendigungsdatum des CM liegt in der Zukunft</h2>
+  <form name="list1" action="${h.url_for(controller="case_overview", action="search")}" method=post>
+  <input type="hidden" name="show_anonymized" value="1">
+  <input type="hidden" name="show_own" value="1">
+  <input type="hidden" name="show_open" value="1">
+  <input type="hidden" name="search_str" value="bad:4">
+  <input type="submit" value="Anzeigen"> (${len(c.type_4_list)} Fallakte(n))
+  </form>
+</div>
+%endif
+%if len(c.type_5_list):
+<div>
+  <h2>CM ist beendet, aber keine Beendigungsdatum angegeben</h2>
+  <form name="list1" action="${h.url_for(controller="case_overview", action="search")}" method=post>
+  <input type="hidden" name="show_anonymized" value="1">
+  <input type="hidden" name="show_own" value="1">
+  <input type="hidden" name="show_open" value="1">
+  <input type="hidden" name="search_str" value="bad:5">
+  <input type="submit" value="Anzeigen"> (${len(c.type_5_list)} Fallakte(n))
+  </form>
+</div>
+%endif
+%if len(c.type_6_list):
+<div>
+  <h2>CM ist nicht beendet, aber Beendigungsdatum angegeben</h2>
+  <form name="list1" action="${h.url_for(controller="case_overview", action="search")}" method=post>
+  <input type="hidden" name="show_anonymized" value="1">
+  <input type="hidden" name="show_own" value="1">
+  <input type="hidden" name="show_open" value="1">
+  <input type="hidden" name="search_str" value="bad:6">
+  <input type="submit" value="Anzeigen"> (${len(c.type_6_list)} Fallakte(n))
+  </form>
+</div>
+%endif

Modified: trunk/waskaweb/templates/casemanagement/overview.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/overview.mako	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/templates/casemanagement/overview.mako	2008-08-13 13:16:26 UTC (rev 58)
@@ -26,22 +26,22 @@
     <select name="action">
       <option value="no_action">Keine Aktion</option>
       % if h.hasRole(['admin_ka']):
-        <option value="delete">Auswahl löschen</option>
-        <option value="anonymize">Auswahl anonymisieren</option>
-        <option value="restore">Auswahl wiederherstellen</option>
-        <option value="transfer">Auswahl Bearbeitung übertragen</option>
+        <option value="delete">Löschen</option>
+        <option value="anonymize">Anonymisieren</option>
+        <option value="restore">Wiederherstellen</option>
+        <option value="transfer">Bearbeitung übertragen</option>
       % endif
       % if h.hasRole(['cm_ka']):
-        <option value="markdelete">Auswahl löschen</option>
-        <option value="markanonymize">Auswahl anonymisieren</option>
+        <option value="markdelete">Löschen</option>
+        <option value="markanonymize">Anonymisieren</option>
       % endif
       % if h.hasRole(['admin_ka', 'cm_ka']):
-      <option value="stand-in">Auswahl Vertretung zuweisen</option>
-      <option value="exportXLS">Auswahl als Excel-Tabellen exportieren</option>
-      <option value="exportXML">Auswahl als XML-Datei exportieren</option>
-      <option value="exportCSV">Auswahl als CSV-Datei exportieren</option>
+      <option value="stand-in">Vertretung zuweisen</option>
+      <option value="exportXLS">Als Excel-Tabellen exportieren</option>
+      <option value="exportXML">Als XML-Datei exportieren</option>
+      <option value="exportCSV">Als CSV-Datei exportieren</option>
       % if not c.hide_evaluation:
-        <option value="evaluate">Auswahl auswerten</option>
+        <option value="evaluate">Auswerten</option>
       % endif
       % endif
     </select>

Deleted: trunk/waskaweb/templates/casemanagement/static_form/statement_print.mako
===================================================================
--- trunk/waskaweb/templates/casemanagement/static_form/statement_print.mako	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/templates/casemanagement/static_form/statement_print.mako	2008-08-13 13:16:26 UTC (rev 58)
@@ -1,72 +0,0 @@
-## -*- coding: utf-8 -*-
-<%inherit file="../../main.mako" />
-<%def name="buildNavipath()">
-		${parent.buildNavipath()}
-		<li><a href="/case/">${_('cm_np_root')}</a></li>
-		<li><a href="/case/">${_('cm_np_statement')}</a></li>
-</%def>
-<div id="waska_form">
-<form id="waska_form" action="/case/newAction" accept-charset="UTF-8" name="waska_form" method="POST">
-<h1>Einwilligungserklärung</h1>
-<p>gemäß den Bestimmungen des §4a Bundesdatenschutzgesetz</p>
-<p>Hiermit willige ich,</p>
-<div class="waska_form_element w50">
-<label for"vorname_">Vorname:</label>
-<input class="field" type="text" size="50" maxlength="60" name="vorname_1" id="vorname_1" value="${session.get('case').first_name}"> 
-</div>
-<div class="waska_form_element w50">
-<label for"name_1">Name:</label>
-<input class="field" type="text" size="50" maxlength="60" name="name_1" id="name_1" value="${session.get('case').last_name}">
-</div>
-<p>Wohnhaft in,</p>
-<div class="waska_form_element w100">
-<label for"strasse">Strasse:</label
-<input class="field" type="text" size="50" maxlength="60" name="strasse" id="strasse" value="${session.get('case').street}">
-</div>
-<div class="waska_form_element w25">
-<label for"plz">PLZ:</label>
-<input class="field" type="text" size="50" maxlength="60" name="plz" id="plz" value="${session.get('case').plz}">
-</div>
-<div class="waska_form_element w75">
-<label for"wohnort">Ort:</label>
-<input class="field" type="text" size="50" maxlength="60" name="wohnort" id="wohnort" value="${session.get('case').city}">
-</div>
-<p>
-ein, dass die Kompetenzagentur XY im Rahmen ihrer Aufgabe, mich bei meiner beruflichen und
-sozialen Eingliederung zu unterstützen, alle dazu erforderlichen Daten, die meine Person betreffen,
-erheben, verarbeiten und nutzen kann. Diese Daten werden grundsätzlich bei mir erhoben.
-</p>
-<p>
-Aus den Daten erstellt die Kompetenzagentur XY im Rahmen ihrer Begleitung (Case-Management)
-einen Förder- und Entwicklungsplan, der die wichtigsten Angaben zu meiner persönlichen,
-beruflichen und sozialen Integration enthält. Aus diesem Grund werden auch Daten erhoben, die
-meine Gesundheit betreffen, so fern sie ärztlich attestiert sind. Sie werden verwendet um ein
-vollständiges Förderprofil zu erstellen, das alle Beeinträchtigungen berücksichtigt.
-</p>
-<p>
-Zum Zweck der wissenschaftlichen Begleitung und Auswertung sowie für die Erfassung von
-statistischen Angaben werden die von mir bei der Kompetenzagentur XY erhobenen Daten
-anonymisiert und an den Projektträger im DLR für das Bundesministerium für Familie, Senioren,
-Frauen und Jugend (PT-DLR, Bonn) weitergeleitet. Anonymisiert heißt, dass alle Daten zu Namen
-und Adresse unkenntlich gemacht werden und die weiteren Daten somit nicht mehr mit meiner
-Person in Zusammenhang gebracht werden können. Mit diesen Daten wird PT-DLR ermitteln, ob und
-wie die Ziele des Programms ,,Kompetenzagenturen " erreicht wurden.
-</p>
-<p>
-Diese Einwilligung kann ich jederzeit widerrufen. Mir ist bewusst, dass dadurch unter Umständen eine
-Begleitung durch die Kompetenzagentur XY nicht mehr in dem geplanten oder erforderlichen Umfang
-gewährleistet werden kann.
-Ziehe ich meinen Auftrag, mich von der Kompetenzagentur XY bei der beruflichen und sozialen
-Integration begleiten zu lassen zurück, sind alle über mich gespeicherten Daten sofort zu löschen.
-Eine automatische Löschung meiner Daten bei der Kompetenzagentur XY findet in jedem Fall Z
-Monate nach Abschluss der Begleitung statt.
-Ausgeschlossen von dieser Löschung bleiben die Angaben auf der Teilnehmerliste (z. B. Name,
-Anschrift, Datum Erstkontakt etc.) Die Angaben auf der Teilnehmerliste werden elektronisch nicht
-verarbeitet und dienen der Kompetenzagentur XY und dem PT-DLR zu abrechnungstechnischen
-Zwecken.
-</p>
-<p>
-Ich habe jederzeit die Möglichkeit meine Fallakte bei der Kompetenzagentur XY einzusehen.
-</p>
-</form>
-</div>

Modified: trunk/waskaweb/templates/logbook/edit_body.mako
===================================================================
--- trunk/waskaweb/templates/logbook/edit_body.mako	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/templates/logbook/edit_body.mako	2008-08-13 13:16:26 UTC (rev 58)
@@ -2,16 +2,31 @@
 <fieldset>
 <legend>Zeitangaben</legend>
   <div class="w25">
-    <label for="date">Datum:</label><br>
-    <input type="text" class="field" name="date" id="date">
+    % if c.form_errors.get('date'):
+      <label for="date" class="error_font">Datum:</label><br>
+      <input type="text" class="field error_box" name="date" id="date">
+    % else:
+      <label for="date">Datum:</label><br>
+      <input type="text" class="field" name="date" id="date">
+    % endif
   </div>
   <div class="w75">
-    <label for="date">Uhrzeit:</label><br>
-    <input type="text" class="field" name="time" id="time">
+    % if c.form_errors.get('time'):
+      <label for="date" class="error_font">Uhrzeit:</label><br>
+      <input type="text" class="field error_box" name="time" id="time">
+    % else:
+      <label for="date">Uhrzeit:</label><br>
+      <input type="text" class="field" name="time" id="time">
+    % endif
   </div>
   <div class="w25">
-    <label for="duration">Dauer in Minuten:</label><br>
-    <input type="text" class="field" name="duration" id="duration"/>
+    % if c.form_errors.get('duration'):
+      <label for="duration" class="error_font">Dauer in Minuten:</label><br>
+      <input type="text" class="field error_box" name="duration" id="duration"/>
+    % else:
+      <label for="duration">Dauer in Minuten:</label><br>
+      <input type="text" class="field" name="duration" id="duration"/>
+    % endif
   </div>
 </fieldset>
 <fieldset>
@@ -36,8 +51,13 @@
   </select>
 </div>
 <div class="w100">
-  <label for="short_notice">Nennung Sonstiges:</label><br>
-  <input type="text" class="field" name="short_notice" id="short_notice" maxlength="80"/>
+  % if c.form_errors.get('short_notice'):
+    <label for="short_notice" class="error_font">Nennung Sonstiges:</label><br>
+    <input type="text" class="field error_box" name="short_notice" id="short_notice" maxlength="80"/>
+  % else:
+    <label for="short_notice">Nennung Sonstiges:</label><br>
+    <input type="text" class="field" name="short_notice" id="short_notice" maxlength="80"/>
+  % endif
 </div>
 <div>
   <label for="notice">Notiz:</label><br>

Modified: trunk/waskaweb/templates/logbook/show.mako
===================================================================
--- trunk/waskaweb/templates/logbook/show.mako	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/templates/logbook/show.mako	2008-08-13 13:16:26 UTC (rev 58)
@@ -47,7 +47,7 @@
         </tr>
         <tr>
             <td class="label table_header_v">Notiz</td>
-            <% description = F.H(c.entry.notiz).replace('\n', '<br>') %>
+            <% description = F.H(F.no_none(c.entry.notiz)).replace('\n', '<br>') %>
             <td class="table_row_v">${description | F.NA}</td>
         </tr>
     </tbody>

Modified: trunk/waskaweb/templates/main.mako
===================================================================
--- trunk/waskaweb/templates/main.mako	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/templates/main.mako	2008-08-13 13:16:26 UTC (rev 58)
@@ -145,6 +145,9 @@
           <li><a href="${h.url_for(controller='/case', action='importCase')}"> ${_('menu_cm_link_import')}</a> </li>
         % endif
         <li><a href="${h.url_for(controller='/evaluate', action='evaluate', id=1, reset=1)}"> ${_('cm_actions_link_evaluate')}</a></li>
+        %if session.get('hascaseerrors'):
+        <li><a href="${h.url_for(controller='/case_overview', action='listBadCases')}">Inkonsistente Fallakten</a></li>
+        %endif
       </ul>
     </div>
   </div>

Modified: trunk/waskaweb/templates/start/start.mako
===================================================================
--- trunk/waskaweb/templates/start/start.mako	2008-08-13 13:15:55 UTC (rev 57)
+++ trunk/waskaweb/templates/start/start.mako	2008-08-13 13:16:26 UTC (rev 58)
@@ -29,13 +29,19 @@
     </ul>
   </div>
   % else:
-  <h2>Automatisierte Wiedervorlagen</h2>
-  <%include file="/start/remindlist.mako"/>
-  %if h.hasRole('cm_ka'):
-    <h2>Eigene Termine</h2>
-    <%include file="/start/appointmentlist.mako"/>
-  % endif
-  <h2>Agenturtermine</h2>
-  <%include file="/start/globalappointmentlist.mako"/>
-  % endif
+    %if session.get('hascaseerrors'):
+      <div class="form_errors">
+      <h1>Inkonsistente Fallakten gefunden!</h1>
+        <p>Sie haben aktuell ${c.num_error_cases} Fallakte(n) mit unvollständigen oder widersprüchlichen Angaben. Fallakten deren Daten nicht plausibel sind werden in der Auswertung zu Problemen führen. Bitte nutzen Sie die Funktion zum <a href="${h.url_for(controller='/case_overview', action='listBadCases')}">Aufspüren von inkonsistenten Fallakten.</a></p>
+      </div>
+    %endif
+    <h2>Automatisierte Wiedervorlagen</h2>
+    <%include file="/start/remindlist.mako"/>
+    %if h.hasRole('cm_ka'):
+      <h2>Eigene Termine</h2>
+      <%include file="/start/appointmentlist.mako"/>
+    % endif
+    <h2>Agenturtermine</h2>
+    <%include file="/start/globalappointmentlist.mako"/>
+    % endif
 % endif



More information about the Mpuls-commits mailing list