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

        # Check that a label is successfully built from the supplied fieldname
        self.assert_(Field('abc', 'string').label == 'Abc',
                     'Label built is incorrect')
        self.assert_(Field('abc_def', 'string').label == 'Abc Def',
                     'Label built is incorrect')
コード例 #2
0
ファイル: test_dal.py プロジェクト: codestrophe/events
 def testTableInheritance(self):
     persons = Table(None, 'persons', Field('firstname', 'string'),
                     Field('lastname', 'string'))
     customers = Table(None, 'customers', Field('items_purchased',
                                                'integer'), persons)
     self.assert_(
         set(customers.fields).issuperset(
             set(['items_purchased', 'firstname', 'lastname'])))
コード例 #3
0
 def testRun(self):
     db = DAL('sqlite:memory:')
     db.define_table('t', Field('a'), Field('b', default='x'),
                     Field('c', compute=lambda r: r.a + r.b))
     db.commit()
     id = db.t.insert(a="z")
     self.assertEqual(db.t[id].c, 'zx')
     db.t.drop()
     db.commit()
コード例 #4
0
ファイル: test_dal.py プロジェクト: codestrophe/events
 def testRun(self):
     db = DAL(DEFAULT_URI, check_reserved=['all'])
     db.define_table('tt', Field('aa'), Field('bb', default='x'),
                     Field('cc', compute=lambda r: r.aa + r.bb))
     db.commit()
     id = db.tt.insert(aa="z")
     self.assertEqual(db.tt[id].cc, 'zx')
     db.tt.drop()
     db.commit()
コード例 #5
0
ファイル: test_dal.py プロジェクト: codestrophe/events
    def testTableAlias(self):
        db = DAL(DEFAULT_URI, check_reserved=['all'])
        persons = Table(db, 'persons', Field('firstname', 'string'),
                        Field('lastname', 'string'))
        aliens = persons.with_alias('aliens')

        # Are the different table instances with the same fields

        self.assert_(persons is not aliens)
        self.assert_(set(persons.fields) == set(aliens.fields))
コード例 #6
0
    def testTableAlias(self):
        db = DAL('sqlite:memory:')
        persons = Table(db, 'persons', Field('firstname',
                           'string'), Field('lastname', 'string'))
        aliens = persons.with_alias('aliens')

        # Are the different table instances with the same fields

        self.assert_(persons is not aliens)
        self.assert_(set(persons.fields) == set(aliens.fields))
コード例 #7
0
ファイル: db.py プロジェクト: bkrn/flask-example
def create_db_connection(migrate=False):
    """Connect to the database. Returns the connection.
    """
    db = DAL('sqlite://db.sqlite', migrate=migrate)

    db.define_table(
        'users',
        Field('username', 'string', length=50, required=True, unique=True),
        Field('password', 'string', length=128, required=True))

    return db
