[Mpuls-commits] r386 - in wasko/trunk: . waskaweb/controllers waskaweb/lib waskaweb/templates/caselifetime

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Tue Mar 17 20:22:49 CET 2009


Author: torsten
Date: 2009-03-17 20:22:47 +0100 (Tue, 17 Mar 2009)
New Revision: 386

Modified:
   wasko/trunk/ChangeLog.txt
   wasko/trunk/waskaweb/controllers/caselifetime.py
   wasko/trunk/waskaweb/lib/validators.py
   wasko/trunk/waskaweb/templates/caselifetime/overview.mako
Log:
Last snapshot before rc-candidate


Modified: wasko/trunk/ChangeLog.txt
===================================================================
--- wasko/trunk/ChangeLog.txt	2009-03-17 17:39:34 UTC (rev 385)
+++ wasko/trunk/ChangeLog.txt	2009-03-17 19:22:47 UTC (rev 386)
@@ -1,3 +1,14 @@
+2009-03-17	Torsten Irlaender  <torsten.irlaender at intevation.de> 
+
+	Last snapshot before rc-candidate
+
+	* waskaweb/controllers/caselifetime.py,
+	  waskaweb/lib/validators.py,
+	  waskaweb/templates/caselifetime/overview.mako: "Neuaufnahme" and
+	  "Wiederaufnahme" should be basically working now. "Neuaufnahme" is
+	  not complete yet. Copying data from the old into the new case is
+	  still missing.   
+
 2009-03-17	Sascha L. Teichmann	<teichmann at intevation.de>
 
 	* waskaweb/lib/helpers.py: new function toErrorDicts() which takes an 

Modified: wasko/trunk/waskaweb/controllers/caselifetime.py
===================================================================
--- wasko/trunk/waskaweb/controllers/caselifetime.py	2009-03-17 17:39:34 UTC (rev 385)
+++ wasko/trunk/waskaweb/controllers/caselifetime.py	2009-03-17 19:22:47 UTC (rev 386)
@@ -2,17 +2,44 @@
 import logging, sys
 import traceback
 import formencode
+from waskaweb.controllers.CaseBase import CasebaseController
 from waskaweb.lib.base import *
+from waskaweb.lib.helpers import *
+from waskaweb.model.case  import CaseFactory 
+from waskaweb.model.casedocument import DataSaveException
 from waskaweb.lib.validators import ExtraTimeFormValidator1, ExtraTimeFormValidator2, ReopenFormValidator1, ReopenFormValidator2, RenewFormValidator
 
 log = logging.getLogger(__name__)
 
