コード例 #1
0
    def test_db(self):

        expected_result = [[
            u'Dylan', u'Clayton', u'1030-1110', u'MO', u'Game Period',
            u'academic'
        ], [u'Stan', u'Nathaniel', u'830-910', u'TU', u'Math', u'academic']]

        datamembers = {
            'student': 'Nathaniel',
            'teacher': 'Stan',
            'subject': 'Math',
            'period': '830-910',
            'recordtype': 'academic',
            'dow': 'Tuesday'
        }

        args = dict(database=self.database,
                    refdatabase=self.database,
                    prepmap=self.prepmap,
                    of=self.of,
                    enums=self.enums,
                    datamembers=datamembers)

        obj = ssviewer_utils.dataset_add(**args)
        obj.keepversion = True
        obj.customtimestamp = "%y%m%d_%H%M%S"

        with self.database:
            _, rows, _ = tbl_rows_get(self.database, 'lesson', [
                'teacher', 'student', 'period', 'dow', 'subject', 'recordtype'
            ])

        self.assertListEqual(expected_result, rows)
コード例 #2
0
 def test_persist_multi_teacher(self):
     self.database = Database('htmlparser',True)
     with self.database:
         self.assertEquals(tbl_count_get(self.database,'teacher'),1)
         _,rowvals = tbl_rows_get(self.database,'teacher',['userdefid'])
              
     self.assertListEqual(rowvals,[['MOIRA']])
コード例 #3
0
    def test_persist_lesson(self):
        
        
        _dm = _cdict(['schedule_num','day_num','period_num','student_num'],[1,2,2,0])
    
        datamembers = _initdatamembers('lesson',**_dm)
    
        _enrich('QUAD CAFE',datamembers)
        
        lesson = _lesson_create(datamembers,self.database,self.of)
        with self.database:
            lesson.persist()
            
        self.database = Database('htmlparser',True)
        with self.database:
            colnames,rowvals =  tbl_rows_get(self.database,'lesson',datamembers.keys())
    
        
        rowvals = [str(val) for val in rowvals[0]]
        rowvals.sort()
        
        exp_res = datamembers.values()
        exp_res.sort()

        self.assertListEqual(rowvals,exp_res)
コード例 #4
0
    def test_add_dow(self):

        expected_result = [[u'Monday', u'MO', u'1'], [u'Tuesday', u'TU', u'2'],
                           [u'Thursday', u'TH', u'3'],
                           [u'Wednesday', u'WE',
                            u'4'], [u'Friday', u'FR', u'5'],
                           [u'XX', u'Foobarday', u'6']]

        objtype = 'dow'
        datamembers = {'name': 'XX', 'code': 'Foobarday'}

        args = dict(database=self.database,
                    refdatabase=self.database,
                    prepmap=self.prepmap,
                    of=self.of,
                    enums=self.enums,
                    objtype=objtype,
                    datamembers=datamembers)

        ssviewer_utils.dataset_add(**args)

        with self.database:
            _, rows, _ = tbl_rows_get(self.database, "dow",
                                      ['name', 'code', 'enum'])

        self.assertEqual(rows, expected_result)
コード例 #5
0
 def test_persist_multi_student(self):
     self.database = Database('htmlparser',True)
     with self.database:
         self.assertEquals(tbl_count_get(self.database,'student'),1)
         _,rowvals = tbl_rows_get(self.database,'student',['userdefid'])
              
     self.assertListEqual(rowvals,[['NATHANIEL']])
コード例 #6
0
    def test_add_period_object(self):

        expected_result = [[u'330-400']]

        objtype = 'period'
        datamembers = {'name': '330-400', 'code': '330'}

        args = dict(database=self.database,
                    refdatabase=self.database,
                    prepmap=self.prepmap,
                    of=self.of,
                    enums=self.enums,
                    objtype=objtype,
                    datamembers=datamembers)

        newobj = ssviewer_utils.dataset_add(**args)

        with self.database:
            _, rows, _ = tbl_rows_get(self.database, "period", ['name'],
                                      [["name", "=", "\"330-400\""]])

        self.assertEqual(rows, expected_result)

        expected_result = {
            'code': '330',
            'name': '330-400',
            'enum': 11,
            'objtype': 'period',
            'userobjid': '330-400'
        }

        newobj.dm.pop('id')

        #print newobj.dm,expected_result
        self.assertEqual(newobj.dm, expected_result)
コード例 #7
0
    def test_lesson(self):

        records = [[7, 'Tuesday', 'STEM', 'Thea', u'Simon A', '1-on-1'],
                   [6, 'Wednesday', 'Humanities', 'Jess', 'Liam', '1-on-1']]

        expected_results = [[
            u'Liam', u'WE', u'1210-1250', u'Jess', u'Humanities',
            u'Jess.Humanities.Wednesday.1210-1250'
        ],
                            [
                                u'Simon A', u'TU', u'1250-130', u'Thea',
                                u'STEM', u'Thea.STEM.Tuesday.1250-130'
                            ]]

        expected_results.sort()

        dbinsert_direct(self.database, records, 'lesson', 'test', [
            'period', 'dow', 'subject', 'adult', 'student', 'recordtype',
            'numstudents'
        ])

        with self.database:
            _, rows, _ = tbl_rows_get(
                self.database, 'lesson',
                ['student', 'dow', 'period', 'teacher', 'subject', 'session'])

        rows.sort()

        self.assertListEqual(expected_results, rows)