コード例 #8
0
ファイル: test_dal.py プロジェクト: pyslan/cursojulho12
 def testRun(self):
     db = DAL('sqlite:memory:')
     db.define_table('t1', Field('a'))
     db.define_table('t2', Field('a'), Field('b', db.t1))
     i1 = db.t1.insert(a='1')
     i2 = db.t1.insert(a='2')
     i3 = db.t1.insert(a='3')
     db.t2.insert(a='4', b=i1)
     db.t2.insert(a='5', b=i2)
     db.t2.insert(a='6', b=i2)
     self.assertEqual(len(db(db.t1.id
                       == db.t2.b).select(orderby=db.t1.a
                       | db.t2.a)), 3)
     self.assertEqual(db(db.t1.id == db.t2.b).select(orderby=db.t1.a
                       | db.t2.a)[2].t1.a, '2')
     self.assertEqual(db(db.t1.id == db.t2.b).select(orderby=db.t1.a
                       | db.t2.a)[2].t2.a, '6')
     self.assertEqual(len(db().select(db.t1.ALL, db.t2.ALL,
                      left=db.t2.on(db.t1.id == db.t2.b),
                      orderby=db.t1.a | db.t2.a)), 4)
     self.assertEqual(db().select(db.t1.ALL, db.t2.ALL,
                      left=db.t2.on(db.t1.id == db.t2.b),
                      orderby=db.t1.a | db.t2.a)[2].t1.a, '2')
     self.assertEqual(db().select(db.t1.ALL, db.t2.ALL,
                      left=db.t2.on(db.t1.id == db.t2.b),
                      orderby=db.t1.a | db.t2.a)[2].t2.a, '6')
     self.assertEqual(db().select(db.t1.ALL, db.t2.ALL,
                      left=db.t2.on(db.t1.id == db.t2.b),
                      orderby=db.t1.a | db.t2.a)[3].t1.a, '3')
     self.assertEqual(db().select(db.t1.ALL, db.t2.ALL,
                      left=db.t2.on(db.t1.id == db.t2.b),
                      orderby=db.t1.a | db.t2.a)[3].t2.a, None)
     self.assertEqual(len(db().select(db.t1.ALL, db.t2.id.count(),
                      left=db.t2.on(db.t1.id == db.t2.b),
                      orderby=db.t1.a | db.t2.a, groupby=db.t1.a)),
                      3)
     self.assertEqual(db().select(db.t1.ALL, db.t2.id.count(),
                      left=db.t2.on(db.t1.id == db.t2.b),
                      orderby=db.t1.a | db.t2.a,
                      groupby=db.t1.a)[0]._extra[db.t2.id.count()],
                      1)
     self.assertEqual(db().select(db.t1.ALL, db.t2.id.count(),
                      left=db.t2.on(db.t1.id == db.t2.b),
                      orderby=db.t1.a | db.t2.a,
                      groupby=db.t1.a)[1]._extra[db.t2.id.count()],
                      2)
     self.assertEqual(db().select(db.t1.ALL, db.t2.id.count(),
                      left=db.t2.on(db.t1.id == db.t2.b),
                      orderby=db.t1.a | db.t2.a,
                      groupby=db.t1.a)[2]._extra[db.t2.id.count()],
                      0)
     db.t1.drop()
     db.t2.drop()
コード例 #9
0
 def testRun(self):
     db = DAL(DEFAULT_URI, check_reserved=['all'])
     db.define_table('tt', Field('aa', 'list:string'), Field('bb','string'))
     self.assertEqual(db.tt.insert(aa=['aaa','bbb'],bb='aaa'), 1)
     self.assertEqual(db.tt.insert(aa=['bbb','ddd'],bb='abb'), 2)
     self.assertEqual(db.tt.insert(aa=['eee','aaa'],bb='acc'), 3)
     self.assertEqual(db(db.tt.aa.contains('aaa')).count(), 2)
     self.assertEqual(db(db.tt.aa.contains('bbb')).count(), 2)
     self.assertEqual(db(db.tt.aa.contains('aa')).count(), 0)
     self.assertEqual(db(db.tt.bb.contains('a')).count(), 3)
     self.assertEqual(db(db.tt.bb.contains('b')).count(), 1)
     self.assertEqual(db(db.tt.bb.contains('d')).count(), 0)
     self.assertEqual(db(db.tt.aa.contains(db.tt.bb)).count(), 1)
     db.tt.drop()
コード例 #10
0
    def testFieldTypes(self):

        # Check that string, text, and password default length is 512
        for typ in ['string', 'password']:
            self.assert_(Field('abc', typ).length == 512,
                         "Default length for type '%s' is not 512 or 255" % typ)

        # Check that upload default length is 512
        self.assert_(Field('abc', 'upload').length == 512,
                     "Default length for type 'upload' is not 128")

        # Check that Tables passed in the type creates a reference
        self.assert_(Field('abc', Table(None, 'temp')).type
                      == 'reference temp',
                     'Passing an Table does not result in a reference type.')