+REOPENOK_HEADER_CONFIRM    = u"Fall wiederaufnehmen?"
+REOPENOK_TEXT_CONFIRM      = u"Wollen Sie den Fall wiederaufnehmen? Dabei werden Teile der Abschlussbewertung in die Eingansdokumentation kopiert und die bestehende Abschluss dokumentation gelöscht."
+REOPENNOTOK_HEADER_CONFIRM = u"Nicht genehmigte Wiederaufnahme dokumentieren?"
+REOPENNOTOK_TEXT_CONFIRM   = u"Sie haben keine genehmigte Wiederaufnahme! Wenn Sie fortfahren, ist keine weitere Wiederaufnahme/Verlängerung/Neuaufnahme mehr möglich"
+
+REOPENOK_SUCCESS_HEADER    = u"Fallakte erfolgreich wiederaufgenommen"
+REOPENOK_SUCCESS_TEXT      = u'Die Fallakte wurde erfolgreich wiederaufgenommen. Klicken Sie auf "OK", um zur "Eingangsdokumentation" der Fallakte zu gelangen.'
+
+REOPENNOTOK_SUCCESS_HEADER    = u"Nicht genehmigte Wiederaufnahme dokumentiert."
+REOPENNOTOK_SUCCESS_TEXT      = u'Die nicht genehmigte Wiederaufnahme wurde dokumentiert. Klicken Sie auf "OK", um zur "Eingangsdokumentation" der Fallakte zu gelangen.'
+
+RENEW_HEADER_CONFIRM    = u"Fall neuaufnehmen?"
+RENEW_TEXT_CONFIRM      = u"Wollen Sie den Fall wirklich neuaufnehmen? Dabei wird die aktuelle Fallakte anonymisiert und die relevanten Teile der Fallakte in eine neue Fallakte kopiert."
+
+RENEW_SUCCESS_HEADER    = u"(ENTWICKLUNG) Fallakte neu aufgenommen."
+RENEW_SUCCESS_TEXT      = u'Fallakte wurde erfolgreich neu aufgenommen. Klicken Sie auf "OK", um zur die neue Fallakte zu öffnen. (ACHTUNG! Dieser Bereich befindet sich aktuell noch in Entwicklung. Es wurde noch keine Daten kopiert.)'
+
+ABORT_SUCCESS_HEADER = u'Eingangsdokumentation abgebrochen.'
+ABORT_SUCCESS_TEXT = u'Die Eingangsdokumentation wurde erfolgreich abgebrochen. Die Fallakte wurde der Administration zur Löschung vorgelegt. Klicken Sie auf "OK", um zu Fallaktenübersicht zu gelangen.'
+
+ABORT_TEXT_CONFIRM = u'Wollen Sie wirklich die Eingangsdokumenetation abbrechen und die Fallakte zum Löschen freigeben? Die Fallakte steht Ihnen danach nicht mehr zur Bearbeitung zur Verfügung und wird der Administration zum Löschen vorgelegt.'
+ABORT_HEADER_CONFIRM = u'Eingangsdokumentation abbrechen?'
+
 def checkcase():
 
         end_art = g.formedTree.getData('cm_end_art')
         c.casedata = g.formedTree 
         c.phase = session['case'].getState().getPhase()
-        c.phase = 2
+        c.phase = 3 
 
         # Welche Beendigung?
         c.erfolgreiche_reintegration = False
@@ -41,37 +68,37 @@
         # Wurde Wiederaufnahme abgelehnt? -> alle Optionen ausblenden
         if (g.formedTree.getData('cm_wiederauf_genehm_1') in (0,) \
             or g.formedTree.getData('cm_wiederauf_genehm_2') in (0,)):
-            disable_all = True
+            c.disable_all = True
         else:
-            disable_all = False
+            c.disable_all = False
 
 
         # Verlängerung anzeigen 
-        if not disable_all and c.phase in (2,) and c.num_verlaengerung < 2:
+        if not c.disable_all and c.phase in (-1,2) and c.num_verlaengerung < 2:
             c.show_verlaengerung = True
         else: 
             c.show_verlaengerung = False
 
         # Wiedervorlage anzeigen
-        if not disable_all and c.phase in (3,4,5) and c.erfolgreiche_reintegration and c.num_wiederaufnahme < 2:
+        if not c.disable_all and c.phase in (-1,3,4,5) and (c.erfolgreiche_reintegration or c.phase == -1) and c.num_wiederaufnahme < 2:
             c.show_wiedervorlage = True
         else:
             c.show_wiedervorlage = False
 
         # Neuaufnahme anzeigen
-        if not disable_all and c.phase in (3,4,5) and c.sonstige_beendigung and c.num_wiederaufnahme < 2:
+        if not c.disable_all and c.phase in (-1,3,4,5) and (c.sonstige_beendigung or c.phase == -1) and c.num_wiederaufnahme < 2:
             c.show_neuaufnahme = True
         else:
             c.show_neuaufnahme = False 
 
         # Abbruch anzeigen
-        if not disable_all and c.phase in (-1,0,1):
+        if not c.disable_all and c.phase in (-1,0,1):
             c.show_abort = True
         else:
             c.show_abort = False 
 
 
-class CaselifetimeController(BaseController):
+class CaselifetimeController(CasebaseController):
 
     def index(self, id=None):
         # Return a rendered template
@@ -80,6 +107,7 @@
         c.form_errors = {}
         c.form_result = {}
         checkcase()