コード例 #8
0
    def test_update_add(self):

        # check that a record can be updated after it has been added
        expected_results = [['status', 'substatus', 'recordtype', 'period', 'dow', 'source', 'session', 'adult', 'student', 'id', 'objtype', 'prep', 'userobjid', 'subject'], 
                            [u'master', u'complete', u'academic', u'1030-1110', u'MO', u'dbinsert', u'Dylan.Game Period.Monday.1030-1110', u'Dylan', u'Clayton', 'lesson', 5, u'4.1.2.37.37', u'Game Period'], 
                            ['master', 'complete', 'academic', '1030-1110', u'TU', 'manual', 'Stan.Math.Tuesday.830-910', 'Stan', 'Nathaniel', 'lesson', 5, '1.2.1.2.4', 'Math']]

        datamembers = {'student':'Nathaniel',
                       'teacher':'Stan',
                       'subject':'Math',
                       'period':'830-910',
                       'recordtype':'academic',
                       'dow':'Tuesday'}

        args = dict(database=self.database,refdatabase=self.database,prepmap=self.prepmap,of=self.of,enums=self.enums,
                    datamembers=datamembers,keepversion=True)

        obj = ssviewer_utils.dataset_add(**args)

        obj.keepversion=True
        obj.customtimestamp = "%y%m%d_%H%M%S"
        newid = obj.update(self.of,'period','1030-1110',self.dbname)

        grid,colnames = ssviewer_utils.dataset_list(self.of,self.enums,columns=['status', 'substatus', 'recordtype', 'period', 'dow', 'source', 'session', 'adult', 'student', 'objtype', 'prep', 'userobjid', 'subject'])

        self.assertListEqual(grid,expected_results)

        # tests whats in the database
        expected_results = [[u'Dylan', u'Clayton', u'1030-1110', u'MO', u'Game Period', u'academic', u'current', u'master', u'complete', u'dbinsert'], 
                            [u'Stan', u'Nathaniel', u'830-910', u'TU', u'Math', u'academic', u'version', u'master', u'complete', u'manual'], 
                            [u'Stan', u'Nathaniel', u'1030-1110', u'TU', u'Math', u'academic', u'current', u'master', u'complete', u'manual']]
        with self.database:
            _,rows,_ = tbl_rows_get(self.database,'lesson',['teacher','student','period','dow','subject','recordtype','__version','status','substatus','source'])

        self.assertListEqual(rows,expected_results)
コード例 #9
0
    def test_2updates(self):
        
        expected_results = [[123, u'version'], [678, u'version'], [91011, u'current']]
        
        with self.database:        
            self.dbg.persist()
            origid = self.dbg.id

            self.dbg.update('col1',678)
            self.dbg.update('col1',91011)
            
            _,tbl_rows,_ = tbl_rows_get(self.database,'dbtbltest',['col1','__version'])
        
        
        # check the value has been updated
        self.assertEqual(self.dbg.col1,91011)
        
        #check the id should have been updated
        newid = self.dbg.id
        self.assertNotEqual(newid,origid) 
        
        # check the db representation
        self.assertListEqual(expected_results,tbl_rows)
        
        # check the internal dict representation
        self.assertEquals(self.dbg.dm,{'col1':91011})
コード例 #10
0
    def test_update_adult(self):

        expected_results = [
            [
                u'master', u'complete', u'academic', u'830-910', u'WE',
                u'dbinsert', u'[Dylan,Francisco].Movement.Wednesday.830-910',
                u'[Dylan,Francisco]', u'Nathaniel', 5, u'1.4.1.None.8',
                u'Movement'
            ],
            [
                u'master', u'complete', u'academic', u'830-910', u'WE',
                u'dbinsert', u'[Dylan,Francisco].Movement.Wednesday.830-910',
                u'Amelia', u'Nathaniel', 5, u'1.4.1.None.8', u'Movement'
            ]
        ]

        obj = self.of.query_advanced("lesson", [('period', '830-910'),
                                                ('dow', 'WE')])

        obj[0].update(self.of, 'teacher', 'Amelia')

        with self.database:
            _, rows, _ = tbl_rows_get(
                self.database,
                "lesson",
                fields=[
                    'status', 'substatus', 'recordtype', 'period', 'dow',
                    'source', 'session', 'teacher', 'student', 'prep',
                    'userobjid', 'subject'
                ],
                whereclause=[["period", "=", "\"830-910\""],
                             ["dow", "=", "\"WE\""]])

        self.assertListEqual(rows, expected_results)
