db_webui.py
Go to the documentation of this file.
1 #! /usr/bin/env python
2 
3 """
4 usage: %(progname)s [args]
5 
6 """
7 
8 import os, sys, string, time, getopt
9 
10 import roslib
11 roslib.load_manifest("webui")
12 from pyclearsilver.log import *
13 
14 from webui import config
15 
16 from pyclearsilver import odb, hdfhelp, odb_sqlite3
17 from pyclearsilver import CSPage
18 
19 from pyclearsilver.odb import *
20 
21 from pyclearsilver import odb
22 from pyclearsilver import hdfhelp
23 
24 from launchman import app
25 
26 def path2taskid(path):
27  p = []
28  package = None
29 
30  while path != "/":
31  base, fn = os.path.split(path)
32 
33  p.insert(0, fn)
34  if os.path.exists(os.path.join(base, "manifest.xml")):
35  base, package = os.path.split(base)
36  break
37  path = base
38  if path == "/":
39  return None
40 
41  fn = apply(os.path.join, p)
42 
43  return os.path.join(package, fn).replace(".app", "")
44 
45 class WebUIDB(odb.Database):
46  def __init__(self,conn,debug=0):
47  odb.Database.__init__(self, conn, debug=debug)
48 
49  self.addTable("robots", "ir_robots", RobotTable, rowClass=Robot)
50  self.addTable("apps", "ir_apps", ApplicationTable, rowClass=Application)
51  self.addTable("appgroups", "ir_app_groups", AppGroupTable, rowClass=AppGroup)
52 
53  def defaultRowClass(self):
54  return hdfhelp.HdfRow
56  return hdfhelp.HdfItemList
57 
58 
59 
60 
61 class RobotTable(odb.Table):
62  def _defineRows(self):
63  self.d_addColumn("robotid", kInteger,primarykey=1, unique=1,
64  autoincrement=1)
65  self.d_addColumn("name", kVarString)
66 
67 class Robot(hdfhelp.HdfRow):
68  pass
69 
70 class ApplicationTable(odb.Table):
71  def _defineRows(self):
72  self.d_addColumn("appid", kInteger,primarykey=1, unique=1,
73  autoincrement=1)
74  self.d_addColumn("taskid", kVarString, unique=1)
75 
76  def installAppWithPath(self, appfn):
77  appfn = os.path.abspath(appfn)
78 
79  taskid = path2taskid(appfn)
80  return self.installApp(taskid)
81 
82  def installApp(self, taskid):
83  row = self.newRow()
84  row.taskid = taskid
85  row.save()
86  return row
87 
88  def removeApp(self, taskid):
89  row = self.lookup(taskid=taskid)
90  row.delete()
91 
92  def listApps(self):
93  rows = self.fetchAllRows()
94  return rows
95 
96 class Application(hdfhelp.HdfRow):
97  def fetchApp(self, prefix, hdf):
98  _app = app.App(str(self.taskid))
99  doc = _app.load_yaml()
100 
101  hdf.setValue(prefix + "." + "package", _app.package)
102 
103  for key, val in doc.items():
104  if val is not None:
105  hdf.setValue(prefix + "." + key, val)
106  else:
107  hdf.setValue(prefix + "." + key, '')
108 
109 
110 class AppGroupTable(odb.Table):
111  def _defineRows(self):
112  self.d_addColumn("id", kVarString, primarykey=1, autoincrement=1)
113  self.d_addColumn("userid", kInteger)
114  self.d_addColumn("appids", kVarString)
115  self.d_addColumn("category", kVarString)
116 
117 class AppGroup(hdfhelp.HdfRow):
118  def appIdList(self):
119  return self.appids.split(',')
120 
121  #def apps(hdfhelp.HdfRow):
122 
123 
124 
125 def fullDBPath(path_to_store):
126  return os.path.join(path_to_store, "webui.db3")
127 
128 def initSchema(create=0, timeout=None):
129  if timeout is None: timeout = 600
130 
131  path = config.getDBPath("webui")
132 
133  if create == 1:
134  config.createDBPath(path)
135 
136  conn = odb_sqlite3.Connection(fullDBPath(path),
137  timeout=timeout)
138 
139  db = WebUIDB(conn,debug=debug)
140 
141  if create:
142  db.createTables()
143  db.synchronizeSchema()
144  db.createIndices()
145 
146  if 0:
147  if config.gWebUserID is not None and config.gWebGroupID is not None:
148  config.webChown(fullDBPath(path))
149 
150 
151  return db
152 
153 def exists():
154  path = config.getDBPath("webui")
155  fn = fullDBPath(path)
156  if os.path.exists(fn):
157  return 1
158  return 0
159 
160 
161 def test():
162  pass
163 
164 def usage(progname):
165  print __doc__ % vars()
166 
167 def main(argv, stdout, environ):
168  progname = argv[0]
169  optlist, args = getopt.getopt(argv[1:], "", ["help", "test", "debug"])
170 
171  testflag = 0
172 
173  for (field, val) in optlist:
174  if field == "--help":
175  usage(progname)
176  return
177  elif field == "--debug":
178  debugfull()
179  elif field == "--test":
180  testflag = 1
181 
182  if testflag:
183  test()
184  return
185 
186  db = initSchema(create=1)
187 
188 
189 
190 if __name__ == "__main__":
191  main(sys.argv, sys.stdout, os.environ)
192 
193 
194 
def initSchema(create=0, timeout=None)
Definition: db_webui.py:128
def fetchApp(self, prefix, hdf)
Definition: db_webui.py:97
def usage(progname)
Definition: db_webui.py:164
def __init__(self, conn, debug=0)
Definition: db_webui.py:46
def main(argv, stdout, environ)
Definition: db_webui.py:167
def fullDBPath(path_to_store)
Definition: db_webui.py:125


webui
Author(s): Scott Hassan
autogenerated on Mon Jun 10 2019 15:51:24