コード例 #11
0
 def testRun(self):
     db = DAL('sqlite:memory:')
     db.define_table('t', Field('a'))
     self.assertEqual(db.t.insert(a='1'), 1)
     self.assertEqual(db.t.insert(a='2'), 2)
     self.assertEqual(db.t.insert(a='3'), 3)
     self.assertEqual(len(db(db.t.id > 0).select()), 3)
     self.assertEqual(db(db.t.id > 0).select(orderby=~db.t.a
                       | db.t.id)[0].a, '3')
     self.assertEqual(len(db(db.t.id > 0).select(limitby=(1, 2))), 1)
     self.assertEqual(db(db.t.id > 0).select(limitby=(1, 2))[0].a,
                      '2')
     self.assertEqual(len(db().select(db.t.ALL)), 3)
     self.assertEqual(len(db(db.t.a == None).select()), 0)
     self.assertEqual(len(db(db.t.a != None).select()), 3)
     self.assertEqual(len(db(db.t.a > '1').select()), 2)
     self.assertEqual(len(db(db.t.a >= '1').select()), 3)
     self.assertEqual(len(db(db.t.a == '1').select()), 1)
     self.assertEqual(len(db(db.t.a != '1').select()), 2)
     self.assertEqual(len(db(db.t.a < '3').select()), 2)
     self.assertEqual(len(db(db.t.a <= '3').select()), 3)
     self.assertEqual(len(db(db.t.a > '1')(db.t.a < '3').select()), 1)
     self.assertEqual(len(db((db.t.a > '1') & (db.t.a < '3')).select()), 1)
     self.assertEqual(len(db((db.t.a > '1') | (db.t.a < '3')).select()), 3)
     self.assertEqual(len(db((db.t.a > '1') & ~(db.t.a > '2')).select()), 1)
     self.assertEqual(len(db(~(db.t.a > '1') & (db.t.a > '2')).select()), 0)
     db.t.drop()
コード例 #12
0
 def testRun(self):
     db = DAL('sqlite:memory:')
     db.define_table('t', Field('a'))
     self.assertEqual(db.t.insert(a='1'), 1)
     self.assertEqual(db.t.insert(a='2'), 2)
     self.assertEqual(db.t.insert(a='3'), 3)
     self.assertEqual(len(db(db.t.a.belongs(('1', '3'))).select()), 2)
     self.assertEqual(
         len(db(db.t.a.belongs(db(db.t.id > 2)._select(db.t.a))).select()),
         1)
     self.assertEqual(
         len(
             db(
                 db.t.a.belongs(
                     db(db.t.a.belongs(
                         ('1', '3')))._select(db.t.a))).select()), 2)
     self.assertEqual(
         len(
             db(
                 db.t.a.belongs(
                     db(
                         db.t.a.belongs(
                             db(db.t.a.belongs(('1', '3')))._select(
                                 db.t.a)))._select(db.t.a))).select()), 2)
     db.t.drop()
コード例 #13
0
ファイル: test_dal.py プロジェクト: codestrophe/events
 def testRun(self):
     db = DAL(DEFAULT_URI, check_reserved=['all'])
     db.define_table('tt', Field('aa'))
     self.assertEqual(db.tt.insert(aa='1'), 1)
     self.assertEqual(db.tt.insert(aa='2'), 2)
     self.assertEqual(db.tt.insert(aa='3'), 3)
     self.assertEqual(db(db.tt.id > 0).count(), 3)
     self.assertEqual(
         db(db.tt.id > 0).select(orderby=~db.tt.aa
                                 | db.tt.id)[0].aa, '3')
     self.assertEqual(len(db(db.tt.id > 0).select(limitby=(1, 2))), 1)
     self.assertEqual(db(db.tt.id > 0).select(limitby=(1, 2))[0].aa, '2')
     self.assertEqual(len(db().select(db.tt.ALL)), 3)
     self.assertEqual(db(db.tt.aa == None).count(), 0)
     self.assertEqual(db(db.tt.aa != None).count(), 3)
     self.assertEqual(db(db.tt.aa > '1').count(), 2)
     self.assertEqual(db(db.tt.aa >= '1').count(), 3)
     self.assertEqual(db(db.tt.aa == '1').count(), 1)
     self.assertEqual(db(db.tt.aa != '1').count(), 2)
     self.assertEqual(db(db.tt.aa < '3').count(), 2)
     self.assertEqual(db(db.tt.aa <= '3').count(), 3)
     self.assertEqual(db(db.tt.aa > '1')(db.tt.aa < '3').count(), 1)
     self.assertEqual(db((db.tt.aa > '1') & (db.tt.aa < '3')).count(), 1)
     self.assertEqual(db((db.tt.aa > '1') | (db.tt.aa < '3')).count(), 3)
     self.assertEqual(db((db.tt.aa > '1') & ~(db.tt.aa > '2')).count(), 1)
     self.assertEqual(db(~(db.tt.aa > '1') & (db.tt.aa > '2')).count(), 0)
     db.tt.drop()
