本文整理汇总了Python中camelot.core.orm.Session.flush方法的典型用法代码示例。如果您正苦于以下问题:Python Session.flush方法的具体用法?Python Session.flush怎么用?Python Session.flush使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类camelot.core.orm.Session
的用法示例。
在下文中一共展示了Session.flush方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_fixture
# 需要导入模块: from camelot.core.orm import Session [as 别名]
# 或者: from camelot.core.orm.Session import flush [as 别名]
def test_fixture( self ):
from camelot.model.party import Person
from camelot.model.fixture import Fixture
session = Session()
self.assertEqual( Fixture.find_fixture_key( Person, -1 ), None )
p1 = Person()
self.assertEqual( Fixture.find_fixture_key_and_class( p1 ),
(None, None) )
session.expunge( p1 )
# insert a new Fixture
p2 = Fixture.insert_or_update_fixture( Person, 'test',
{'first_name':'Peter',
'last_name':'Principle'},
fixture_class = 'test' )
# see if we can find it back
self.assertEqual( Fixture.find_fixture_key( Person, p2.id ), 'test' )
self.assertEqual( Fixture.find_fixture_key_and_class( p2 ),
('test', 'test') )
self.assertEqual( Fixture.find_fixture_keys_and_classes( Person )[p2.id],
('test', 'test') )
# delete the person, and insert it back in the same fixture
session.delete( p2 )
session.flush()
p3 = Fixture.insert_or_update_fixture( Person, 'test',
{'first_name':'Peter',
'last_name':'Principle'},
fixture_class = 'test' )
self.assertNotEqual( p2, p3 )
# remove all fixtures
Fixture.remove_all_fixtures( Person )
示例2: test_refresh
# 需要导入模块: from camelot.core.orm import Session [as 别名]
# 或者: from camelot.core.orm.Session import flush [as 别名]
def test_refresh( self ):
from camelot.core.orm import Session
from camelot.model.party import Person
refresh_action = application_action.Refresh()
session = Session()
#
# create objects in various states
#
p1 = Person(first_name = u'p1', last_name = u'persistent' )
p2 = Person(first_name = u'p2', last_name = u'dirty' )
p3 = Person(first_name = u'p3', last_name = u'deleted' )
p4 = Person(first_name = u'p4', last_name = u'to be deleted' )
p5 = Person(first_name = u'p5', last_name = u'detached' )
p6 = Person(first_name = u'p6', last_name = u'deleted outside session' )
session.flush()
p3.delete()
session.flush()
p4.delete()
p2.last_name = u'clean'
#
# delete p6 without the session being aware
#
person_table = Person.table
session.execute( person_table.delete().where( person_table.c.party_id == p6.id ) )
#
# refresh the session through the action
#
list( refresh_action.model_run( self.context ) )
self.assertEqual( p2.last_name, u'dirty' )
示例3: get_or_create
# 需要导入模块: from camelot.core.orm import Session [as 别名]
# 或者: from camelot.core.orm.Session import flush [as 别名]
def get_or_create( cls, username ):
session = Session()
authentication = session.query( cls ).filter_by( username = username ).first()
if not authentication:
authentication = cls( username = username )
session.add( authentication )
session.flush()
return authentication
示例4: SearchCase
# 需要导入模块: from camelot.core.orm import Session [as 别名]
# 或者: from camelot.core.orm.Session import flush [as 别名]
class SearchCase( unittest.TestCase ):
"""Test the creation of search queries"""
def setUp( self ):
metadata.bind = settings.ENGINE()
metadata.create_all()
self.session = Session()
#
# insert the value of i in each column of T, that can be searched for
#
for (i,name), definition in types_to_test.items():
value = self.value_for_type( definition, i )
t = T()
setattr( t, name, value )
self.session.flush()
self.admin = TAdmin()
def value_for_type( self, definition, i ):
value = i
if issubclass( definition, sqlalchemy.types.DateTime ):
value = datetime.datetime( year = 2000, month = 1, day = 1, hour = 1, minute = i )
elif issubclass( definition, sqlalchemy.types.Date ):
value = datetime.date( year = 2000, month = 1, day = i%31 )
elif issubclass( definition, sqlalchemy.types.Time ):
value = datetime.time( hour = 1, minute = i )
elif issubclass( definition, sqlalchemy.types.String ):
value = str( i )
elif issubclass( definition, sqlalchemy.types.Boolean ):
value = True
return value
def test_search_decorator( self ):
"""Verify it search works for most common types"""
from camelot.view.search import create_entity_search_query_decorator
for (i,name), definition in types_to_test.items():
value = self.value_for_type( definition, i )
#
# @todo : search for types that need special conversion to string
# is skipped for now because the test would become too
# convoluted, this should work through a to_string field
# attribute.
#
if isinstance( value, ( datetime.date, datetime.time, bool) ):
continue
string_value = str( value )
search_decorator = create_entity_search_query_decorator( self.admin,
string_value )
query = self.session.query( T )
query = search_decorator( query )
#print query
self.assertTrue( query.count() > 0 )
示例5: translate_or_register
# 需要导入模块: from camelot.core.orm import Session [as 别名]
# 或者: from camelot.core.orm.Session import flush [as 别名]
def translate_or_register( cls, source, language ):
"""Translate source to language, if no translation is found, register the
source as to be translated and return the source"""
if source:
source = unicode( source )
translation = cls.translate( source, language )
if not translation:
session = Session()
query = session.query( cls )
translation = query.filter_by( source = source,
language = language ).first()
if not translation:
if ( source, language ) not in cls._cache:
registered_translation = Translation( source = source,
language = language )
cls._cache[( source, language )] = source
session.flush( [registered_translation] )
logger.debug( 'registed %s with id %s' % ( source, registered_translation.id ) )
return source
return translation
return ''
示例6: model_run
# 需要导入模块: from camelot.core.orm import Session [as 别名]
# 或者: from camelot.core.orm.Session import flush [as 别名]
def model_run(self, model_context):
from camelot.view.action_steps import (SelectFile,
UpdateProgress,
Refresh,
FlushSession)
select_files = SelectFile('Txt Files (*.txt *.csv);;All Files (*)')
select_files.single = False
file_names = yield select_files
file_count = len(file_names)
import os
from camelot.core.orm import Session
from rms.Model.Orar import Orar
session = Session()
for i, file_name in enumerate(file_names):
yield UpdateProgress(i, file_count)
title = os.path.splitext(os.path.basename(file_name))[0]
print(file_name)
for line in open(file_name):
vals = line.split(';')[:-1]
if len(vals) != 8:
raise ImportException("Fisierul nu e dat bine")
if vals[2] not in ['0', '1', '2']:
raise ImportException("Frecventa nu e data bine")
print(vals)
orar = Orar(*vals)
print(orar)
session.add(orar)
disc = session.query(Discipline).filter(Discipline.disc==orar.disc).first()
if disc:
orar.disciplina = disc
session.flush()
yield FlushSession(session)
# begin refresh
yield Refresh()
# end refresh
示例7: import
# 需要导入模块: from camelot.core.orm import Session [as 别名]
# 或者: from camelot.core.orm.Session import flush [as 别名]
from gradebook.model import (Course,
Student, StudentContactInfo)
course, = session.query(Course).all()
import csv
with open('class-list.csv', 'rb') as csvfile:
reader = csv.DictReader(csvfile, delimiter=";")
for row in reader:
print row
ln = row["Last"]
fn = row["First"]
student = Student(first_name=unicode(fn.strip()),
last_name=unicode(ln.strip()),
user_name=unicode(row["NetID"]),
course=course)
session.add(student)
session.add(StudentContactInfo(
student=student,
kind="email",
value=row["NetID"]+"@illinois.edu",
))
print unicode(student)
#from gradebook.model import Course
#for name in session.query(Course.name):
#print name
session.flush()
示例8: PartyCase
# 需要导入模块: from camelot.core.orm import Session [as 别名]
# 或者: from camelot.core.orm.Session import flush [as 别名]
class PartyCase( ModelThreadTestCase ):
"""Test the build in party - address - contact mechanism model"""
def setUp(self):
super( PartyCase, self ).setUp()
from camelot.admin.application_admin import ApplicationAdmin
self.session = Session()
self.app_admin = ApplicationAdmin()
self.person_admin = self.app_admin.get_related_admin( party.Person )
self.organization_admin = self.app_admin.get_related_admin( party.Organization )
def tearDown(self):
self.session.expunge_all()
def test_party( self ):
p = party.Party()
self.assertFalse( p.name )
def test_geographic_boundary( self ):
belgium = party.Country.get_or_create( code = u'BE',
name = u'Belgium' )
self.assertTrue( unicode( belgium ) )
city = party.City.get_or_create( country = belgium,
code = '1000',
name = 'Brussels' )
return city
def test_address( self ):
city = self.test_geographic_boundary()
address = party.Address.get_or_create( street1 = 'Avenue Louise',
street2 = None,
city = city )
self.assertTrue( unicode( address ) )
return address
def test_party_address( self ):
city = self.test_geographic_boundary()
org = party.Organization( name = 'PSF' )
party_address = party.PartyAddress( party = org )
party_address.street1 = 'Avenue Louise 5'
party_address.street2 = 'Boite 4'
party_address.city = city
party_address_admin = party.AddressAdmin( self.app_admin, party.PartyAddress )
self.assertTrue( party_address.address in party_address_admin.get_compounding_objects( party_address ) )
self.assertTrue( party_address.address in self.session.new )
# everything should be flushed through the party admin
org_admin = self.app_admin.get_related_admin( party.Organization )
org_validator = org_admin.get_validator()
self.assertTrue( party_address in org_admin.get_compounding_objects( org ) )
org_admin.flush( org )
self.assertFalse( party_address.address in self.session.new )
party_address_admin.refresh( party_address )
# test hybrid property getters on Party and PartyAddress
self.assertEqual( party_address.street1, 'Avenue Louise 5' )
self.assertEqual( party_address.street2, 'Boite 4' )
self.assertEqual( party_address.city, city )
self.assertEqual( org.street1, 'Avenue Louise 5' )
self.assertEqual( org.street2, 'Boite 4' )
self.assertEqual( org.city, city )
self.assertTrue( unicode( party_address ) )
query = self.session.query( party.PartyAddress )
self.assertTrue( query.filter( party.PartyAddress.street1 == 'Avenue Louise 5' ).first() )
self.assertTrue( query.filter( party.PartyAddress.street2 == 'Boite 4' ).first() )
# if party address changes, party should be updated
depending_objects = list( party_address_admin.get_depending_objects( party_address ) )
self.assertTrue( org in depending_objects )
# if address changes, party address and party should be updated
address = party_address.address
address_admin = self.app_admin.get_related_admin( party.Address )
depending_objects = list( address_admin.get_depending_objects( address ) )
self.assertTrue( party_address in depending_objects )
self.assertTrue( org in depending_objects )
# test hybrid property setters on Party
org.street1 = 'Rue Belliard 1'
org.street2 = 'Second floor'
org.city = None
# expunge should expunge the related address objects as well, so
# after an expunge, the session as a whole can be flushed
org_admin.expunge( org )
self.session.flush()
# test hybrid property setters on a new party
org = party.Organization( name = 'PSF' )
org.street1 = 'Rue Belliard 1'
org.street2 = 'Second floor'
org.city = city
org_admin.flush( org )
self.assertEqual( len( org.addresses ), 1 )
self.assertEqual( org.street1, 'Rue Belliard 1' )
self.assertEqual( org.street2, 'Second floor' )
self.assertEqual( org.city, city )
# test invalidation of org object and refresh it
self.assertFalse( org_validator.validate_object( org ) )
org.city = None
self.assertTrue( org_validator.validate_object( org ) )
org_admin.refresh( org )
self.assertFalse( org_validator.validate_object( org ) )
# removing all the address properties should make the
# object valid again
org.street1 = None
org.street2 = None
#.........这里部分代码省略.........