[Mpuls-commits] r367 - in wasko/trunk: . waskaweb/controllers waskaweb/model waskaweb/templates/casemanagement

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Wed Mar 11 18:17:16 CET 2009


Author: teichmann
Date: 2009-03-11 18:17:13 +0100 (Wed, 11 Mar 2009)
New Revision: 367

Modified:
   wasko/trunk/ChangeLog.txt
   wasko/trunk/waskaweb/controllers/case.py
   wasko/trunk/waskaweb/model/casedocument.py
   wasko/trunk/waskaweb/templates/casemanagement/phase.mako
Log:
Render global warnings on phase page.


Modified: wasko/trunk/ChangeLog.txt
===================================================================
--- wasko/trunk/ChangeLog.txt	2009-03-11 16:02:34 UTC (rev 366)
+++ wasko/trunk/ChangeLog.txt	2009-03-11 17:17:13 UTC (rev 367)
@@ -1,5 +1,13 @@
 2009-03-11	Sascha L. Teichmann	<teichmann at intevation.de>
 
+	* waskaweb/model/casedocument.py: generate HTML for links on phase page.
+
+	* waskaweb/controllers/case.py:   render global warnings on phase page.
+
+	* waskaweb/templates/casemanagement/phase.mako: Added div for global warnings.
+
+2009-03-11	Sascha L. Teichmann	<teichmann at intevation.de>
+
 	Added handling for error class 'notice' which is a kind of
 	global warning.
 

Modified: wasko/trunk/waskaweb/controllers/case.py
===================================================================
--- wasko/trunk/waskaweb/controllers/case.py	2009-03-11 16:02:34 UTC (rev 366)
+++ wasko/trunk/waskaweb/controllers/case.py	2009-03-11 17:17:13 UTC (rev 367)
@@ -608,10 +608,13 @@
 
         rf = RequiredFields(g.formedTree)
 
-        c.phase_pairs   = rf.phases_pairs(phase, self.getNavigation(), link)
+        navigation = self.getNavigation()
+
+        c.phase_pairs   = rf.phases_pairs(phase, navigation, link)
         c.current_phase = Phase(phase, True)
 
-        c.form_navigation  = self._getFormNavigation()
+        c.global_warnings = g.formedTree.linksToGlobalWarnings(id, navigation, link)
+        c.form_navigation = self._getFormNavigation()
         return render('/casemanagement/phase.mako')
 
     @checkRole(('cm_ka'))

Modified: wasko/trunk/waskaweb/model/casedocument.py
===================================================================
--- wasko/trunk/waskaweb/model/casedocument.py	2009-03-11 16:02:34 UTC (rev 366)
+++ wasko/trunk/waskaweb/model/casedocument.py	2009-03-11 17:17:13 UTC (rev 367)
@@ -41,6 +41,9 @@
 import re
 import sys
 
+from cgi import escape
+
+NOTICE         = re.compile(r"notice\s*:\s*([^\s]+)")
 WARNING        = re.compile(r"warning\s*:\s*([^\s]+)")
 WARNING_NOTICE = re.compile(r"(?:warning|notice)\s*:\s*([^\s]+)")
 
@@ -190,6 +193,69 @@
     def getAllRules(self):
         return self.all_rules
 
