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): dbname='service_getrecord_1lesson' self.database = Database(dbname) self.of = ObjFactory(True) enums = sswizard_utils.setenums(dow="all",prep=-1,database=self.database) args = dict(database=self.database,refdatabase=self.database,saveversion=1, of=self.of,enums=enums) ssviewer_utils.dataset_load(**args)
def setUp(self): dbname = CURRENTDIR + "/" + THISEXEC + "/" + 'service_getrecord_1lesson' self.database = Database(dbname) self.of = ObjFactory(True) enums = sswizard_utils.setenums(dow="all", prep=-1, database=self.database) args = dict(database=self.database, refdatabase=self.database, saveversion=1, of=self.of, enums=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 load(self, saveversion=None, values=None, dow=None, prep=None): whereclause = [] # dbname if self.dbname <> self.dbname_entry_sv.get(): log.log(thisfuncname(), 3, msg="dbname changed", oldname=self.dbname, newname=self.dbname_entry_sv.get()) self.database = Database(self.dbname_entry_sv.get()) self.dbname = self.dbname_entry_sv.get() # make sure that the refdatabase is the same as the database self.refdatabase = Database(self.dbname_entry_sv.get()) # saveversion if saveversion == None or saveversion == "": saveversion = self.dbload_entry_sv.get() if saveversion == "": log.log(thisfuncname(), 1, msg="no saveversion set for load; exception") raise Exception("attempting to load without a saveversion set") else: log.log(thisfuncname(), 3, msg="loading", saveversion=str(saveversion)) whereclause.append(['saveversion', "=", saveversion]) # prep if prep == None: prep = self.prep_entry_sv.get() if prep == "": prep = -1 else: whereclause.append(['prep', "=", prep]) log.log(thisfuncname(), 3, msg="loading", prep=str(prep)) # dow if dow == None: dow = self.dow_entry_sv.get() if dow == "": dow = "all" else: whereclause.append(['dow', "=", "\"" + dow + "\""]) log.log(thisfuncname(), 3, msg="loading", dow=str(dow)) # get enums self.enums = sswizard_utils.setenums(dow, prep, self.refdatabase) whereclause.append(['saveversion', "=", saveversion]) log.log(thisfuncname(), 3, msg="loading", saveversion=str(saveversion)) cols = ['period', 'student', 'session', 'dow'] if values == None: with self.database: whereclause.append(['teacher', "<>", "\"" + "??" + "\""]) colndefn, rows, exec_str = tbl_rows_get( self.database, 'lesson', cols, whereclause) log.log(thisfuncname(), 9, msg="dbread", exec_str=exec_str) whereclause = whereclause[:-1] whereclause.append(['teacher', "=", "\"" + "??" + "\""]) colndefn, noteacherrows, exec_str = tbl_rows_get( self.database, 'lesson', cols, whereclause) log.log(thisfuncname(), 9, msg="dbread", exec_str=exec_str) if len(rows) == 0: log.log(thisfuncname(), 2, msg="no rows detected", whereclause=whereclause) for row in rows: z = session = row[cols.index('session')] period = row[cols.index('period')] student = row[cols.index('student')] x = self.enums['student']['name2enum'][student] y = self.enums['period']['name2enum'][str(period)] self.entrygrid.widgets[x][y].sv.set(session) self.entrygrid.widgets[0][y].sv.set(period) self.entrygrid.widgets[x][0].sv.set(student) log.log(thisfuncname(), 3, msg="loading row", period=period, student=str(student), sv=saveversion, x=x, y=y, value=z) for noteacherrow in noteacherrows: z = session = noteacherrow[cols.index('session')] period = noteacherrow[cols.index('period')] student = noteacherrow[cols.index('student')] x = self.enums['student']['name2enum'][student] y = self.enums['period']['name2enum'][str(period)] if self.entrygrid.widgets[x][y].sv.get() == "": self.entrygrid.widgets[x][y].sv.set(session) log.log(thisfuncname(), 3, msg="loading no teacher row", period=period, student=str(student), sv=saveversion, x=x, y=y, value=z) else: for x in range(len(values)): for y in range(len(values[0])): self.entrygrid.widgets[x][y].sv.set(values[x][y])
def save(self, saveversion=None): self.of.reset() if self.dbname <> self.dbname_entry_sv.get(): log.log(thisfuncname(), 3, msg="dbname changed", oldname=self.dbname, newname=self.dbname_entry_sv.get()) self.database = Database(self.dbname_entry_sv.get()) self.dbname = self.dbname_entry_sv.get() # make sure that the refdatabase is the same as the database self.refdatabase = Database(self.dbname_entry_sv.get()) if saveversion == None or saveversion == "": if self.dbload_entry_sv.get() == None or self.dbload_entry_sv.get( ) == "": log.log(thisfuncname(), 1, msg="no saveversion set for save; exception") raise Exception("attempting to save without a saveversion set") else: saveversion = self.dbload_entry_sv.get() # prep prep = self.prep_entry_sv.get() if prep == "": prep = -1 # dow dow = self.dow_entry_sv.get() if dow == "": dow = "all" log.log(thisfuncname(), 3, msg="saving save version=", saveversion=str(saveversion), prep=prep, dow=dow) # get enums self.enums = sswizard_utils.setenums(dow, prep, self.refdatabase) for x in range(1, self.maxrows): for y in range(1, self.maxcols): period = self.entrygrid.widgets[0][y].sv.get() student = self.entrygrid.widgets[x][0].sv.get() session = self.entrygrid.widgets[x][y].sv.get() if session <> "": period_enum = x student_enum = y session_enum = self.enums['session']['name2enum'][session] obj_id = ",".join( map(str, [period_enum, student_enum, session_enum])) #obj_id = session teacher_code, lessontype_code, subject_code, dow = session.split( ".") try: teacher = self.enums['adult']['code2name'][ teacher_code] except KeyError: log.log(thisfuncname(), 5, msg="could not find in enum; using **", teacher_code=teacher_code) teacher = "**" try: lessontype = self.enums['lessontype']['code2name'][ lessontype_code] except KeyError: log.log(thisfuncname(), 5, msg="could not find in enum; using **", lessontype_code=lessontype_code) lessontype = "**" try: subject = self.enums['subject']['code2name'][ subject_code] except KeyError: log.log(thisfuncname(), 5, msg="could not find in enum; using **", subject_code=subject_code) subject = "**" datamembers = dict( schedule='1', dow=dow, subject=subject, lessontype=lessontype, objtype='lesson', userobjid=obj_id, # unique key to store obj in of period=period, prep=prep, student=student, teacher=teacher, saveversion=saveversion, session=session) lesson = self.of.new(schoolschedgeneric, 'lesson', objid=obj_id, constructor='datamembers', database=self.database, of=self.of, modname=__name__, dm=datamembers) setattr(self.entrygrid.widgets[x][y], "lesson", lesson) self.lesson_change(lesson)
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)
def setUp(self): self.database = Database(CURRENTDIR + "/" + THISEXEC + "/" + 'test_sswizard') self.enums = setenums('all', '5', self.database)
def load(self, saveversion=None, dow=None, prep=None, period=None, teacher=None, student=None, source=None, unknown=None): self.of.reset() # database name if self.dbname_entry_sv.get() <> self.dbname: newdb = self.dbname_entry_sv.get() log.log(thisfuncname(), 3, msg="switching databases", olddb=self.dbname, newdb=newdb) self.database = Database(newdb) self.dbname = newdb # saveversion if saveversion == None or saveversion == "": saveversion = self.dbload_entry_sv.get() if saveversion == "": log.log(thisfuncname(), 1, msg="no saveversion set for load; exception") raise Exception("attempting to load without a saveversion set") # unknown if unknown == None: unknown = self.unknown_checkbutton_sv.get() # prep if prep == None: prep = self.prep_entry_sv.get() if prep == "": prep = -1 # period if period == None: period = self.period_entry_sv.get() if period == "": period = "all" # dow if dow == None: dow = self.dow_entry_sv.get() if dow == "": dow = "all" # teacher if teacher == None: teacher = self.teacher_label_sv.get() if teacher == "": teacher = "all" # student if student == None: student = self.student_label_sv.get() if student == "": student = "all" # source if source == None: source = self.source_label_sv.get() if source == "": source = "dbinsert" # get enums self.enums = sswizard_utils.setenums(dow, prep, self.refdatabase) ssviewer_utils.dataset_load(self.database, self.refdatabase, self.of, self.enums, saveversion, unknown, prep, period, dow, teacher, student, source) # get enums self.enums = sswizard_utils.setenums(dow, prep, self.refdatabase)
def load(self,saveversion, dow=None, prep=None, period=None, teacher=None, student=None, source=None, unknown='N'): self.of.reset() whereclause = [] # unknown if unknown=='N': whereclause.append(['student',"<>","\"??\""]) whereclause.append(['subject',"<>","\"??\""]) whereclause.append(['teacher',"<>","\"??\""]) log.log(thisfuncname(),3,msg="loading",unknown=str(unknown)) # prep if prep==None: prep = -1 else: whereclause.append(['prep',"=",prep]) log.log(thisfuncname(),3,msg="loading",prep=str(prep)) # period if period==None: prep = -1 else: whereclause.append(['period',"=","\""+period+"\""]) log.log(thisfuncname(),3,msg="loading",prep=str(prep)) # dow if dow==None: dow = "all" else: whereclause.append( ['dow',"=","\""+dow+"\""]) log.log(thisfuncname(),3,msg="loading",dow=str(dow)) # teacher if teacher==None: teacher = "all" else: whereclause.append( ['teacher',"=","\""+teacher+"\""]) log.log(thisfuncname(),3,msg="loading",teacher=str(teacher)) # student if student==None: student = "all" else: whereclause.append( ['student',"=","\""+student+"\""]) log.log(thisfuncname(),3,msg="loading",student=str(student)) # source if source==None: source = "dbinsert" else: _sources = ["\"" + _source + "\"" for _source in source.split(",")] whereclause.append( ['source',"in","("+",".join(_sources)+")"]) log.log(thisfuncname(),3,msg="loading",source=str(source)) # get enums self.enums = sswizard_utils.setenums(dow,prep,self.refdatabase) # load from database cols = ['period','student','session','dow','teacher','subject','userobjid','status','substatus','recordtype','source'] with self.database: colndefn,rows,exec_str = tbl_rows_get(self.database,'lesson',cols,whereclause) log.log(thisfuncname(),9,msg="dbread",exec_str=exec_str) cols = ['period','student','session','dow','adult','subject','userobjid','status','substatus','recordtype','source'] # parse rows for row in rows: datamembers = {} for i in range(len(cols)): datamembers[cols[i]] = row[i] _,lessontype_code,_,_ = datamembers['session'].split(".") #lessontype = self.enums['lessontype']['code2name'][lessontype_code] datamembers['objtype'] = 'lesson' lesson = self.of.new(schoolschedgeneric,'lesson',objid=datamembers['userobjid'], constructor='datamembers',database=self.database, of=self.of,modname=__name__,dm=datamembers) self.lesson_change(lesson) log.log(thisfuncname(),3,msg="loading row",dm=datamembers) # post log with results log.log(thisfuncname(),3,msg="db rows loaded",num=len(rows)) for i in range(len(cols)): log.log(thisfuncname(),3,msg="lesson obj created",num=len(self.of.store[cols[i]]))
def load(self,saveversion=None, dow=None, prep=None, period=None, teacher=None, student=None, source=None, unknown=None): self.of.reset() # database name if self.dbname_entry_sv.get() <> self.dbname: newdb = self.dbname_entry_sv.get() log.log(thisfuncname(),3,msg="switching databases",olddb=self.dbname,newdb=newdb) self.database = Database(newdb) self.dbname = newdb # saveversion if saveversion==None or saveversion== "": saveversion = self.dbload_entry_sv.get() if saveversion == "": log.log(thisfuncname(),1,msg="no saveversion set for load; exception") raise Exception("attempting to load without a saveversion set") # unknown if unknown==None: unknown = self.unknown_checkbutton_sv.get() # prep if prep==None: prep=self.prep_entry_sv.get() if prep == "": prep = -1 # period if period==None: period=self.period_entry_sv.get() if period == "": period = "all" # dow if dow==None: dow = self.dow_entry_sv.get() if dow == "": dow = "all" # teacher if teacher==None: teacher = self.teacher_label_sv.get() if teacher == "": teacher = "all" # student if student==None: student = self.student_label_sv.get() if student == "": student = "all" # source if source==None: source = self.source_label_sv.get() if source == "": source = "dbinsert" # get enums self.enums = sswizard_utils.setenums(dow,prep,self.refdatabase) ssviewer_utils.dataset_load(self.database,self.refdatabase,self.of,self.enums,saveversion,unknown,prep,period, dow,teacher,student,source) # get enums self.enums = sswizard_utils.setenums(dow,prep,self.refdatabase)
def load(self,saveversion=None,values=None, dow=None, prep=None): whereclause = [] # dbname if self.dbname <> self.dbname_entry_sv.get(): log.log(thisfuncname(),3,msg="dbname changed",oldname=self.dbname,newname=self.dbname_entry_sv.get()) self.database = Database(self.dbname_entry_sv.get()) self.dbname = self.dbname_entry_sv.get() # saveversion if saveversion==None or saveversion== "": saveversion = self.dbload_entry_sv.get() if saveversion == "": log.log(thisfuncname(),1,msg="no saveversion set for load; exception") raise Exception("attempting to load without a saveversion set") else: log.log(thisfuncname(),3,msg="loading",saveversion=str(saveversion)) whereclause.append(['saveversion',"=",saveversion]) # prep if prep==None: prep=self.prep_entry_sv.get() if prep == "": prep = -1 else: whereclause.append(['prep',"=",prep]) log.log(thisfuncname(),3,msg="loading",prep=str(prep)) # dow if dow==None: dow = self.dow_entry_sv.get() if dow == "": dow = "all" else: whereclause.append( ['dow',"=","\""+dow+"\""]) log.log(thisfuncname(),3,msg="loading",dow=str(dow)) # get enums self.enums = sswizard_utils.setenums(dow,prep,self.refdatabase) whereclause.append(['saveversion',"=",saveversion]) log.log(thisfuncname(),3,msg="loading",saveversion=str(saveversion)) cols = ['period','student','session','dow'] if values==None: with self.database: whereclause.append(['teacher',"<>","\"" + "??" + "\""]) colndefn,rows,exec_str = tbl_rows_get(self.database,'lesson',cols,whereclause) log.log(thisfuncname(),9,msg="dbread",exec_str=exec_str) whereclause = whereclause[:-1] whereclause.append(['teacher',"=","\"" + "??" + "\""]) colndefn,noteacherrows,exec_str = tbl_rows_get(self.database,'lesson',cols,whereclause) log.log(thisfuncname(),9,msg="dbread",exec_str=exec_str) if len(rows) == 0: log.log(thisfuncname(),2,msg="no rows detected",whereclause=whereclause) for row in rows: z = session = row[cols.index('session')] period = row[cols.index('period')] student = row[cols.index('student')] x = self.enums['student']['name2enum'][student] y = self.enums['period']['name2enum'][str(period)] self.entrygrid.widgets[x][y].sv.set(session) self.entrygrid.widgets[0][y].sv.set(period) self.entrygrid.widgets[x][0].sv.set(student) log.log(thisfuncname(),3,msg="loading row",period=period,student=str(student),sv=saveversion, x=x,y=y,value=z) for noteacherrow in noteacherrows: z = session = noteacherrow[cols.index('session')] period = noteacherrow[cols.index('period')] student = noteacherrow[cols.index('student')] x = self.enums['student']['name2enum'][student] y = self.enums['period']['name2enum'][str(period)] if self.entrygrid.widgets[x][y].sv.get() == "": self.entrygrid.widgets[x][y].sv.set(session) log.log(thisfuncname(),3,msg="loading no teacher row",period=period,student=str(student),sv=saveversion, x=x,y=y,value=z) else: for x in range(len(values)): for y in range(len(values[0])): self.entrygrid.widgets[x][y].sv.set(values[x][y])
def save(self,saveversion=None): self.of.reset() if self.dbname <> self.dbname_entry_sv.get(): log.log(thisfuncname(),3,msg="dbname changed",oldname=self.dbname,newname=self.dbname_entry_sv.get()) self.database = Database(self.dbname_entry_sv.get()) self.dbname = self.dbname_entry_sv.get() if saveversion==None or saveversion == "": if self.dbload_entry_sv.get()==None or self.dbload_entry_sv.get() == "": log.log(thisfuncname(),1,msg="no saveversion set for save; exception") raise Exception("attempting to save without a saveversion set") else: saveversion = self.dbload_entry_sv.get() # prep prep=self.prep_entry_sv.get() if prep == "":prep = -1 # dow dow = self.dow_entry_sv.get() if dow == "": dow = "all" log.log(thisfuncname(),3,msg="saving save version=",saveversion=str(saveversion),prep=prep,dow=dow) # get enums self.enums = sswizard_utils.setenums(dow,prep,self.refdatabase) for x in range(1,self.maxrows): for y in range(1,self.maxcols): period=self.entrygrid.widgets[0][y].sv.get() student=self.entrygrid.widgets[x][0].sv.get() session = self.entrygrid.widgets[x][y].sv.get() if session <> "": period_enum = x student_enum = y session_enum = self.enums['session']['name2enum'][session] obj_id = ",".join(map(str,[period_enum,student_enum,session_enum])) #obj_id = session teacher_code,lessontype_code,subject_code,dow = session.split(".") try: teacher = self.enums['adult']['code2name'][teacher_code] except KeyError: log.log(thisfuncname(),5,msg="could not find in enum; using **",teacher_code=teacher_code) teacher = "**" try: lessontype = self.enums['lessontype']['code2name'][lessontype_code] except KeyError: log.log(thisfuncname(),5,msg="could not find in enum; using **",lessontype_code=lessontype_code) lessontype = "**" try: subject = self.enums['subject']['code2name'][subject_code] except KeyError: log.log(thisfuncname(),5,msg="could not find in enum; using **",subject_code=subject_code) subject = "**" datamembers = dict(schedule = '1', dow=dow, subject=subject, lessontype=lessontype, objtype='lesson', userobjid=obj_id, # unique key to store obj in of period=period, student=student, teacher=teacher, saveversion=saveversion, session=session) lesson = self.of.new(schoolschedgeneric, 'lesson', objid=obj_id, constructor='datamembers', database=self.database, of=self.of, modname=__name__, dm=datamembers) setattr(self.entrygrid.widgets[x][y],"lesson",lesson) self.lesson_change(lesson)
def setUp(self): self.database = Database('test_sswizard_utils') self.enums = setenums('all','3',self.database)