コード例 #11
0
    def test_schdloadpsist_lessons(self):
        self.database = Database('htmlparser',True)
        exp_results = [['8:30-9:10','Monday','MOVEMENT','None','other'], 
                       ['8:30-9:10','Tuesday','MOVEMENT','None','other'], 
                       ['8:30-9:10','Wednesday','CHESS','RAHUL','break'], 
                       ['8:30-9:10','Thursday','CORE','None','other'], 
                       ['8:30-9:10','Friday','STEM','None','edu'], 
                       ['9:11-9:51','Monday','YOGA','None','other'], 
                       ['9:11-9:51','Tuesday','ART','None','edu'], 
                       ['9:11-9:51','Wednesday','READING PERIOD','NATHANIEL','other'], 
                       ['9:11-9:51','Thursday','SCIENCE','None','edu'], 
                       ['9:11-9:51','Friday','MOVEMENT','None','other'],
                       ['9:52-10:32','Monday','ELA','None','edu'], 
                       ['9:52-10:32','Tuesday','MATH','None','edu'], 
                       ['9:52-10:32','Wednesday','MUSIC','None','other'], 
                       ['9:52-10:32','Thursday','CHESS','RAHUL','break'], 
                       ['9:52-10:32','Friday','HUMANITIES','None','edu'],
                       ['10:33-11:13','Monday','None','DYLAN','nwp'], 
                       ['10:33-11:13','Tuesday','MATH','MOIRA','wp'], 
                       ['10:33-11:13','Wednesday','MATH','None','edu'],
                       ['10:33-11:13','Thursday','None','DYLAN','nwp'],
                       ['10:33-11:13','Friday','OT','None','edu'], 
                       ['11:13-11:45','Monday','LUNCH COMPUTER TIME','None','break'],
                       ['11:13-11:45','Tuesday','LUNCH COMPUTER TIME','None','break'], 
                       ['11:13-11:45','Wednesday','LUNCH COMPUTER TIME','None','break'], 
                       ['11:13-11:45','Thursday','LUNCH COMPUTER TIME','None','break'],
                       ['11:13-11:45','Friday','LUNCH COMPUTER TIME','None','break'],
                       ['11:45-12:25','Monday','ANIMAL RESEARCH','ISAAC','wp'], 
                       ['11:45-12:25','Tuesday','SOCIAL STUDIES','None','edu'],
                       ['11:45-12:25','Wednesday','MATH','DYLAN','wp'], 
                       ['11:45-12:25','Thursday','None','EMILY','psych'], 
                       ['11:45-12:25','Friday','None','None','None'], 
                       ['12:26-1:06','Monday','YOGA','DYLAN','other'], 
                       ['12:26-1:06','Tuesday','None','DYLAN','nwp'], 
                       ['12:26-1:06','Wednesday','None','RACHEL','nwp'], 
                       ['12:26-1:06','Thursday','SOCIAL STUDIES','None','edu'],
                       ['12:26-1:06','Friday','None','None','None'], 
                       ['1:07-1:47','Monday','SCIENCE','None','edu'], 
                       ['1:07-1:47','Tuesday','SOCIAL STUDIES','DYLAN','wp'],
                       ['1:07-1:47','Wednesday','MOVEMENT','None','other'], 
                       ['1:07-1:47','Thursday','SOCIAL STUDIES','RICKY','wp'],
                       ['1:07-1:47','Friday','None','None','None'],
                       ['1:48-2:28','Monday','SCIENCE','KAYLA','wp'], 
                       ['1:48-2:28','Tuesday','CORE','EMILY','other'], 
                       ['1:48-2:28','Wednesday','ELA','None','edu'],
                       ['1:48-2:28','Thursday','CHESS','RAHUL','break'], 
                       ['1:48-2:28','Friday','None','None','None'], 
                       ['2:30-3:00','Monday','END COMPUTER TIME','None','break'],
                       ['2:30-3:00','Tuesday','END COMPUTER TIME','None','break'], 
                       ['2:30-3:00','Wednesday','END COMPUTER TIME','None','break'],
                       ['2:30-3:00','Thursday','END COMPUTER TIME','None','break'],
                       ['2:30-3:00','Friday','None','None','None']]

        with self.database:
            self.assertEquals(tbl_count_get(self.database,'lesson'),50)
            _,rowvals = tbl_rows_get(self.database,'lesson',['period','dow','subject',
                                                             'teacher','lessontype'])
            
        self.assertListEqual(rowvals,exp_results)
コード例 #12
0
 def test_schdloadpsist_teacher(self):
     self.database = Database('htmlparser',True)
     with self.database:
         self.assertEquals(tbl_count_get(self.database,'teacher'),2)
         _,rowvals = tbl_rows_get(self.database,'teacher',['userdefid'])
     
         rowvals.sort()   
         self.assertListEqual(rowvals,[['NATHANIEL'],['RAHUL']])
コード例 #13
0
 def test_schdloadpsist_subject(self):
     self.database = Database('htmlparser',True)
     with self.database:
         self.assertEquals(tbl_count_get(self.database,'subject'),8)
         _,rowvals = tbl_rows_get(self.database,'subject',['userdefid'])
     
         rowvals.sort()   
         self.assertListEqual(rowvals,[['ART'],['CHESS'],['CORE'],['MOVEMENT'],['READING PERIOD'],['SCIENCE'],['STEM'],['YOGA']])
コード例 #14
0
 def test_persist_multi_period(self):
     self.database = Database('htmlparser',True)
     with self.database:
         self.assertEquals(tbl_count_get(self.database,'period'),3)
         _,rowvals = tbl_rows_get(self.database,'period',['userdefid'])
     
     rowvals.sort()
     self.assertListEqual(rowvals,[['10:33-11:13'],['1:07-1:47'],['2:30-3:00']])
コード例 #15
0
 def test_persist_multi_subject(self):
     self.database = Database('htmlparser',True)
     with self.database:
         self.assertEquals(tbl_count_get(self.database,'subject'),2)
         _,rowvals = tbl_rows_get(self.database,'subject',['userdefid'])
     
     rowvals.sort()         
     self.assertListEqual(rowvals,[['HUMANITIES'],['MATH']])
コード例 #16
0
 def test_persist_multi_dow(self):
     self.database = Database('htmlparser',True)
     with self.database:
         self.assertEquals(tbl_count_get(self.database,'dow'),2)
         _,rowvals = tbl_rows_get(self.database,'dow',['userdefid'])
     
     rowvals.sort()   
     self.assertListEqual(rowvals,[['Friday'],['Wednesday']])
