[Formed-commits] r297 - in trunk: . formed/formed/model formed/formed/plugins/modify
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Mon Dec 1 11:24:58 CET 2008
Author: torsten
Date: 2008-12-01 11:24:57 +0100 (Mon, 01 Dec 2008)
New Revision: 297
Modified:
trunk/ChangeLog
trunk/formed/formed/model/data.py
trunk/formed/formed/model/expr.py
trunk/formed/formed/plugins/modify/rules.py
Log:
Generate default rules for required fields
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2008-11-28 11:50:49 UTC (rev 296)
+++ trunk/ChangeLog 2008-12-01 10:24:57 UTC (rev 297)
@@ -1,3 +1,12 @@
+2008-12-01 Torsten Irländer <torsten.irlaender at intevation.de>
+
+ Added autmatic generation of required rules
+
+ * formed/formed/model/data.py,
+ formed/formed/model/expr.py,
+ formed/formed/plugins/modify/rules.py: Default rules for required
+ fields can now be generated.
+
2008-11-28 Sascha L. Teichmann <teichmann at intevation.de>
* formed/formed/model/data.py, formed/formed/model/nodecomponents.py:
Modified: trunk/formed/formed/model/data.py
===================================================================
--- trunk/formed/formed/model/data.py 2008-11-28 11:50:49 UTC (rev 296)
+++ trunk/formed/formed/model/data.py 2008-12-01 10:24:57 UTC (rev 297)
@@ -37,6 +37,7 @@
return VISIT_IGNORE_CHILDREN
elif isinstance(nc, Leaf) and not isinstance(nc,
(RuleLeaf, ExternalChoiceListLeaf, InfoLeaf)):
+ print nc.getName()
self.widgets.append(nc)
return VISIT_CONTINUE
@@ -239,6 +240,9 @@
self.expr = newExpr
Leaf.setAttribute(self, attrib, value, broadcast)
+ def setExpr(self, expr):
+ self.setAttribute('expr', expr)
+
def getExpr(self):
return self.expr
Modified: trunk/formed/formed/model/expr.py
===================================================================
--- trunk/formed/formed/model/expr.py 2008-11-28 11:50:49 UTC (rev 296)
+++ trunk/formed/formed/model/expr.py 2008-12-01 10:24:57 UTC (rev 297)
@@ -19,7 +19,7 @@
FLT_RE = re.compile(r'^([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)$')
INT_RE = re.compile(r'^([-+]?[0-9]+)$')
-VAR_RE = re.compile(r'^\$(\w+)$')
+VAR_RE = re.compile(r'^\$([\w\-_]+)$')
from shlex import split as lexsplit
Modified: trunk/formed/formed/plugins/modify/rules.py
===================================================================
--- trunk/formed/formed/plugins/modify/rules.py 2008-11-28 11:50:49 UTC (rev 296)
+++ trunk/formed/formed/plugins/modify/rules.py 2008-12-01 10:24:57 UTC (rev 297)
@@ -27,10 +27,34 @@
allModes = main.getAllModes()
collector = data.WidgetCollector()
- document.visit(collector.visitor, mode, allModes)
+ document.visit(collector.visitor)
widgets = collector.widgets
- print len(widgets)
+ # Get all rules in document
+ known_fields = set()
+ for r in document.findAllByClass(data.RuleLeaf, mode, allModes):
+ known_fields = known_fields.union(r.getExpr().getDependencies())
+ rule_counter = len(known_fields)
+ for w in widgets:
+ if w.getName() in known_fields: continue
+ flags = w.getFlags()
+ if flags.find('required') >= 0:
+ if isinstance(w, (data.ChoiceNode, data.RadioNode)):
+ expr = "$%s -1 == not" % w.getName()
+ else:
+ expr = "$%s not" % w.getName()
+ # create new rule
+ rule = data.RuleLeaf()
+ rule.setName("required-rule-%d" % rule_counter)
+ rule_counter += 1
+ rule.setExpr(expr)
+ rule.setValue("Fehlende Pflichtfeldangabe")
+ rule.setMark("warning:%s" % w.getName())
+ # add rule to the tree
+ parent = w.getParent()
+ parent.addChild(rule)
+
+
# vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 enc=utf-8 :
More information about the Formed-commits
mailing list