@@ -1394,21 +1394,21 @@ def test_many2many_save_and_update():
13941394 []
13951395 >>> g1.users = ['limodou', 'test']
13961396 >>> print Group.users.get_value_for_datastore(g1, cached=True)
1397- ['limodou', 'test']
1397+ [u 'limodou', u 'test']
13981398 >>> g1.save()
13991399 True
14001400 >>> print Group.users.get_value_for_datastore(g1, cached=True)
1401- ['limodou', 'test']
1401+ [u 'limodou', u 'test']
14021402 >>> g2 = Group(name='perl', users=['user'])
14031403 >>> g2.save()
14041404 True
14051405 >>> print Group.users.get_value_for_datastore(g2, cached=True)
1406- ['user']
1406+ [u 'user']
14071407 >>> g2.users = ['limodou']
14081408 >>> g2.save()
14091409 True
14101410 >>> print Group.users.get_value_for_datastore(g2, cached=True)
1411- ['limodou']
1411+ [u 'limodou']
14121412 >>> print g2.users.ids()
14131413 [u'limodou']
14141414 >>> print Group.users.get_value_for_datastore(g2)
@@ -2365,12 +2365,13 @@ def test_reflect_model():
23652365 >>> meta = MetaData()
23662366 >>> table = Table('test', meta)
23672367 >>> insp.reflecttable(table, None)
2368- >>> print reflect_model(table)
2368+ >>> print reflect_model(table) # doctest: +REPORT_UDIFF
23692369 class Test(Model):
23702370 \" \" \"
23712371 Description:
23722372 \" \" \"
23732373 <BLANKLINE>
2374+ __tablename__ = 'test'
23742375 username = Field(str, max_length=255, index=True, unique=1)
23752376 email = Field(str, max_length=255, server_default='')
23762377 year = Field(int, server_default=20)
@@ -2390,7 +2391,7 @@ class Test(Model):
23902391 @classmethod
23912392 def OnInit(cls):
23922393 Index(test_idx, cls.c.username, cls.c.email, unique=True)
2393- """
2394+ """
23942395
23952396def test_reference_server_default ():
23962397 """
@@ -2456,7 +2457,9 @@ def test_primary_key():
24562457 ... year = Field(int)
24572458 ... version = Field(int)
24582459 >>> Test.properties.keys()
2459- ['username', 'version', 'user_id', 'id', 'year']
2460+ ['username', 'version', 'user_id', 'year']
2461+ >>> print Test._key
2462+ <IntegerProperty 'type':<type 'int'>, 'verbose_name':None, 'name':'user_id', 'fieldname':'user_id', 'default':0, 'required':False, 'validator':[], 'chocies':None, 'max_length':None, 'kwargs':{'autoincrement': True, 'primary_key': True}>
24602463 """
24612464
24622465def test_get_object ():
@@ -2665,7 +2668,7 @@ def test_uuid_and_new_fields():
26652668 >>> db.metadata.drop_all()
26662669 >>> class User(Model):
26672670 ... __tablename__ = 'test_user'
2668- ... id = Field(UUID, unique=True)
2671+ ... id = Field(UUID, primary_key=True, unique=True)
26692672 ... sid = Field(UUID_B)
26702673 ... username = Field(str, server_default='')
26712674 ... year = Field(SMALLINT, server_default='0')
@@ -2677,7 +2680,7 @@ def test_uuid_and_new_fields():
26772680 >>> t = User.table
26782681 >>> x = str(CreateTable(t).compile(dialect=engine.dialect)).strip()
26792682 >>> print x.replace('\\ t', '').replace('\\ n', '')
2680- CREATE TABLE test_user (id VARCHAR(32), sid VARBINARY(16), username VARCHAR(255) DEFAULT '', year SMALLINT DEFAULT '0', UNIQUE (id))
2683+ CREATE TABLE test_user (id VARCHAR(32), sid VARBINARY(16), username VARCHAR(255) DEFAULT '', year SMALLINT DEFAULT '0', PRIMARY KEY (id), UNIQUE (id))
26812684 >>> x = str(CreateTable(Group.table).compile(dialect=engine.dialect)).strip()
26822685 >>> print x.replace('\\ t', '').replace('\\ n', '')
26832686 CREATE TABLE test_group (name VARCHAR(20), user VARCHAR(32), id INTEGER NOT NULL, PRIMARY KEY (id))
@@ -2726,6 +2729,28 @@ def test_save_file():
27262729 <BLANKLINE>
27272730 """
27282731
2732+ def test_derive ():
2733+ """
2734+ >>> from uliweb import orm
2735+ >>> db = get_connection('sqlite://')
2736+ >>> db.metadata.drop_all()
2737+ >>> set_auto_create(False)
2738+ >>> orm.__models__ = {}
2739+ >>> from sqlalchemy import *
2740+ >>> class User(Model):
2741+ ... _primary_field = 'username'
2742+ ... username = Field(unicode)
2743+ ... year = Field(int, default=30)
2744+ ... birth = Field(datetime.date)
2745+ >>> class User1(User):
2746+ ... age = Field(int)
2747+ >>> print User1.properties.keys()
2748+ ['username', 'age', 'birth', 'year']
2749+ >>> print User1._primary_field
2750+ username
2751+ """
2752+
2753+
27292754# if __name__ == '__main__':
27302755# from sqlalchemy.schema import CreateTable, CreateIndex
27312756# db = get_connection('sqlite://')
@@ -2756,16 +2781,18 @@ def test_save_file():
27562781# print repr(g2.user)
27572782
27582783if __name__ == '__main__' :
2784+ from uliweb import orm
27592785 db = get_connection ('sqlite://' )
2760- #db.echo = True
27612786 db .metadata .drop_all ()
2762- db .metadata .clear ()
2787+ set_auto_create (False )
2788+ orm .__models__ = {}
2789+ from sqlalchemy import *
27632790 class User (Model ):
2764- username = Field ( str , max_length = 40 )
2765- memo = Field (JSON , default = {} )
2766- a = User ( username = 'limodou' , memo = { 'age' : 30 } )
2767- a . save ( )
2768-
2769- print a . memo
2770- b = User . get ( 1 )
2771- print b . memo
2791+ _primary_field = 'username'
2792+ username = Field (unicode )
2793+ year = Field ( int , default = 30 )
2794+ birth = Field ( datetime . date )
2795+ class User1 ( User ):
2796+ age = Field ( int )
2797+ print User1 . properties . keys ( )
2798+ print User1 . _primary_field
0 commit comments