+    def globalWarnings(self, ds_id):
+        warnings = {}
+        for r in self.all_rules:
+            mark, expr = r.getMark(), r.getExpr()
+            if not mark or not expr: continue
+            # notices only
+            mark = NOTICE.search(mark)
+            if not mark: continue
+            mark = mark.group(1)
+
+            isNull = False
+            params = {}
+            for n in expr.getDependencies():
+                v = self.getData(n, ds_id)
+                if v is None: isNull = True; break
+                params[n] = v
+
+            if not isNull:
+                okay = True
+                try:
+                    okay = expr.evaluate(params)
+                except:
+                    okay = False
+
+                if not okay:
+                    try:
+                        t = warnings[mark]
+                    except KeyError:
+                        t = (self.widgets[mark], [])
+                        warnings[mark] = t
+                    t[1].append(r.getValue())
+        return warnings
+
+    def linksToGlobalWarnings(self, ds_id, navigation, link):
+        warnings = self.globalWarnings(ds_id)
+        if not warnings: return u""
+
+        out = [
+            u'<h1><a name="warning_list">%s</a></h1>' \
+            u'<ul>' % (len(warnings) > 1 and u"Hinweise" or u"Hinweis")]
+
+        for k, v in warnings.iteritems():
+            try:
+                page_name = self.widgets2pages[k]
+            except KeyError:
+                continue
+            tree_item = navigation.findTreeItemByPageName(page_name)
+            if not tree_item: continue
+            tree_item = tree_item.deepest_item()
+            link_text = link(tree_item, u"#f_" + k)
+            messages  = escape(u", ".join(v[1]))
+            desc      = escape(v[0].getDescription())
+            out.append(
+                u'<li>%s: <a href=%s class="required_missing" '
+                u'title="Der Wert des Feldes hat ggf. unbeabsichtigte Auswirkungen.">'
+                u'%s</a></li>' % (
+                    messages, link_text, desc))
+
+        out.append(u"</ul>")
+
+        return u"".join(out)
+        
+
     def warningsOnPage(self, page, ds_id):
         """ Generates a dictionary of warnings that should be displayed
             on a given page.

Modified: wasko/trunk/waskaweb/templates/casemanagement/phase.mako
===================================================================
--- wasko/trunk/waskaweb/templates/casemanagement/phase.mako	2009-03-11 16:02:34 UTC (rev 366)
+++ wasko/trunk/waskaweb/templates/casemanagement/phase.mako	2009-03-11 17:17:13 UTC (rev 367)
@@ -6,70 +6,12 @@
   <li><a href="/case/select/${session.get('case').id}">${_('cm_np_select')}</a></li>
   <li><a href="#">${_('case_cm_phase')}</a></li>
 </%def>
-<h1>${_('Case Management Prozess')}</h1>
-<h2>${_('Verwaltungsaufgaben')}</h2>
+
+% if c.global_warnings:
+<div class="form_errors">${c.global_warnings}</div>
+% endif
+
 <div class="waska_form">
-<p>
-Für die Fallakte stehen im Rahmen des Case Management Prozess verschiedene Verwaltungsfunktionen zur Verfügung. Hierzu gehört z.B die Wiederaufnahme von bereits betreuten Jugendlichen in das Programm, sowie der Abbruch einer Betreuung zu einem frühen Zeitpunkt</p> 
-<!--In Einzelfällen können bereits betreute Jugendliche erneut in das Programm aufgenommen werden. Je nach Art der letzten Beendigung wird dabei zwischen drei verschiedenen "Wiederaufnahmen" unterschieden. -->
-<table>
-  <tr>
-    <th class="table_header_h">Beschreibung</th>
-    <th class="table_header_h" width="180" align="right">Aktion</th>
-  </tr>
-  </tr>
-    <td><strong>Wiederaufnahme nach erfolgreicher Reintegration</strong>
-      <a target="_blank" href="/case/showhelp/wiederaufnahme"><img border="0" alt="Hilfesymbol" src="/images/icons/form_help.png"/></a>
-    </td>
-    <td align="right"><input type="button" value="Ausführen" disabled></td>
-  </tr>
-  <tr>
-    <td class="note">
-      Eine Wiederaufnahme ist derzeit nicht möglich, da der Fall nicht mit einer erfolgreichen Reintegration beendet wurde.
-    </td>
-    <td></td>
-  </tr>
-  <tr>
-    <td class="table_row_h"><strong>Neuaufnahme nach sonstiger Beendigung</strong>
-      <a target="_blank" href="/case/showhelp/wiederaufnahme"><img border="0" alt="Hilfesymbol" src="/images/icons/form_help.png"/></a>
-    </td>
-    <td class="table_row_h" align="right"><input type="button" value="Ausführen" disabled></td>
-  </tr>
-  <tr>
-    <td class="note table_row_h">
-      Eine Wiederaufnahme ist derzeit nicht möglich, da der Fall nicht mit einer sonstigen Beendigung beendet wurde.
-    </td>
-    <td class="table_row_h">&nbsp;</td>
-  </tr>
-  <tr>
-    <td><strong>Teilnahmeverlängerung</strong></td>
-    <td align="right"><input type="button" value="Ausführen" disabled></td>
-  </tr>
-  <tr>
-    <td class="note">
-      Eine Wiederaufnahme ist derzeit nicht möglich, da die Laufzeit des Falls noch nicht abgelaufen ist.
-    </td>
-    <td></td>
-  </tr>
-  <tr>
-    <td class="table_row_h"><strong>Abbruch der Eingangsdokumentation</strong>
-      <a target="_blank" href="/case/showhelp/abbruchdoku"><img border="0" alt="Hilfesymbol" src="/images/icons/form_help.png"/></a>
-    </td>
-    <td class="table_row_h" align="right"><input type="button" value="Ausführen" disabled></td>
-  </tr>
-  <tr>
-    <td class="note table_row_h">
-      Ein Abbruch der Eingangsdokumentation ist nicht mehr möglich, da Sie bereits die Phase B (Case Management) begonnen haben. 
-    </td>
-    <td class="table_row_h">&nbsp;</td>
-  </tr>
-</table>
-<p>Bei einer Wiederaufnahme bzw. Neuaufnahme werden die relevanten Abschnitte einer bereits vorgenommenen Abschlussbewertung in Teilen zur Dokumentation in der Eingangsdokumentation eingetragen, und die Abschlussbewertung gelöscht.</p>
-</div>
-<br>
-<hr>
-<br>
-<div class="waska_form">
 <h2>${_('case_cm_phase')}</h2>
 <form method="POST" action="${h.url_for(controller='/case', action='setPhaseAction')}">
   <input type="hidden" name="case_id" value="${session.get('case').id}">



More information about the Mpuls-commits mailing list