+        c.form_navigation = self._getFormNavigation()
         return render('/caselifetime/overview.mako')
 
     def actionMist(self):
@@ -97,19 +125,41 @@
             return self.abortAction()
         else:
             print "Unbekannt"
-            #return render('/caselifetime/overview.mako')
+        c.form_navigation = self._getFormNavigation()
+        return render('/caselifetime/overview.mako')
 
+    def abortcase(self, id, confirmed='0'):
+        checkcase()
+        c.form_navigation = self._getFormNavigation()
+        if confirmed == '1':
+            # mark case for deletion
+            factory   = CaseFactory()
+            case = factory.loadById(session['case'].id)
+            case.setState(3)
+            c.success_for  = ABORT_SUCCESS_HEADER 
+            c.success_text = ABORT_SUCCESS_TEXT
+            c.url_ok       = h.url_for(controller="/case_overview")
+            return render('caselifetime/dialogs/success_reopen.mako') 
+        else:
+            c.confirm_for = ABORT_HEADER_CONFIRM
+            c.question    = ABORT_TEXT_CONFIRM
+            c.url_yes     = "/caselifetime/abortcase/%s/1" % session['case'].id
+            c.url_no      = "/caselifetime/index/"
+            return render('caselifetime/dialogs/confirm_reopen.mako')
+
     def abortAction(self):
         checkcase()
+        c.form_navigation = self._getFormNavigation()
         form_result = {}
         form_errors = {}
-        print "abort"
+        return self.abortcase(0)
         c.form_errors = form_errors
         c.form_result = form_result
         return render('/caselifetime/overview.mako')
         
     def extraTimeAction(self):
         checkcase()
+        c.form_navigation = self._getFormNavigation()
         form_result = {}
         form_errors = {}
 
@@ -128,9 +178,8 @@
             try:
                 c.casedata.setData(form_result)
                 return self.index()
-            except Exception, err:
-                traceback.print_exc(file=sys.stderr)
-                print "Fehler beim Setzen der Datan %s: " % err
+            except DataSaveException, err:
+                form_result_1, form_errors = h.toErrorDicts(err.errors)
         except formencode.Invalid, error:
             form_result = error.value
             form_errors = error.error_dict or {}
@@ -139,8 +188,104 @@
         c.form_result = form_result
         return render('/caselifetime/overview.mako')
 