コード例 #17
0
def _loadprepmapper(database):
    cols = ['name','prep']

    with database:
	_,rows,_ = tbl_rows_get(database,'student',cols)

    d = dict((row[0],row[1]) for row in rows)
    return d
コード例 #18
0
def _loadprepmapper(database):
    cols = ['name', 'prep']

    with database:
        _, rows, _ = tbl_rows_get(database, 'student', cols)

    d = dict((row[0], row[1]) for row in rows)
    return d
コード例 #19
0
    def test_dbobject_db_obj_insert(self):
        # tests that string values are wrapped in quotes
        with self.database:        
            #with self.assertRaises(Exception):
            self.dbg.persist()

            col_name,tbl_rows,_ = tbl_rows_get(self.database,'dbtbltest',['col1']) 
            self.assertEquals([["1.1.1"]],tbl_rows)
コード例 #20
0
    def test_schdloadpsiststudent(self):
        self.database = Database('htmlparser',True)
        exp_results =  [['NATHANIEL']]

        with self.database:
            self.assertEquals(tbl_count_get(self.database,'student'),1)
            _,rowvals = tbl_rows_get(self.database,'student',['userdefid'])
            
        self.assertListEqual(rowvals,exp_results)       
コード例 #21
0
    def test_schdloadpsistobjtype(self):
        self.database = Database('htmlparser',True)
        exp_results =  ['period','student','teacher','dow','lessontype','subject','lesson']

        with self.database:
            self.assertEquals(tbl_count_get(self.database,'objtype'),7)
            _,rowvals = tbl_rows_get(self.database,'objtype',['userdefid'])
            
        self.assertListEqual(rowvals,exp_results)
コード例 #22
0
    def test_(self):

        dbinsert(self.database, 'session2', self.rows, self.cols)

        with self.database:

            _, rows, _ = tbl_rows_get(self.database, 'session2', self.cols)

            print rows
コード例 #23
0
    def test_persist(self):
        with self.database:        
            self.dbg.persist()
        
        self.database = Database(test_db.name,True)

        with self.database:
            col_name,tbl_rows,_ = tbl_rows_get(self.database,'dbtbltest',['col1']) 
            self.assertEquals([["abc"]],tbl_rows)
コード例 #24
0
 def test_(self):
     
     dbinsert(self.database,'session2',self.rows,self.cols)
     
     with self.database:
         
         _,rows,_ = tbl_rows_get(self.database,'session2',self.cols)
     
         print rows
コード例 #25
0
 def test_(self):
     tbl_move(self.database1,self.database2,'workout',True)
     
     expected_results = [[250772, u'cycling'], [260772, u'rowing']]
     
     with self.database2:
         _,rows,_ = tbl_rows_get(self.database2,'workout')        
     
     self.assertListEqual(rows,expected_results)
コード例 #26
0
    def test_persist(self):

        with self.database:
            self.foobar.persist()

        self.database = Database('foobar',True)
        with self.database:
            col_name,tbl_rows,_ = tbl_rows_get(self.database,'DBLesson',['student','teacher']) 
            
            self.assertEquals([['Booker','Amelia']],tbl_rows)
コード例 #27
0
ファイル: test_sswizard.py プロジェクト: burtnolej/quadviewer
    def test_dbwrite(self):
        
        expected_result = [['830-910', u'Nathaniel', 'STAN.BK.DRA.MO', u'MO', '2']]
        
        cols = ['period','student','session','dow','saveversion']

        with self.database:
            colndefn,rows,exec_str = tbl_rows_get(self.database,'lesson',cols,[['saveversion',"=",'2']])
        
        self.assertListEqual(expected_result,rows)
コード例 #28
0
    def test_dbwrite(self):
        
        expected_result = [['830-910', u'Nathaniel', 'STAN.BK.DRA.MO', u'MO', '2']]
        
        cols = ['period','student','session','dow','saveversion']

        with self.database:
            colndefn,rows,exec_str = tbl_rows_get(self.database,'lesson',cols,[['saveversion',"=",'2']])
        
        self.assertListEqual(expected_result,rows)
コード例 #29
0
ファイル: Test_tcx2csv.py プロジェクト: burtnolej/quadviewer
    def test_1file_no_limits(self):

        self.tcxparser.persist(self.test_file_name)
        
        database = Database('foo',True)
        
        with database:
            _,rows,_ = tbl_rows_get(database,'foo')        
        
        self.assertListEqual(self.expected_results,rows)
コード例 #30
0
    def test_persist_customtimestamp(self):
        
        self.foobar.customtimestamp = "%y%m%d_%H%M%S"
        with self.database:
            self.foobar.persist()

        self.database = Database('foobar',True)
        with self.database:
            col_name,tbl_rows,_ = tbl_rows_get(self.database,'DBLesson',['__timestamp']) 
            
            self.assertTrue(13,len(tbl_rows[0][0]))
コード例 #31
0
ファイル: Test_tcx2csv.py プロジェクト: burtnolej/quadviewer
    def test_1file_no_limits_fail_to_write_to_db(self):

        self.tcxparser.persist(self.test_file_name,
                               column_names =["id","foobar","watts","hr","filename"])
        
        database = Database('foo',True)
        
        with database:
            _,rows,_ = tbl_rows_get(database,'foo')        
        
        self.assertListEqual([],rows)
