Change interface of <for> tag, to understand external data sets.

portnov [2008-06-26 18:25:39]
Change interface of <for> tag, to understand external data sets.
Filename
.gitignore
charts.pyc
compiler.pyc
data.pyc
gui.pyc
pg_backend.pyc
reportgen.py
reportgen.pyc
sqlite_backend.pyc
temp/reportgen.pyc
widgets.pyc
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..28c6fd7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*.swp
+.*.swp
+*.pyc
diff --git a/charts.pyc b/charts.pyc
deleted file mode 100644
index c18324a..0000000
Binary files a/charts.pyc and /dev/null differ
diff --git a/compiler.pyc b/compiler.pyc
deleted file mode 100644
index 17a54f4..0000000
Binary files a/compiler.pyc and /dev/null differ
diff --git a/data.pyc b/data.pyc
deleted file mode 100644
index cecd22c..0000000
Binary files a/data.pyc and /dev/null differ
diff --git a/gui.pyc b/gui.pyc
deleted file mode 100644
index 693c407..0000000
Binary files a/gui.pyc and /dev/null differ
diff --git a/pg_backend.pyc b/pg_backend.pyc
deleted file mode 100644
index 25dd200..0000000
Binary files a/pg_backend.pyc and /dev/null differ
diff --git a/reportgen.py b/reportgen.py
index e148dd3..97900ce 100755
--- a/reportgen.py
+++ b/reportgen.py
@@ -176,6 +176,7 @@ class Generator(object):
       self.params[name] = self.calculate_value(query,kind)
     sqltags = self.xml.findall('sql')
     self.sql = dict()
+    self.externals = dict()
     for t in sqltags:
       self.sql[t.attrib['id']] = t.text
     header = TEX_HEADER % (self.title, self.author)
@@ -202,11 +203,20 @@ class Generator(object):
       r = r + t
     return r,c

+  def get_dataset(name):
+    if name in self.sql:
+      query = self.render(self.sql[name], context)
+      data = self.backend.query(self.conn,query)
+    elif name in self.externals:
+      data = self.externals[name]
+    else;
+      raise KeyError("%s is not a name of SQL query nor a name of external dataset" % name)
+    return data
+
   def do_for(self,node,context):
     r = ''
     qid = node.attrib['query']
-    query = self.render(self.sql[qid], context)
-    data = self.backend.query(self.conn,query)
+    data = get_dataset(qid)
     i = 0
     idname = qid+'.#'
     for row in data:
diff --git a/reportgen.pyc b/reportgen.pyc
deleted file mode 100644
index 2aafa5e..0000000
Binary files a/reportgen.pyc and /dev/null differ
diff --git a/sqlite_backend.pyc b/sqlite_backend.pyc
deleted file mode 100644
index 6f64970..0000000
Binary files a/sqlite_backend.pyc and /dev/null differ
diff --git a/temp/reportgen.pyc b/temp/reportgen.pyc
deleted file mode 100644
index fb20eb4..0000000
Binary files a/temp/reportgen.pyc and /dev/null differ
diff --git a/widgets.pyc b/widgets.pyc
deleted file mode 100644
index 5266cef..0000000
Binary files a/widgets.pyc and /dev/null differ
ViewGit