import repository from arizona
[raven.git] / owl / server / owllib.py
1 import sys
2 from mod_python import apache
3 from xml.sax.saxutils import *
4 import MySQLdb
5 import string
6
7 class Field:
8     def __init__(self, name = None, module = None, type = None, heading = None, 
9                  headingAlign = None, align = None, stats = None, description = None):
10         self.name = name
11         self.module = module.name
12         self.type = type
13         self.heading = heading
14         self.headingAlign = headingAlign
15         self.align = align
16         if stats == None:
17             self.stats = []
18         else:
19             self.stats = stats
20         self.description = description
21         self.fname = "%s.%s" % (module.name,name)
22
23
24 class Module:
25     def __init__(self, name = None, heading = None, fields = None, version=None, order=None, 
26                  fieldNames = None):
27         self.name = name
28         self.heading = heading
29         self.version = version
30         self.order = order
31         if fields == None:
32             self.fields = []
33         else:
34             self.fields = fields
35         if fieldNames == None:
36             self.fieldNames = []
37         else:
38             self.fieldNames = fieldNames
39
40
41 def get_modules(dbconn):
42
43     modules = []
44     cursor = dbconn.execute("SELECT `module` FROM `modules` ORDER BY `order`,`module`")
45     rows = cursor.fetchall()
46     for row in rows:
47         m = Module(name = escape(row[0]))
48         cursor = dbconn.execute("SELECT `heading`,`fields` FROM `modules` WHERE `module` = '%s'" % 
49                                  (m.name))
50         row = cursor.fetchone()
51         m.heading = escape(row[0])
52         m.fieldNames = escape(row[1]).split(',')
53         debug(None, "fieldNames = %s" % (m.fieldNames))
54         modules.append(m)
55     return modules
56
57
58 def get_fields(dbconn, module):
59
60     debug(None, "GetFields")
61     fields = []
62     for field in module.fieldNames:
63         debug(None, "field = %s" % (field))
64         f = Field(field, module)
65         cursor = dbconn.execute("SELECT `heading`, `headingAlign`, `align`, `stats`, `description`, `type` FROM `columns` WHERE `field` = '%s'" % (f.fname))
66         row = cursor.fetchone()
67         if row:
68             f.heading = escape(row[0])
69             f.headingAlign = quoteattr(row[1])
70             f.align = quoteattr(row[2])
71             tmp = escape(row[3]).split(",")
72             for s in tmp:
73                 f.stats.append(s)
74             f.description = escape(row[4])
75             f.type = row[5]
76             fields.append(f)
77     return fields
78
79 def info(request, msg):
80     if request != None:
81         request.log_error(msg, apache.APLOG_INFO)
82     else:
83         apache.log_error(msg, apache.APLOG_INFO)
84
85 def debug(request, msg):
86     if request != None:
87         request.log_error(msg, apache.APLOG_DEBUG)
88     else:
89         apache.log_error(msg, apache.APLOG_DEBUG)
90
91 def owl_dbname_prefix(pre):
92     global prefix
93
94     prefix = pre
95
96 def owl_dbname(name):
97     global prefix
98     return prefix + name
99