コード例 #32
0
    def test_dbobject_db_str_insert(self):
        # tests that string values are wrapped in quotes
        with self.database:        
            #with self.assertRaises(S3OperationalError):
            self.dbg.persist()
                
        self.database = Database(test_db.name,True)

        with self.database:
            col_name,tbl_rows,_ = tbl_rows_get(self.database,'dbtbltest',['col1']) 
            self.assertEquals([["foobar"]],tbl_rows)
コード例 #33
0
ファイル: type_utils.py プロジェクト: burtnolej/hungrycrayon
 def __init__(self,dbname,tblname,fldname,**kwargs):
     
     database = Database(dbname)
     with database:
         rows = tbl_rows_get(database,tblname,
                                      [fldname])
         
         # rows is a tuple; list is element 2
         kwargs['set'] = [row[0] for row in rows[1]]
     
     super(DBSetMember,self).__init__(**kwargs)
     self.validations.append(_SetMemberVdt(**kwargs))
コード例 #34
0
ファイル: type_utils.py プロジェクト: burtnolej/quadviewer
 def __init__(self,dbname,tblname,fldname,**kwargs):
     
     database = Database(dbname)
     with database:
         rows = tbl_rows_get(database,tblname,
                                      [fldname])
         
         # rows is a tuple; list is element 2
         kwargs['set'] = [row[0] for row in rows[1]]
     
     super(DBSetMember,self).__init__(**kwargs)
     self.validations.append(_SetMemberVdt(**kwargs))
コード例 #35
0
    def test_dbwrite(self):
        
        expected_result = [[u'830-910', u'Nathaniel', u'AMEL.AC.ELA.MO', u'MO', u'4'], 
                           [u'910-950', u'Nathaniel', u'PARC.AC.ENG.MO', u'MO', u'4']]

     
        
        cols = ['period','student','session','dow','saveversion']
    
        with self.database:
                colndefn,rows,exec_str = tbl_rows_get(self.database,'lesson',cols,[['saveversion','=','4']])
    
        self.assertListEqual(expected_result,rows)
コード例 #36
0
    def test_schdloadpsist_lessons(self):
        self.database = Database('htmlparser',True)
        exp_results = [['8:30-9:10','Monday','MOVEMENT','None','other'], ['8:30-9:10','Tuesday','MOVEMENT','None','other'],
                       ['8:30-9:10','Wednesday','CHESS','RAHUL','break'],['8:30-9:10','Thursday','CORE','None','other'],
                       ['8:30-9:10','Friday','STEM','None','edu']]

        with self.database:
            self.assertEquals(tbl_count_get(self.database,'lesson'),5)
            _,rowvals = tbl_rows_get(self.database,'lesson',['period','dow','subject',
                                                             'teacher','lessontype'])
            

        self.assertListEqual(rowvals,exp_results)
コード例 #37
0
    def test_update_1field(self):
        
        expected_results = [[u'830', u'AM.AC.SC', u'Booker', u'Amelia', u'version'], 
                            [u'830', u'AM.AC.SC', u'Booker', u'Aaron', u'current']]
        self.foobar.customtimestamp = "%y%m%d_%H%M%S"
        with self.database:
            self.foobar.persist()
            self.foobar.update('teacher',"\"Aaron\"")

        self.database = Database('foobar',True)
        with self.database:
            col_name,tbl_rows,_ = tbl_rows_get(self.database,'DBLesson',['period','session','student','teacher','__version'] ) 
            
            self.assertListEqual(tbl_rows,expected_results)
コード例 #38
0
 def test_dbobject_assert_id(self):
     from datetime import datetime
     with self.database:        
         self.dbg.persist()
     self.database = Database(test_db.name,True)
     with self.database:
         col_name,tbl_rows,_ = tbl_rows_get(self.database,
                                          'dbtbltest',
                                          ['__timestamp','__id']) 
         dt = datetime.strptime(tbl_rows[0][0],"%H:%M:%S")
         
         self.assertAlmostEqual(datetime.now().min,dt.min)
         self.assertAlmostEqual(datetime.now().hour,dt.hour)
         self.assertAlmostEqual(datetime.now().second,dt.second)
コード例 #39
0
    def test_tbl_rows_insert(self):

        database = Database(test_db.name)
        
        with database:
            tbl_create(database,test_db.tbl_name,test_db.col_defn)
            tbl_rows_insert(database,test_db.tbl_name,test_db.col_name,
                            test_db.tbl_rows)

        database = Database(test_db.name,True)
        with database:
            col_name,tbl_rows = tbl_rows_get(database,test_db.tbl_name)        
            self.assertListEqual(col_name,test_db.col_name)
            self.assertListEqual(tbl_rows,test_db.tbl_rows)
コード例 #40
0
 def test_schdloadpsist_teacher(self):
     
     exp_res = ['DYLAN','EMILY','ISAAC','KAYLA','MELISSA','MOIRA','NATHANIEL','RACHEL','RAHUL', \
                'RICKY']
     
     self.database = Database('htmlparser',True)
     with self.database:
         _,rowvals = tbl_rows_get(self.database,'teacher',['userdefid'])
     
         rowvals.sort()   
         
         exp_res.sort()
         _exp_res = [[unicode(e,'utf-8')] for e in exp_res]
         
         self.assertListEqual(rowvals,_exp_res)
コード例 #41
0
    def test_period_db(self):

        expected_results = [[u'830-910', u'830', u'1'], 
                            [u'910-950', u'910', u'2'], 
                            [u'330-410', u'330', u'3']]
        
        ssrest.restquery(self.url + "add/period",
                         name='330-410',code='330')

        db = Database(self.dbname)
        
        with db:
            _,rows,_ = tbl_rows_get(db,'period',['name','code','enum'])
            
        self.assertListEqual(expected_results,rows)
