示例#1
0
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)
示例#4
0
    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)
示例#5
0
    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)
示例#6
0
    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])
示例#7
0
    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)
示例#8
0
    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)
示例#9
0
    def setUp(self):

        self.database = Database(CURRENTDIR + "/" + THISEXEC + "/" +
                                 'test_sswizard')
        self.enums = setenums('all', '5', self.database)
示例#10
0
    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)
示例#11
0
    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]]))
示例#12
0
    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)
示例#13
0
    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])
示例#14
0
    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)