def _run(port,**xtraargs): print "launching service... pid=",os.getpid() _dbname,refdbname = sswizard_utils.getdatabase() globals()['dbname'] = _dbname urls = ( '/(\w+)', 'Student', '/student/(\w+)', 'Student', '/subject/(\w+)', 'Subject', '/adult/(\w+)', 'Adult', '/list/(\w+)', 'List', '/load/(\w+)', 'Load', '/schema/(\w+)', 'Schema', '/id/(\w+)', 'SearchID', '/criteria/(\w+)', 'SearchCriteria', '/add/(\w+)', 'Add', '/new/(\w+)', 'New', '/command/(\w+)','Command', '/update/(\w+)','UpdateID', '/updateuid/(\w+)','UpdateUID', '/refdata/(\w+)','Refdata', '/form/(\w+)','Form', '/last/(\w+)','Last' ) globals()['database'] = Database(dbname) refdatabase = Database(refdbname) #of = ObjFactory(True) #enums = sswizard_utils.setenums(dow="all",prep=-1,database=refdatabase) globals()['of'] = ObjFactory(True) globals()['enums'] = sswizard_utils.setenums(dow="all",prep=-1,database=refdatabase) globals()['prepmap'] = sswizard_utils._loadprepmapper(database) args = dict(database=database,refdatabase=refdatabase, saveversion=1,of=of,enums=enums,keepversion=True) if xtraargs<>{}: for k,v in xtraargs.iteritems(): args[k] = v ssviewer_utils.dataset_load(**args) # get a mapping of userobjid to db refid (__id) as of uses the former to index but the web page # uses __id as they are easier to pass in URL with database: globals()['dbidlookup'] = sswizard_query_utils._dbid2userdefid(database,asdict=True) #app = web.application(urls, locals()) globals()['app'] = web.application(urls, globals()) #globals()['app'].add_processor(mutex_processor()) sys.argv.append(str(port)) app.run()
def setUp(self): self.dbname='test_ssviewer_rest_dump' self.database = Database(self.dbname) self.of = ObjFactory(True) self.enums = sswizard_utils.setenums(dow="all",prep=-1,database=self.database) self.prepmap = sswizard_utils._loadprepmapper(self.database) args = dict(database=self.database,refdatabase=self.database,saveversion=1,of=self.of,enums=self.enums) ssviewer_utils.dataset_load(**args)
def setUp(self): self.dbname = CURRENTDIR + "/" + THISEXEC + "/" + 'test_ssviewer_rest_dump' self.database = Database(self.dbname) self.of = ObjFactory(True) self.enums = sswizard_utils.setenums(dow="all", prep=-1, database=self.database) self.prepmap = sswizard_utils._loadprepmapper(self.database) args = dict(database=self.database, refdatabase=self.database, saveversion=1, of=self.of, enums=self.enums) ssviewer_utils.dataset_load(**args)
def GET(self,cmd): web.header('Access-Control-Allow-Origin','*') web.header('Access-Control-Allow-Credientials','true') if cmd=="stop": print "bringing down service...." app.stop() elif cmd=="ping": return("ping") elif cmd=="stats": return(len(of.query('lesson'))) elif cmd=="config": return(len(of.query('lesson'))) elif cmd=="reload": data = web.input() xtraargs={} for attr,attr_val in data.iteritems(): xtraargs[attr] = attr_val #globals()['dbname'] = _dbname globals()['database'] = Database(globals()['dbname']) refdatabase = globals()['database'] globals()['of'] = ObjFactory(True) globals()['enums'] = sswizard_utils.setenums(dow="all",prep=-1,database=refdatabase) globals()['prepmap'] = sswizard_utils._loadprepmapper(database) args = dict(database=database,refdatabase=refdatabase, saveversion=1,of=of,enums=enums,keepversion=True) if xtraargs<>{}: for k,v in xtraargs.iteritems(): args[k] = v ssviewer_utils.dataset_load(**args) logstr = "reloading " + globals()['dbname'] log.log(thisfuncname(),3,msg=logstr) # get a mapping of userobjid to db refid (__id) as of uses the former to index but the web page # uses __id as they are easier to pass in URL with database: globals()['dbidlookup'] = sswizard_query_utils._dbid2userdefid(database,asdict=True) elif cmd=="dump": data = web.input() #objtypes = data['objtypes'].split(",") #fields = data['fields'].split(",") #pprint = data['pprint'].split(",") listfields = ['objtypes','omitfields','fields'] dictfields = ['constraints'] boolfields = ['fieldnames','objref'] urldict = {} for field in listfields: try: urldict[field] = data[field].split(",") except: pass for field in boolfields: urldict[field] = False try: if data[field] == "1": urldict[field] = True print field except: pass for field in dictfields: try: _urldict = {} for nvp in data[field].split(","): k,v = nvp.split("=") _urldict[k]=v urldict[field] = _urldict except: pass if data.has_key('pprint'): if data['pprint']=="0": pprint=False else: pprint=True results = of.dumpobjrpt(**urldict) if data.has_key('count'): if data['count']=="0": return(len(results)) css = "body { width:3000px;}" css += "table { border: 1px solid #f00;}" css += "td {border: 1px solid #000;word-wrap:break-word;}" if pprint == True: #_o_str = "<html><style>"+css+"</style><body><table>" _o_str = "<table>" for _output in results: _o_str = _o_str + "<tr>" for _o in _output: _o_str+="<td>"+str(_o)+"</td>" #.ljust(15)[:15] _o_str += "</tr>" #return _o_str+"</table></body></html>" return _o_str+"</table>" else: return(results)