+    def renew(self, id, confirmed='0'):
+        checkcase()
+        c.form_navigation = self._getFormNavigation()
+        if confirmed == '1':
+            data = {}
+            # copy old data
+            data['cm2c_t'] = unicode(c.casedata.getData('cm2c_t', ''))
+            try:
+                # create new case
+                factory = CaseFactory()
+                case = factory.createNew(data={})
+                # Füge alte params aus dem Dialog in der verwaltung hinzu und schreibe alles weg
+                params = session.get('lifetimeparams', {})
+                data['cm2c_t'] += "\r\n\r\n" + params.get('anmerkungen', '')
+                del params['anmerkungen']
+                data.update(params)
+                c.casedata.setData(data, case.id)
+            except Exception, err:
+                print err
+
+            c.success_for  = RENEW_SUCCESS_HEADER 
+            c.success_text = RENEW_SUCCESS_TEXT
+            c.url_ok       = h.url_for(controller="/case/select/%s" % case.id)
+            return render('caselifetime/dialogs/success_reopen.mako') 
+        else:
+            c.confirm_for = RENEW_HEADER_CONFIRM
+            c.question    = RENEW_TEXT_CONFIRM
+            c.url_yes     = "/caselifetime/renew/%s/1" % session['case'].id
+            c.url_no      = "/caselifetime/index/"
+            return render('caselifetime/dialogs/confirm_reopen.mako')
+
+    def reopen_ok(self, id, confirmed='0'):
+        checkcase()
+        c.form_navigation = self._getFormNavigation()
+        if confirmed == '1':
+            data = {}
+            #copy data
+            data['cm_dok_datum_beendigung'] = dd_mm_YYYY(c.casedata.getData('datum_cm_ende'))
+            data['cm_dok_end_art'] = str(c.casedata.getData('cm_end_art'))
+            data['cm_dok_end_verm'] = str(c.casedata.getData('cm_end_verm'))
+            #lösche alte abschlussbewertung und setze phase
+            if c.num_wiederaufnahme < 1:
+                data['cm_end_verm'] = '-1' 
+                data['cm_end_art'] = '-1' 
+                data['datum_cm_ende'] = ''
+            data['cm2c_t'] = unicode(c.casedata.getData('cm2c_t', ''))
+            data['phase'] = '2'
+            try:
+                # Füge alte params aus dem Dialog in der verwaltung hinzu und schreibe alles weg
+                params = session.get('lifetimeparams', {})
+                data['cm2c_t'] += "\r\n\r\n" + params.get('anmerkungen', '')
+                del params['anmerkungen']
+                data.update(params)
+                c.casedata.setData(data)
+            except Exception, err:
+                print err
+            c.success_for  = REOPENOK_SUCCESS_HEADER 
+            c.success_text = REOPENOK_SUCCESS_TEXT
+            c.url_ok       = h.url_for(controller="/case/select_item/0")
+            return render('caselifetime/dialogs/success_reopen.mako') 
+        else:
+            c.confirm_for = REOPENOK_HEADER_CONFIRM
+            c.question    = REOPENOK_TEXT_CONFIRM
+            c.url_yes     = "/caselifetime/reopen_ok/%s/1" % session['case'].id
+            c.url_no      = "/caselifetime/index/"
+            return render('caselifetime/dialogs/confirm_reopen.mako')
+
+    def reopen_notok(self, id, confirmed='0'):
+        checkcase()
+        c.form_navigation = self._getFormNavigation()
+        data = {}
+        if confirmed == '1':
+            data['cm2c_t'] = unicode(c.casedata.getData('cm2c_t', ''))
+            try:
+                # Füge alte params aus dem Dialog in der verwaltung hinzu und schreibe alles weg
+                params = session.get('lifetimeparams', {})
+                data['cm2c_t'] += "\r\n\r\n" + params.get('anmerkungen', '')
+                del params['anmerkungen']
+                data.update(params)
+                c.casedata.setData(data)
+            except Exception, err:
+                print err
+
+            c.success_for  = REOPENNOTOK_SUCCESS_HEADER 
+            c.success_text = REOPENNOTOK_SUCCESS_TEXT
+            c.url_ok       = h.url_for(controller="/case/select_item/0")
+            return render('caselifetime/dialogs/success_reopen.mako') 
+            return self.index()
+        else:
+            c.confirm_for = REOPENNOTOK_HEADER_CONFIRM
+            c.question    = REOPENNOTOK_TEXT_CONFIRM
+            c.url_yes     = "/caselifetime/reopen_notok/%s/1" % session['case'].id
+            c.url_no      = "/caselifetime/index/"
+            return render('caselifetime/dialogs/confirm_reopen.mako')
+
     def reopenAction(self):
         checkcase()
+        c.form_navigation = self._getFormNavigation()
         form_result = {}
         form_errors = {}
 
@@ -155,27 +300,50 @@
 
         try:
             form_result = validator.to_python(request.params)
+            session['lifetimeparams'] = form_result
+            session.save()
+            try:
+                c.casedata.setData(form_result, do_write=False)
+                if c.num_wiederaufnahme < 1:
+                    if form_result.get('cm_wiederauf_genehm_1') == '1':
+                        return self.reopen_ok(0)
+                    else:
+                        return self.reopen_notok(0)
+                else:
+                    if form_result.get('cm_wiederauf_genehm_2') == '1':
+                        return self.reopen_ok(0)
+                    else:
+                        return self.reopen_notok(0)
+            except DataSaveException, err:
+                form_result_1, form_errors = h.toErrorDicts(err.errors)
         except formencode.Invalid, error:
             print error
             form_result = error.value
             form_errors = error.error_dict or {}
 