コード例 #42
0
def dataset_loadref(database,
                    refdatabase,
                    of,
                    objtype,
                    saveversion=1,
                    unknown='N',
                    keepversion=False,
                    whereclause=[]):

    # load from database
    cols = ['name', 'code', 'enum']
    if objtype == "student":
        cols.append("prep")

    with database:
        colndefn, rows, exec_str = tbl_rows_get(database, objtype, cols,
                                                whereclause)
        log.log(thisfuncname(), 9, msg="dbread", exec_str=exec_str)

    # parse rows
    for row in rows:
        datamembers = {}
        for i in range(len(cols)):
            datamembers[cols[i]] = row[i]

        datamembers['objtype'] = objtype
        datamembers['userobjid'] = datamembers['name']

        obj = of.new(schoolschedgeneric,
                     objtype,
                     objid=datamembers['name'],
                     constructor='datamembers',
                     database=database,
                     of=of,
                     modname=__name__,
                     recursion=False,
                     dm=datamembers)

        log.log(thisfuncname(),
                10,
                msg="loading row",
                objtype=objtype,
                dm=datamembers)
コード例 #43
0
    def test_(self):
        start = "10:01"
        end = "20:02"
        new_file_name = "foo"
        ride_title = "foo_title"
        workout_type = "z2"

        row = _quotestrs(
            [[start, end, new_file_name, ride_title, workout_type]])
        self.dtr_tcx._write_to_db(row, self.dname, self.tname, self.cdefns,
                                  self.cnames)

        expected_results = [[u'10:01', u'20:02', u'foo', u'foo_title', u'z2']]

        database = Database(self.dname, True)
        with database:
            _, rows, _ = tbl_rows_get(database, self.tname)

        self.assertListEqual(expected_results, rows)
コード例 #44
0
ファイル: tcxParser.py プロジェクト: burtnolej/quadviewer
    def get_limits_from_db(self, tablename):
        database = Database(self.databasename, testexists=True)
        with database:
            _, rows, _ = tbl_rows_get(database, tablename)

        self.limits = {}
        for _row in rows:
            start_hour = 0
            end_hour = 0

            new_file_name = _row[2]

            self.limits[new_file_name] = {}
            self.limits[new_file_name]['start'] = self.time_to_seconds(_row[0])
            self.limits[new_file_name]['end'] = self.time_to_seconds(_row[1])

        log.log(PRIORITY.SUCCESS,
                msg="limits retreived from database [" + self.databasename +
                "[ for files [" + ",".join(self.limits.keys()) + "]")

        return self.limits
コード例 #45
0
    def test_add_period_db(self):

        expected_result = [[u'330-400']]

        objtype = 'period'
        datamembers = {'name': '330-400', 'code': '330'}

        args = dict(database=self.database,
                    refdatabase=self.database,
                    prepmap=self.prepmap,
                    of=self.of,
                    enums=self.enums,
                    objtype=objtype,
                    datamembers=datamembers)

        ssviewer_utils.dataset_add(**args)

        with self.database:
            _, rows, _ = tbl_rows_get(self.database, "period", ['name'],
                                      [["name", "=", "\"330-400\""]])

        self.assertEqual(rows, expected_result)
コード例 #46
0
    def test_add_adult(self):

        expected_result = [[u'Jon', u'JB', u'39']]

        objtype = 'adult'
        datamembers = {'name': 'Jon', 'code': 'JB', 'prep': 5}

        args = dict(database=self.database,
                    refdatabase=self.database,
                    prepmap=self.prepmap,
                    of=self.of,
                    enums=self.enums,
                    objtype=objtype,
                    datamembers=datamembers)

        ssviewer_utils.dataset_add(**args)

        with self.database:
            _, rows, _ = tbl_rows_get(self.database, "adult",
                                      ['name', 'code', 'enum'],
                                      [["name", "=", "\"Jon\""]])

        self.assertEqual(rows, expected_result)
コード例 #47
0
    def test_add_subject(self):

        expected_result = [[u'Cycling', u'CYCL', u'38']]

        objtype = 'subject'
        datamembers = {'name': 'Cycling', 'code': 'CYCL'}

        args = dict(database=self.database,
                    refdatabase=self.database,
                    prepmap=self.prepmap,
                    of=self.of,
                    enums=self.enums,
                    objtype=objtype,
                    datamembers=datamembers)

        obj = ssviewer_utils.dataset_add(**args)

        with self.database:
            _, rows, _ = tbl_rows_get(self.database, "subject",
                                      ['name', 'code', 'enum'],
                                      [["name", "=", "\"Cycling\""]])

        self.assertEqual(rows, expected_result)