コード例 #14
0
 def testRun(self):
     db = DAL('sqlite:memory:')
     db.define_table('t', Field('name'), Field('a','reference t'))
     db.commit()
     x = db.t.insert(name='max')
     assert x.id == 1
     assert x['id'] == 1
     x.a = x
     assert x.a == 1
     x.update_record()
     y = db.t[1]
     assert y.a == 1
     assert y.a.a.a.a.a.a.name == 'max'
     z=db.t.insert(name='xxx', a = y)
     assert z.a == y.id
     db.t.drop()
     db.commit()
コード例 #15
0
ファイル: test_dal.py プロジェクト: codestrophe/events
    def testTableCreation(self):

        # Check for error when not passing type other than Field or Table

        self.assertRaises(SyntaxError, Table, None, 'test', None)

        persons = Table(None, 'persons', Field('firstname', 'string'),
                        Field('lastname', 'string'))

        # Does it have the correct fields?

        self.assert_(
            set(persons.fields).issuperset(set(['firstname', 'lastname'])))

        # ALL is set correctly

        self.assert_('persons.firstname, persons.lastname' in str(persons.ALL))
コード例 #16
0
ファイル: test_dal.py プロジェクト: codestrophe/events
 def testRun(self):
     db = DAL(DEFAULT_URI, check_reserved=['all'])
     db.define_table('tt', Field('name'), Field('aa', 'reference tt'))
     db.commit()
     x = db.tt.insert(name='max')
     assert x.id == 1
     assert x['id'] == 1
     x.aa = x
     assert x.aa == 1
     x.update_record()
     y = db.tt[1]
     assert y.aa == 1
     assert y.aa.aa.aa.aa.aa.aa.name == 'max'
     z = db.tt.insert(name='xxx', aa=y)
     assert z.aa == y.id
     db.tt.drop()
     db.commit()
コード例 #17
0
    def propagate(self):
        if self.db_family == 'mysql':
            self.db = DAL(self.db_family + '://' + self.db_user + ':' +
                          self.db_pass + '@' + self.db_host + '/' +
                          self.db_name,
                          pool_size=1,
                          migrate_enabled=False)
            self.db.executesql("""
			CREATE DATABASE IF NOT EXISTS {0};
			""".format(self.db_name))
            self.db.executesql("""
			CREATE TABLE IF NOT EXISTS {0} (
				`id` int,
				`uid` varchar(255),
				`name` varchar(255),
				`time` varchar(255),
				`folder` varchar(255),
				`size` int,
				`local` varchar(255)
			); """.format(self.db_table))
        else:
            self.db = DAL('sqlite://storage.db')

        self.db.define_table(self.db_table,
                             Field('id'),
                             Field('uid'),
                             Field('name'),
                             Field('time'),
                             Field('folder'),
                             Field('size'),
                             Field('local'),
                             migrate=False)
コード例 #18
0
ファイル: test_dal.py プロジェクト: codestrophe/events
 def testRun(self):
     db = DAL(DEFAULT_URI, check_reserved=['all'])
     db.define_table('tt', Field('aa', 'integer'))
     self.assertEqual(db.tt.insert(aa=1), 1)
     self.assertEqual(db.tt.insert(aa=2), 2)
     self.assertEqual(db.tt.insert(aa=3), 3)
     self.assertEqual(db(db.tt.aa == 3).update(aa=db.tt.aa + 1), 1)
     self.assertEqual(db(db.tt.aa == 4).count(), 1)
     db.tt.drop()