-        print form_result
         c.form_result = form_result
         c.form_errors  = form_errors
         return render('/caselifetime/overview.mako')
 
     def renewAction(self):
         checkcase()
+        c.form_navigation = self._getFormNavigation()
         validator   = RenewFormValidator()
         form_result = {}
         form_errors = {}
 
-        print "renew"
-
         try:
             form_result = validator.to_python(request.params)
+            session['lifetimeparams'] = form_result
+            session.save()
+            if form_result.get('cm_neuauf_genehm') == '1':
+                try:
+                    c.casedata.setData(form_result, do_write=False)
+                    return self.renew(0)
+                except DataSaveException, err:
+                    form_result_1, form_errors = h.toErrorDicts(err.errors)
         except formencode.Invalid, error:
+            print error
             form_result = error.value
             form_errors = error.error_dict or {}
 

Modified: wasko/trunk/waskaweb/lib/validators.py
===================================================================
--- wasko/trunk/waskaweb/lib/validators.py	2009-03-17 17:39:34 UTC (rev 385)
+++ wasko/trunk/waskaweb/lib/validators.py	2009-03-17 19:22:47 UTC (rev 386)
@@ -410,9 +410,7 @@
     allow_extra_fields          = True
     filter_extra_fields         = True 
     cm_neuauf_genehm            = formencode.validators.String()
-    cm_wiederauf_genehm_datum_1 = DateCheck(not_empty=True)
-    cm_wiederauf_datum_bis_1    = DateCheck(not_empty=True)
-    anmerkungen                 = formencode.validators.String(not_empty=True)
+    anmerkungen                 = formencode.validators.String()
 
 class ReopenFormValidator1(BaseFormValidator):
     allow_extra_fields          = True

Modified: wasko/trunk/waskaweb/templates/caselifetime/overview.mako
===================================================================
--- wasko/trunk/waskaweb/templates/caselifetime/overview.mako	2009-03-17 17:39:34 UTC (rev 385)
+++ wasko/trunk/waskaweb/templates/caselifetime/overview.mako	2009-03-17 19:22:47 UTC (rev 386)
@@ -129,8 +129,15 @@
       % endif
     % else:
       ## Verlängerung nicht möglich
-      % if c.num_verlaengerung > 1:
+      % if c.num_wiederaufnahme > 1:
         <tr>
+        <td class="note table_row_h inactive">
+          Die maximale Anzahl von Wiederaufnahmen wurde erreicht! 
+        </td>
+        <td class="table_row_h"></td>
+        </tr>
+      % elif c.num_verlaengerung > 1:
+        <tr>
           <td class="note table_row_h note inactive">
               Die maximale Anzahl von Verlängerungen wurde erreicht! 
           </td>
@@ -321,8 +328,14 @@
     % else:
       ## Neuaufnahme nicht möglich
       <tr>
+      % if c.num_wiederaufnahme > 1:
+        <td class="note table_row_h inactive">
+          Die maximale Anzahl von Wiederaufnahmen wurde erreicht! 
+        </td>
+      % else:
         <td class="note table_row_h inactive">Eine Neuaufnahme ist nicht möglich, da der Fall nicht mit einer sonstigen Beendigung beendet wurde.
         </td>
+      % endif
         <td class="table_row_h">&nbsp;</td>
       </tr>
     % endif
@@ -343,8 +356,14 @@
     % if not c.show_abort:
       <tr>
       ## Abbruch nicht möglich
+      % if c.num_wiederaufnahme > 1:
+        <td class="note inactive">
+          Die maximale Anzahl von Wiederaufnahmen wurde erreicht! 
+        </td>
+      % else:
         <td class="note inactive">Ein Abbruch der Eingangsdokumentation ist nicht mehr möglich, da Sie bereits die Phase B (Case Management) begonnen haben.
         </td>
+      % endif
         <td class="">&nbsp;</td>
       </tr>
     % endif



More information about the Mpuls-commits mailing list