コード例 #48
0
    def test_(self):
        self.dtr_tcx.load_page(self.baseurl)
        self.dtr_tcx.login(self.xpaths, self.uname, self.pword)

        self.xpaths[
            'rideListName'] = "//div[contains(@class,'ride-list-name')]"

        rides = self.dtr_tcx.get_rides(1)

        self.xpaths['downloadRide'] = "//a[contains(@class,'downloadRide')]"
        self.xpaths['rideListDate'] = "//p[contains(@class,'gray-light')]/span"
        self.xpaths['rideTitle'] = "//h1[contains(@class,'mb0')]/a"
        self.xpaths['notes'] = "//textarea[contains(@class,'form-control')]"

        self.dtr_tcx.download_rides(rides, self.xpaths)

        database = Database(self.dname, True)

        with database:
            _, rows, _ = tbl_rows_get(database, self.tname)

            self.assertTrue(len(rows), 1)
            self.assertTrue(len(rows[0]), 4)

        self.xpaths['rideListDate'] = "//p[contains(@class,'gray-light')]/span"
        self.xpaths['rideTitle'] = "//h1[contains(@class,'mb0')]/a"

        # get the file name that would have been downloaded
        # check it has been downloaded and then delete it
        self.dtr_tcx.mydriver.get(rides[0])

        ride_file_name = self.dtr_tcx._get_ride_file_name(
            rides[0], self.xpaths)

        self.assertTrue(os_file_exists(DOWNLOAD_DIR + "\\" + ride_file_name))

        os.remove(DOWNLOAD_DIR + "\\" + ride_file_name)
コード例 #49
0
    def test_update_add(self):

        # check that a record can be updated after it has been added
        expected_results = [[
            'status', 'substatus', 'recordtype', 'period', 'dow', 'source',
            'session', 'adult', 'student', 'id', 'objtype', 'prep',
            'userobjid', 'subject'
        ],
                            [
                                u'master', u'complete', u'academic',
                                u'1030-1110', u'MO', u'dbinsert',
                                u'Dylan.Game Period.Monday.1030-1110',
                                u'Dylan', u'Clayton', 'lesson', 5,
                                u'4.1.2.37.37', u'Game Period'
                            ],
                            [
                                'master', 'complete', 'academic', '1030-1110',
                                u'TU', 'manual', 'Stan.Math.Tuesday.830-910',
                                'Stan', 'Nathaniel', 'lesson', 5, '1.2.1.2.4',
                                'Math'
                            ]]

        datamembers = {
            'student': 'Nathaniel',
            'teacher': 'Stan',
            'subject': 'Math',
            'period': '830-910',
            'recordtype': 'academic',
            'dow': 'Tuesday'
        }

        args = dict(database=self.database,
                    refdatabase=self.database,
                    prepmap=self.prepmap,
                    of=self.of,
                    enums=self.enums,
                    datamembers=datamembers,
                    keepversion=True)

        obj = ssviewer_utils.dataset_add(**args)

        obj.keepversion = True
        obj.customtimestamp = "%y%m%d_%H%M%S"
        newid = obj.update(self.of, 'period', '1030-1110', self.dbname)

        grid, colnames = ssviewer_utils.dataset_list(
            self.of,
            self.enums,
            columns=[
                'status', 'substatus', 'recordtype', 'period', 'dow', 'source',
                'session', 'adult', 'student', 'objtype', 'prep', 'userobjid',
                'subject'
            ])

        self.assertListEqual(grid, expected_results)

        # tests whats in the database
        expected_results = [[
            u'Dylan', u'Clayton', u'1030-1110', u'MO', u'Game Period',
            u'academic', u'current', u'master', u'complete', u'dbinsert'
        ],
                            [
                                u'Stan', u'Nathaniel', u'830-910', u'TU',
                                u'Math', u'academic', u'version', u'master',
                                u'complete', u'manual'
                            ],
                            [
                                u'Stan', u'Nathaniel', u'1030-1110', u'TU',
                                u'Math', u'academic', u'current', u'master',
                                u'complete', u'manual'
                            ]]
        with self.database:
            _, rows, _ = tbl_rows_get(self.database, 'lesson', [
                'teacher', 'student', 'period', 'dow', 'subject', 'recordtype',
                '__version', 'status', 'substatus', 'source'
            ])

        self.assertListEqual(rows, expected_results)
コード例 #50
0
ファイル: sswizard.py プロジェクト: burtnolej/quadviewer
    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])