コード例 #19
0
 def testRun(self):
     import datetime
     from gluon.validators import IS_INT_IN_RANGE
     db = DAL(DEFAULT_URI, check_reserved=['all'])
     db.define_table('val_and_insert', Field('aa'),
                     Field('bb', 'integer', requires=IS_INT_IN_RANGE(1, 5)))
     rtn = db.val_and_insert.validate_and_insert(aa='test1', bb=2)
     self.assertEqual(rtn.id, 1)
     #errors should be empty
     self.assertEqual(len(rtn.errors.keys()), 0)
     #this insert won't pass
     rtn = db.val_and_insert.validate_and_insert(bb="a")
     #the returned id should be None
     self.assertEqual(rtn.id, None)
     #an error message should be in rtn.errors.bb
     self.assertNotEqual(rtn.errors.bb, None)
     #cleanup table
     db.val_and_insert.drop()
コード例 #20
0
 def testRun(self):
     db = DAL('sqlite:memory:')
     db.define_table('t', Field('a', 'integer'))
     self.assertEqual(db.t.insert(a=1), 1)
     self.assertEqual(db.t.insert(a=2), 2)
     self.assertEqual(db.t.insert(a=3), 3)
     self.assertEqual(db(db.t.a == 3).update(a=db.t.a + 1), 1)
     self.assertEqual(len(db(db.t.a == 4).select()), 1)
     db.t.drop()
コード例 #21
0
ファイル: test_dal.py プロジェクト: codestrophe/events
    def testFieldFormatters(self):  # Formatter should be called Validator

        # Test the default formatters
        for typ in ALLOWED_DATATYPES:
            f = Field('abc', typ)
            if typ not in ['date', 'time', 'datetime']:
                isinstance(f.formatter('test'), str)
            else:
                isinstance(f.formatter(datetime.datetime.now()), str)
コード例 #22
0
 def testRun(self):
     db = DAL('sqlite:memory:')
     db.define_table('person', Field('name'),Field('uuid'))
     db.define_table('pet',Field('friend',db.person),Field('name'))
     for n in range(2):
         db(db.pet).delete()
         db(db.person).delete()
         for k in range(10):
             id = db.person.insert(name=str(k),uuid=str(k))
             db.pet.insert(friend=id,name=str(k))
     db.commit()
     stream = cStringIO.StringIO()
     db.export_to_csv_file(stream)
     stream = cStringIO.StringIO(stream.getvalue())
     db.import_from_csv_file(stream)
     assert db(db.person).count()==10
     assert db(db.person.id==db.pet.friend)(db.person.name==db.pet.name).count()==20
     db.pet.drop()
     db.person.drop()
     db.commit()
コード例 #23
0
 def testRun(self):
     db = DAL(DEFAULT_URI, check_reserved=['all'])
     db.define_table('tt', Field('aa'))
     db.commit()
     db.tt.insert(aa="test")
     class Compute:
         def a_upper(row): return row.tt.aa.upper()
     db.tt.virtualfields.append(Compute())
     assert db(db.tt.id>0).select().first().a_upper == 'TEST'
     db.tt.drop()
     db.commit()
コード例 #24
0
ファイル: test_dal.py プロジェクト: codestrophe/events
 def testRun(self):
     db = DAL(DEFAULT_URI, check_reserved=['all'])
     db.define_table('tt', Field('aa'))
     self.assertEqual(db.tt.insert(aa='abc'), 1)
     self.assertEqual(db(db.tt.aa.like('a%')).count(), 1)
     self.assertEqual(db(db.tt.aa.like('%b%')).count(), 1)
     self.assertEqual(db(db.tt.aa.like('%c')).count(), 1)
     self.assertEqual(db(db.tt.aa.like('%d%')).count(), 0)
     self.assertEqual(db(db.tt.aa.lower().like('A%')).count(), 1)
     self.assertEqual(db(db.tt.aa.lower().like('%B%')).count(), 1)
     self.assertEqual(db(db.tt.aa.lower().like('%C')).count(), 1)
     self.assertEqual(db(db.tt.aa.upper().like('A%')).count(), 1)
     self.assertEqual(db(db.tt.aa.upper().like('%B%')).count(), 1)
     self.assertEqual(db(db.tt.aa.upper().like('%C')).count(), 1)
     db.tt.drop()
     db.define_table('tt', Field('aa', 'integer'))
     self.assertEqual(db.tt.insert(aa=1111111111), 1)
     self.assertEqual(db(db.tt.aa.like('1%')).count(), 1)
     self.assertEqual(db(db.tt.aa.like('2%')).count(), 0)
     db.tt.drop()
