[Formed-commits] r315 - in trunk: . formed/formed/plugins/modify

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Fri Mar 13 19:18:18 CET 2009


Author: teichmann
Date: 2009-03-13 19:18:16 +0100 (Fri, 13 Mar 2009)
New Revision: 315

Modified:
   trunk/ChangeLog
   trunk/formed/formed/plugins/modify/rules.py
Log:
Make the error descriptions in date sequence rules more precise.



Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2009-03-13 15:58:54 UTC (rev 314)
+++ trunk/ChangeLog	2009-03-13 18:18:16 UTC (rev 315)
@@ -1,5 +1,10 @@
 2009-03-13	Sascha L. Teichmann <teichmann at intevation.de>
 
+	* formed/formed/plugins/modify/rules.py: Make the error descriptions
+	  in date sequence rules more precise.
+
+2009-03-13	Sascha L. Teichmann <teichmann at intevation.de>
+
 	* formed/formed/plugins/modify/rules.py: generate date sequence rules.
 
 2009-03-13	Sascha L. Teichmann <teichmann at intevation.de>

Modified: trunk/formed/formed/plugins/modify/rules.py
===================================================================
--- trunk/formed/formed/plugins/modify/rules.py	2009-03-13 15:58:54 UTC (rev 314)
+++ trunk/formed/formed/plugins/modify/rules.py	2009-03-13 18:18:16 UTC (rev 315)
@@ -19,7 +19,7 @@
 ORDER_RE = re.compile("([^;]*);(.*)")
 
 DATE_RULE_VALUE = \
-u"Das '%(b_desc)s' darf zeitlich nicht nach '%(a_desc)s' liegen."
+u"'%(a_desc)s' darf zeitlich nicht nach '%(b_desc)s' liegen."
 
 DATE_RULE_DESC = \
 u"'%(a)s' muss vor '%(b)s' liegen."
@@ -70,6 +70,23 @@
         for j in xrange(i + 1, N):
             yield (path[i], path[j])
 
+
+def descriptions(node):
+    out = []
+    while node:
+        desc = node.getDescription().strip()
+        if desc: out.insert(0, desc)
+        node = node.getParent()
+    return out
+
+def remove_common_head(s1, s2):
+    S1 = len(s1)
+    S2 = len(s2)
+    for i in xrange(min(S1, S2)):
+        if s1[i] != s2[i]:
+            return s1[i:], s2[i:]
+    return [], []
+
 class GenerateRequiredRules(Filter):
 
     def getMenuName(self):
@@ -154,9 +171,13 @@
             rule = data.RuleLeaf()
             rule.setName("date-sequence-rule-%d" % idx)
             d1, d2 = dates[pair[0]], dates[pair[1]]
+
+            desc1, desc2 = [u" / ".join(x) for x in remove_common_head(
+                descriptions(d1), descriptions(d2))]
+
             rule.setValue(DATE_RULE_VALUE % { 
-                'a_desc': d1.getDescription(),
-                'b_desc': d2.getDescription()})
+                'a_desc': desc1,
+                'b_desc': desc2 })
             param = { 'a': pair[0], 'b': pair[1] }
             rule.setDescription(DATE_RULE_DESC % param)
             rule.setExpr(DATE_RULE_EXPR % param)



More information about the Formed-commits mailing list