コード例 #51
0
ファイル: dbtableviewer.py プロジェクト: burtnolej/quadviewer
    def load(self,afterinsert=False,values=None):
        
        colwidths = []
        
        if afterinsert==True:
            # we dont need to reload the headers as this an update of existing table
            self.clear(1)

        database = Database(self.dbname_entry_sv.get())
        whereclauses = []
        
        if self.pred1_entry_sv.get() <> "":
            
            whereclauses.append([self.pred1_entry_sv.get(),
                                 self.pred1_op_entry_sv.get(),
                                 self.predval1_entry_sv.get()])

            log.log(thisfuncname(),9,msg="where clause specified",whereclauses=whereclauses)
            
        if self.pred2_entry_sv.get() <> "":
            
            whereclauses.append([self.pred2_entry_sv.get(),
                                 self.pred2_op_entry_sv.get(),
                                 self.predval2_entry_sv.get()])

            log.log(thisfuncname(),9,msg="where clause specified",whereclauses=whereclauses)
            
        if self.pred3_entry_sv.get() <> "":
            
            whereclauses.append([self.pred3_entry_sv.get(),
                                 self.pred3_op_entry_sv.get(),
                                 self.predval3_entry_sv.get()])

            log.log(thisfuncname(),9,msg="where clause specified",whereclauses=whereclauses)

            
        with database:
            colndefn,rows,exec_str = tbl_rows_get(database,self.tblname_entry_sv.get(),"*",whereclauses)
            
            self.lastquery_text_sv.set(exec_str)
            self.lastquery_rowcount_text_sv.set(str(len(rows)))
            
            log.log(thisfuncname(),3,func=tbl_rows_get,msg=str(len(rows))+"rows loaded",table=self.tblname_entry_sv.get())
                                    
            for y in range(len(colndefn)):
        
                self.dbcol_defn.append(colndefn[y])
                
                new_value = colndefn[y]
                
                print y
                
                self.entrygrid.widgets[0][y].sv.set(new_value)
                self.entrygrid.widgets[0][y].current_value = new_value
                
                self.newrowgrid.widgets[0][y].sv.set(new_value)
                self.newrowgrid.widgets[0][y].current_value = new_value
                
                # reset init_value for headers after we have loaded   
                # so we can determine a new column from an updated column
                self.entrygrid.widgets[0][y].init_value = new_value
                self.newrowgrid.widgets[0][y].init_value = new_value
                
            print rows
            #for x in range(len(rows)):
            for x in range(self.maxrows-1): # 1 taken up for header
                for y in range(len(rows[x])):
                    
                    #try:
                    new_value = rows[x][y]
                    
                    # current widget
                    widget = self.entrygrid.widgets[x+1][y]
                    
                    # this is so the entry widgets can distinguish between
                    # nothing loaded and a space loaded
                    if new_value == "": new_value = "<SPACE>"
                    
                    # +1 to avoid the header row
                    widget.sv.set(new_value)
                    widget.current_value = new_value
                    
                    # and set the style back to not updated
                    widget['style'] = 'OutOfFocus.Notchanged.TEntry'
                    
                    try:
                        if len(str(new_value)) > colwidths[y]: 
                            colwidths[y]=len(str(new_value))
                            
                    except IndexError:
                        colwidths.append(len(str(new_value)))

        # after load store the column headers for easy lookup later
        self.colnames = colndefn
        
        for i in range(len(colwidths)):
            self.entrygrid.canvasframe.grid_columnconfigure(i,weight=colwidths[i],uniform="foo")
            self.newrowgrid.canvasframe.grid_columnconfigure(i,weight=colwidths[i],uniform="foo")
コード例 #52
0
def dataset_load(database,
                 refdatabase,
                 of,
                 enums,
                 saveversion=1,
                 unknown='N',
                 prep=-1,
                 period="all",
                 dow="all",
                 teacher="all",
                 student="all",
                 source="dbinsert",
                 keepversion=False):

    of.reset()

    whereclause = []
    if keepversion == True:
        ''' if versioning enabled make sure to only recover the latest/current version '''
        whereclause = [['__version', '=', "\"current\""]]

    # saveversion
    log.log(thisfuncname(), 3, msg="loading", saveversion=str(saveversion))
    whereclause.append(['saveversion', "=", saveversion])

    # 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 <> -1:
        whereclause.append(['prep', "=", prep])
    log.log(thisfuncname(), 3, msg="loading", prep=str(prep))

    # period
    if period <> "all":
        whereclause.append(['period', "=", "\"" + period + "\""])
    log.log(thisfuncname(), 3, msg="loading", prep=str(prep))

    # dow
    if dow <> "all":
        whereclause.append(['dow', "=", "\"" + dow + "\""])
    log.log(thisfuncname(), 3, msg="loading", dow=str(dow))

    # teacher
    if teacher <> "all":
        whereclause.append(['teacher', "=", "\"" + teacher + "\""])
    log.log(thisfuncname(), 3, msg="loading", teacher=str(teacher))

    # student
    if student <> "all":
        whereclause.append(['student', "=", "\"" + student + "\""])
    log.log(thisfuncname(), 3, msg="loading", student=str(student))

    # source
    #if source <> "dbinsert":
    _sources = ["\"" + _source + "\"" for _source in source.split(",")]
    whereclause.append(['source', "in", "(" + ",".join(_sources) + ")"])
    log.log(thisfuncname(), 3, msg="loading", source=str(source))

    # load from database
    #cols = ['period','student','session','dow','prep','teacher','subject','userobjid','status','substatus','recordtype','source','__id','record']
    cols = [
        'period', 'student', 'session', 'dow', 'prep', 'teacher', 'subject',
        'userobjid', 'status', 'substatus', 'recordtype', 'source', '__id'
    ]

    with database:

        colndefn, rows, exec_str = tbl_rows_get(database, 'lesson', cols,
                                                whereclause)

        log.log(thisfuncname(), 9, msg="dbread", exec_str=exec_str)

    #cols = ['period','student','session','dow','prep','adult','subject','userobjid','status','substatus','recordtype','source','id','record']
    cols = [
        'period', 'student', 'session', 'dow', 'prep', 'adult', 'subject',
        'userobjid', 'status', 'substatus', 'recordtype', 'source', 'id'
    ]

    # parse rows
    for row in rows:
        datamembers = {}
        for i in range(len(cols)):
            datamembers[cols[i]] = row[i]

        # this is a hack to quickly get a clean lessontype into the server
        datamembers['recordtype'] = datamembers['recordtype'].split(".")[0]
        if datamembers['recordtype'] == "subject":
            datamembers['recordtype'] = "academic"

        _, lessontype_code, _, _ = datamembers['session'].split(".")
        datamembers['objtype'] = 'lesson'

        lesson = of.new(schoolschedgeneric,
                        'lesson',
                        objid=datamembers['userobjid'],
                        constructor='datamembers',
                        database=database,
                        of=of,
                        modname=__name__,
                        dm=datamembers)

        _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)):
        if of.store.has_key(cols[i]):
            log.log(thisfuncname(),
                    3,
                    msg="lesson obj created",
                    num=len(of.store[cols[i]]))
        else:
            log.log(thisfuncname(),
                    3,
                    msg="no records found to be loaded for",
                    record=cols[i])