コード例 #25
0
ファイル: test_dal.py プロジェクト: codestrophe/events
 def testRun(self):
     db = DAL(DEFAULT_URI, check_reserved=['all'])
     db.define_table('tt', Field('aa'))
     self.assertEqual(db.tt.insert(aa='1'), 1)
     self.assertEqual(db.tt.insert(aa='1'), 2)
     self.assertEqual(db.tt.insert(aa='1'), 3)
     self.assertEqual(db(db.tt.aa == '1').count(), 3)
     self.assertEqual(db(db.tt.aa == '1').update(aa='2'), 3)
     self.assertEqual(db(db.tt.aa == '2').count(), 3)
     self.assertEqual(db(db.tt.aa == '2').delete(), 3)
     db.tt.drop()
コード例 #26
0
 def testRun(self):
     db = DAL('sqlite:memory:')
     db.define_table('t', Field('a'))
     self.assertEqual(db.t.insert(a='1'), 1)
     self.assertEqual(db.t.insert(a='1'), 2)
     self.assertEqual(db.t.insert(a='1'), 3)
     self.assertEqual(db(db.t.a == '1').count(), 3)
     self.assertEqual(db(db.t.a == '1').update(a='2'), 3)
     self.assertEqual(db(db.t.a == '2').count(), 3)
     self.assertEqual(db(db.t.a == '2').delete(), 3)
     db.t.drop()
コード例 #27
0
 def testRun(self):
     db = DAL('sqlite:memory:')
     db.define_table('t', Field('a'))
     db.commit()
     db.t.insert(a="test")
     class Compute:
         def a_upper(row): return row.t.a.upper()
     db.t.virtualfields.append(Compute())
     assert db(db.t.id>0).select().first().a_upper == 'TEST'
     db.t.drop()
     db.commit()
コード例 #28
0
 def testRun(self):
     db = DAL(DEFAULT_URI, check_reserved=['all'])
     db.define_table('tt', Field('aa'))
     @db.tt.add_method.all
     def select_all(table,orderby=None):
         return table._db(table).select(orderby=orderby)
     self.assertEqual(db.tt.insert(aa='1'), 1)
     self.assertEqual(db.tt.insert(aa='2'), 2)
     self.assertEqual(db.tt.insert(aa='3'), 3)
     self.assertEqual(len(db.tt.all()), 3)
     db.tt.drop()
コード例 #29
0
 def testRun(self):
     db = DAL(DEFAULT_URI, check_reserved=['all'])
     db.define_table('person', Field('name'))
     db.define_table('pet',Field('friend',db.person),Field('name'))
     for n in range(2):
         db(db.pet).delete()
         db(db.person).delete()
         for k in range(10):
             id = db.person.insert(name=str(k))
             db.pet.insert(friend=id,name=str(k))
     db.commit()
     stream = StringIO.StringIO()
     db.export_to_csv_file(stream)
     db(db.pet).delete()
     db(db.person).delete()
     stream = StringIO.StringIO(stream.getvalue())
     db.import_from_csv_file(stream)
     assert db(db.person.id==db.pet.friend)(db.person.name==db.pet.name).count()==10
     db.pet.drop()
     db.person.drop()
     db.commit()
コード例 #30
0
 def testRun(self):
     db = DAL(DEFAULT_URI, check_reserved=['all'])
     db.define_table('tt', Field('aa', 'integer'))
     self.assertEqual(db.tt.insert(aa=1), 1)
     self.assertEqual(db.tt.insert(aa=2), 2)
     self.assertEqual(db.tt.insert(aa=3), 3)
     self.assertEqual(db(db.tt.aa == 3).update(aa=db.tt.aa + 1), 1)
     self.assertEqual(db(db.tt.aa == 4).count(), 1)
     self.assertEqual(db(db.tt.aa == -2).count(), 0)
     sum = (db.tt.aa + 1).sum()
     self.assertEqual(db(db.tt.aa == 2).select(sum).first()[sum], 3)
     self.assertEqual(db(db.tt.aa == -2).select(sum).first()[sum], None)
     db.tt.drop()