コード例 #1
0
ファイル: websetup.py プロジェクト: raygunsix/tracking
def setup_app(command, conf, vars):
    """Place any commands to setup tracking here"""
    load_environment(conf.global_conf, conf.local_conf)

    filename = os.path.split(conf.filename)[-1]

    if filename == 'test.ini':
        
        # Permanently drop any existing tables
        
        log.info("Dropping existing tables...")
        
        meta.Base.metadata.drop_all(bind=meta.engine, checkfirst=True)

    log.info("Creating tables...")

    # Create the tables if they don't already exist
    meta.Base.metadata.create_all(bind=meta.engine)
    
    log.info("Successfully set up.")
    
    if filename == 'development.ini':
    
        # load sample data during setup-app
    
        db = SQLAlchemyFixture(
                env=model, style=NamedDataStyle(),
                engine=meta.engine)
            
        data = db.data(PageviewsData)
        log.info("Loading sample data...")
        data.setup()
        
    log.info("Successfully set up.")
コード例 #2
0
ファイル: test_list.py プロジェクト: grampajoe/tincture
class TestListView(TestCase):
    """Tests for DetailView."""
    urls = 'tests.integration.views.generic.urls'

    def setUp(self):
        setup_environment()

        self.fixture = SQLAlchemyFixture(
            env=models,
            session=session,
            style=NamedDataStyle(),
        )

    def test_list_view(self):
        """Test the list view."""
        with self.fixture.data(fixtures.PersonData) as data:
            response = self.client.get('/people/')

        self.assertEqual(response.status_code, 200)
        self.assertIn(data.PersonData.John.name, response.content)

    def test_list_view_allow_empty(self):
        """Test getting an empty list with allow_empty = True."""
        response = self.client.get('/people/')

        self.assertEqual(response.status_code, 200)

    def test_list_view_404(self):
        """Test getting an empty list with allow_empty = False."""
        response = self.client.get('/non_empty_people/')

        self.assertEqual(response.status_code, 404)
コード例 #3
0
ファイル: __init__.py プロジェクト: JohnBrodie/whatup-api
def install(app, *args):
    engine = m.create_tables(app)
    db = SQLAlchemyFixture(env=m, style=NamedDataStyle(), engine=engine)
    data = db.data(*args)
    data.setup()
    db.dispose()
    return data
コード例 #4
0
def setup_app(command, conf, vars):
    """Place any commands to setup tracking here"""
    load_environment(conf.global_conf, conf.local_conf)

    filename = os.path.split(conf.filename)[-1]

    if filename == 'test.ini':

        # Permanently drop any existing tables

        log.info("Dropping existing tables...")

        meta.Base.metadata.drop_all(bind=meta.engine, checkfirst=True)

    log.info("Creating tables...")

    # Create the tables if they don't already exist
    meta.Base.metadata.create_all(bind=meta.engine)

    log.info("Successfully set up.")

    if filename == 'development.ini':

        # load sample data during setup-app

        db = SQLAlchemyFixture(env=model,
                               style=NamedDataStyle(),
                               engine=meta.engine)

        data = db.data(PageviewsData)
        log.info("Loading sample data...")
        data.setup()

    log.info("Successfully set up.")
コード例 #5
0
def test_fixture_can_be_disposed():
    if sa_major < 0.5:
        from sqlalchemy.exceptions import InvalidRequestError
    else:
        from sqlalchemy.exc import InvalidRequestError
    engine = create_engine(conf.LITE_DSN)
    metadata.bind = engine
    metadata.create_all()
    Session = get_transactional_session()
    session = Session()
    fixture = SQLAlchemyFixture(
        env={'CategoryData':Category},
        engine=metadata.bind
    )
    
    class CategoryData(DataSet):
        class cars:
            name = 'cars'
        class free_stuff:
            name = 'get free stuff'
    
    clear_mappers()
    mapper(Category, categories)
        
    data = fixture.data(CategoryData)
    data.setup()
    data.teardown()
    
    fixture.dispose()
    
    # cannot use fixture anymore :
    try:
        data.setup()
    except InvalidRequestError:
        pass
    else:
        assert False, "data.setup() did not raise InvalidRequestError after connection was disposed"
    
    # a new instance of everything is needed :
    metadata.create_all()
    fixture = SQLAlchemyFixture(
        env={'CategoryData':Category},
        engine=metadata.bind
    )
    data = fixture.data(CategoryData)
    data.setup()
    data.teardown()
コード例 #6
0
    def setUp(self):
        # Create tables
        models.db.create_all()

        # Load data
        fix = SQLAlchemyFixture(env=models, engine=models.db.engine)
        self.data = fix.data(*test_data.all_data)
        self.data.setup()
コード例 #7
0
ファイル: test_dailylog.py プロジェクト: amitm/DailyLog
 def setUp(self):
     self.app = create_app('config/test.ini').test_client()
     init_db()
     # TODO move this to the proper place in the code
     dbfixture = SQLAlchemyFixture(
         env={'UserData': User},
         engine=dailylog.db.engine)
     self.data = dbfixture.data(UserData)
     self.data.setup()
コード例 #8
0
ファイル: test_service.py プロジェクト: jianingy/treestore
class DBFixture(fixtures.Fixture):

    def setUp(self):
        super(DBFixture, self).setUp()
        self.dbfixture = SQLAlchemyFixture(engine=get_engine(),
                                           env={'TreeNodeData': TreeNode})
        self.data = self.dbfixture.data(TreeNodeData)
        self.data.setup()
        self.addCleanup(self.data.teardown)
コード例 #9
0
def test_fixture_can_be_disposed():
    from sqlalchemy.exceptions import InvalidRequestError
    engine = create_engine(conf.LITE_DSN)
    metadata.bind = engine
    metadata.create_all()
    Session = get_transactional_session()
    session = Session()
    fixture = SQLAlchemyFixture(
        env={'CategoryData':Category},
        engine=metadata.bind
    )
    
    class CategoryData(DataSet):
        class cars:
            name = 'cars'
        class free_stuff:
            name = 'get free stuff'
    
    clear_mappers()
    mapper(Category, categories)
        
    data = fixture.data(CategoryData)
    data.setup()
    data.teardown()
    
    fixture.dispose()
    
    # cannot use fixture anymore :
    try:
        data.setup()
    except InvalidRequestError:
        pass
    else:
        assert False, "data.setup() did not raise InvalidRequestError after connection was disposed"
    
    # a new instance of everything is needed :
    metadata.create_all()
    fixture = SQLAlchemyFixture(
        env={'CategoryData':Category},
        engine=metadata.bind
    )
    data = fixture.data(CategoryData)
    data.setup()
    data.teardown()
コード例 #10
0
ファイル: test_asset_info_dal.py プロジェクト: wzqwsrf/itdb
class DBFixture(fixtures.Fixture):

    def setUp(self):
        super(DBFixture, self).setUp()
        self.dbfixture = SQLAlchemyFixture(
            engine=get_engine(),
            env={'AssetInfoData': AssetInfoModel})
        self.data = self.dbfixture.data(AssetInfoData)
        self.data.setup()
        self.addCleanup(self.data.teardown)
コード例 #11
0
ファイル: test_provider_dal.py プロジェクト: wzqwsrf/itdb
class DBFixture(fixtures.Fixture):

    def setUp(self):
        super(DBFixture, self).setUp()
        self.dbfixture = SQLAlchemyFixture(
            engine=get_engine(),
            env={'MpProviderData': Provider})
        self.data = self.dbfixture.data(MpProviderData)
        self.data.setup()
        self.addCleanup(self.data.teardown)
コード例 #12
0
def setup_testdata(connectable):
    dbfixture = SQLAlchemyFixture(engine=connectable or db.engine,
                                  env={
                                      'VerificationCodeData':
                                      db_models.VerificationCode,
                                  })
    fixture_datas = [
        dbfixture.data(VerificationCodeData),
    ]
    return dbfixture, fixture_datas
コード例 #13
0
ファイル: test_device_state_dal.py プロジェクト: wzqwsrf/itdb
class DBFixture(fixtures.Fixture):

    def setUp(self):
        super(DBFixture, self).setUp()
        self.dbfixture = SQLAlchemyFixture(
            engine=get_engine(),
            env={'DeviceStateData': DeviceState})
        self.data = self.dbfixture.data(DeviceStateData)
        BASE.metadata.create_all(get_engine())
        self.data.setup()
        self.addCleanup(self.data.teardown)
コード例 #14
0
class DBFixture(fixtures.Fixture):

    def setUp(self):
        super(DBFixture, self).setUp()
        print get_engine()
        self.dbfixture = SQLAlchemyFixture(
            engine=get_engine(),
            env={'InOutData': InOutReason})
        self.data = self.dbfixture.data(InOutData)
        self.data.setup()
        self.addCleanup(self.data.teardown)
コード例 #15
0
def test_cannot_teardown_unloaded_fixture():
    class CategoryData(DataSet):
        class cars:
            name = 'cars'

    engine = create_engine(conf.LITE_DSN)
    metadata.bind = engine

    db = SQLAlchemyFixture(env=globals(), engine=metadata.bind)
    data = db.data(CategoryData)
    data.teardown()
コード例 #16
0
 def setUp(self):
     db.create_all()
     
     fixture = SQLAlchemyFixture( env=models,
         style=TrimmedNameStyle(suffix="Data"),
         session=db.session)
     try:
         self.data = fixture.data(*self.fixtures)
     except TypeError:
         raise Error('You need overide "fixtures = None" with the name of some real fixtures')
     self.data.setup()
コード例 #17
0
ファイル: test_user_service.py プロジェクト: wzqwsrf/hstore
class DBFixture(fixtures.Fixture):
    def setUp(self):
        super(DBFixture, self).setUp()
        self.session = get_session()
        self.dbfixture = SQLAlchemyFixture(
            engine=get_engine(),
            env=dict(UserData=UserHstore)
        )
        self.data = self.dbfixture.data(UserData)
        self.data.setup()
        self.addCleanup(self.data.teardown)
コード例 #18
0
ファイル: test_store_state_dal.py プロジェクト: wzqwsrf/itdb
class DBFixture(fixtures.Fixture):
    def setUp(self):
        super(DBFixture, self).setUp()
        self.engine = db_api.get_engine()
        self.engine.connect()
        self.dbfixture = SQLAlchemyFixture(engine=self.engine, env={"StoreStateMock": StoreState})
        self.data = self.dbfixture.data(StoreStateMock)
        self.session = db_api.get_session()
        BASE.metadata.create_all(bind=self.engine)
        self.data.setup()
        self.addCleanup(self.data.teardown)
コード例 #19
0
class DBFixture(fixtures.Fixture):

    def setUp(self):
        super(DBFixture, self).setUp()
        self.dbfixture = SQLAlchemyFixture(
            engine=get_engine(),
            env={'AssetConsumeInfoData': AssetConsumeInfoModel})
        self.data = self.dbfixture.data(AssetConsumeInfoData)
        BASE.metadata.create_all(get_engine())
        self.data.setup()
        self.addCleanup(self.data.teardown)
コード例 #20
0
class TestCollidingSessions(unittest.TestCase):
    class CategoryData(DataSet):
        class cars:
            name = 'cars'
        class free_stuff:
            name = 'get free stuff'
            
    def setUp(self):
        self.engine = create_engine(conf.LITE_DSN)
        # self.conn = self.engine.connect()
        metadata.bind = self.engine
        # metadata.bind.echo = True
        metadata.create_all()
        # metadata.bind.echo = False
        self.ScopedSession = scoped_session(get_transactional_session())
        self.session = self.ScopedSession()
        self.fixture = SQLAlchemyFixture(
            env={'CategoryData':Category},
            engine=metadata.bind
        )
        
        clear_mappers()
        mapper(Category, categories)
    
    def tearDown(self):
        metadata.drop_all()
        self.session.close()
    
    @attr(functional=1)
    def test_setup_then_teardown(self):
        eq_(self.session.query(Category).all(), [])
        
        data = self.fixture.data(self.CategoryData)
        data.setup()
        self.session.clear()
        
        cats = self.session.query(Category).order_by('name').all()
        eq_(cats[0].name, 'cars')
        eq_(cats[1].name, 'get free stuff')
        
        # simulate the application running into some kind of error:
        new_cat = Category()
        new_cat.name = "doomed to non-existance"
        self.session.save(new_cat)
        self.session.rollback()
        self.ScopedSession.remove()
        
        data.teardown()
        self.session.clear()
        
        print [(c.id, c.name) for c in self.session.query(Category).all()]
        eq_(list(self.session.query(Category)), [])
コード例 #21
0
    def load_fixtures(self, *args):
        # TODO: Check https://github.com/mitsuhiko/flask-sqlalchemy/pull/89
        # and update version of Flask-Sqlalchemy
        from api import models
        from fixture import SQLAlchemyFixture
        from fixture.style import NamedDataStyle

        db = SQLAlchemyFixture(env=models,
                               style=NamedDataStyle(),
                               engine=self.engine)
        data = db.data(*args)
        data.setup()
        db.dispose()
コード例 #22
0
class TestCollidingSessions(unittest.TestCase):
    class CategoryData(DataSet):
        class cars:
            name = 'cars'
        class free_stuff:
            name = 'get free stuff'
            
    def setUp(self):
        self.engine = create_engine(conf.LITE_DSN)
        # self.conn = self.engine.connect()
        metadata.bind = self.engine
        # metadata.bind.echo = True
        metadata.create_all()
        # metadata.bind.echo = False
        self.ScopedSession = scoped_session(get_transactional_session())
        self.session = self.ScopedSession()
        self.fixture = SQLAlchemyFixture(
            env={'CategoryData':Category},
            engine=metadata.bind
        )
        
        clear_mappers()
        mapper(Category, categories)
    
    def tearDown(self):
        metadata.drop_all()
        self.session.close()
    
    @attr(functional=1)
    def test_setup_then_teardown(self):
        eq_(self.session.query(Category).all(), [])
        
        data = self.fixture.data(self.CategoryData)
        data.setup()
        clear_session(self.session)
        
        cats = self.session.query(Category).order_by('name').all()
        eq_(cats[0].name, 'cars')
        eq_(cats[1].name, 'get free stuff')
        
        # simulate the application running into some kind of error:
        new_cat = Category()
        new_cat.name = "doomed to non-existance"
        save_session(self.session, new_cat)
        self.session.rollback()
        self.ScopedSession.remove()
        
        data.teardown()
        clear_session(self.session)
        
        print [(c.id, c.name) for c in self.session.query(Category).all()]
コード例 #23
0
class TestElixir(unittest.TestCase):
    class CategoryData(DataSet):
        class cars:
            name = 'cars'
        class free_stuff:
            name = 'get free stuff'
            
    def setUp(self):
        if not env_supports.elixir:
            raise SkipTest("elixir module not found")
        import elixir
        
        self.engine = create_engine(conf.LITE_DSN)
        metadata.bind = self.engine
        metadata.create_all()
        
        class CategoryEntity(elixir.Entity):
            elixir.using_options(tablename=str(categories))
            # save_on_init IS VERY IMPORTANT
            elixir.using_mapper_options(save_on_init=False)
            
        self.CategoryEntity = CategoryEntity
        
        self.fixture = SQLAlchemyFixture(
            env={'CategoryData':CategoryEntity},
            engine=metadata.bind
        )
        
        elixir.metadata.bind = self.engine
        elixir.setup_all()
    
    def tearDown(self):
        metadata.drop_all()
    
    @attr(functional=1)
    def test_setup_then_teardown(self):
        try:
            from elixir import session as elixir_session
        except ImportError:
            from elixir import objectstore as elixir_session
        
        eq_(len(elixir_session.query(self.CategoryEntity).all()), 0)
        
        data = self.fixture.data(self.CategoryData)
        data.setup()
        
        eq_(len(elixir_session.query(self.CategoryEntity).all()), 2)
        
        data.teardown()
        eq_(elixir_session.query(self.CategoryEntity).all(), [])
コード例 #24
0
class TestElixir(unittest.TestCase):
    class CategoryData(DataSet):
        class cars:
            name = 'cars'
        class free_stuff:
            name = 'get free stuff'
            
    def setUp(self):
        if not env_supports.elixir:
            raise SkipTest("elixir module not found")
        import elixir
        
        self.engine = create_engine(conf.LITE_DSN)
        metadata.bind = self.engine
        metadata.create_all()
        
        class CategoryEntity(elixir.Entity):
            elixir.using_options(tablename=str(categories))
            # save_on_init IS VERY IMPORTANT
            elixir.using_mapper_options(save_on_init=False)
            
        self.CategoryEntity = CategoryEntity
        
        self.fixture = SQLAlchemyFixture(
            env={'CategoryData':CategoryEntity},
            engine=metadata.bind
        )
        
        elixir.metadata.bind = self.engine
        elixir.setup_all()
    
    def tearDown(self):
        metadata.drop_all()
    
    @attr(functional=1)
    def test_setup_then_teardown(self):
        try:
            from elixir import session as elixir_session
        except ImportError:
            from elixir import objectstore as elixir_session
        
        eq_(len(elixir_session.query(self.CategoryEntity).all()), 0)
        
        data = self.fixture.data(self.CategoryData)
        data.setup()
        
        eq_(len(elixir_session.query(self.CategoryEntity).all()), 2)
        
        data.teardown()
        eq_(elixir_session.query(self.CategoryEntity).all(), [])
コード例 #25
0
def test_cannot_teardown_unloaded_fixture():
    class CategoryData(DataSet):
        class cars:
            name = 'cars'
            
    engine = create_engine(conf.LITE_DSN)
    metadata.bind = engine
    
    db = SQLAlchemyFixture(
        env=globals(),
        engine=metadata.bind
    )
    data = db.data(CategoryData)
    data.teardown()
コード例 #26
0
class TestQuerySessionMappedClass(HandlerQueryTest):
    
    def setUp(self):
        from fixture import SQLAlchemyFixture, NamedDataStyle
        import sqlalchemy
        from sqlalchemy.orm import (
                mapper, relation, clear_mappers, sessionmaker, scoped_session)
        from sqlalchemy import create_engine
        
        metadata.bind = create_engine(conf.LITE_DSN)
        metadata.create_all()
                
        class options:
            dsn = conf.LITE_DSN
            env = ['fixture.examples.db.sqlalchemy_examples']
        self.options = options
        self.generator = DataSetGenerator(self.options, template=StubTemplate())
        
        ScopedSession = scoped_session(sessionmaker(autoflush=False, transactional=True))
        
        ScopedSession.mapper(Category, categories, save_on_init=False)
        ScopedSession.mapper(Product, products, properties={
            'category': relation(Category),
        }, save_on_init=False)
        ScopedSession.mapper(Offer, offers, properties={
            'category': relation(Category, backref='products'),
            'product': relation(Product)
        }, save_on_init=False)
        
        self.fixture = SQLAlchemyFixture(
                            env=sqlalchemy_examples, 
                            style=NamedDataStyle(),
                            engine=metadata.bind)
        self.data = self.fixture.data(self.CategoryData)
        self.data.setup()
        
        self.hnd = self.generator.get_handler(
                            "%s.Category" % (Category.__module__),
                            obj=Category,
                            connection=metadata.bind)
        self.hnd.begin()
        
    def tearDown(self):
        from sqlalchemy.orm import clear_mappers
        self.data.teardown()
        metadata.drop_all()
        clear_mappers()
コード例 #27
0
class TestImplicitSABinding(unittest.TestCase):
    class CategoryData(DataSet):
        class cars:
            name = 'cars'
        class free_stuff:
            name = 'get free stuff'
            
    def setUp(self):
        engine = create_engine(conf.LITE_DSN)
        metadata.bind = engine
        # metadata.bind.echo = True
        metadata.create_all()
        
        Session = get_transactional_session()
        self.session = Session()
        
        # note the lack of explicit binding :
        self.fixture = SQLAlchemyFixture(
            env={'CategoryData':Category},
        )
        
        clear_mappers()
        # since categories is assigned to metadata, SA should handle binding for us
        mapper(Category, categories)
    
    def tearDown(self):
        # metadata.bind.echo = False
        metadata.drop_all()
        self.session.close()
    
    @attr(functional=1)
    def test_setup_then_teardown(self):
        eq_(self.session.query(Category).all(), [])
        
        data = self.fixture.data(self.CategoryData)
        data.setup()
        
        clear_session(self.session)
        cats = self.session.query(Category).order_by('name').all()
        eq_(cats[0].name, 'cars')
        eq_(cats[1].name, 'get free stuff')
        
        data.teardown()
        clear_session(self.session)
        eq_(list(self.session.query(Category)), [])
コード例 #28
0
class TestImplicitSABinding(unittest.TestCase):
    class CategoryData(DataSet):
        class cars:
            name = 'cars'
        class free_stuff:
            name = 'get free stuff'
            
    def setUp(self):
        engine = create_engine(conf.LITE_DSN)
        metadata.bind = engine
        # metadata.bind.echo = True
        metadata.create_all()
        
        Session = get_transactional_session()
        self.session = Session()
        
        # note the lack of explicit binding :
        self.fixture = SQLAlchemyFixture(
            env={'CategoryData':Category},
        )
        
        clear_mappers()
        # since categories is assigned to metadata, SA should handle binding for us
        mapper(Category, categories)
    
    def tearDown(self):
        # metadata.bind.echo = False
        metadata.drop_all()
        self.session.close()
    
    @attr(functional=1)
    def test_setup_then_teardown(self):
        eq_(self.session.query(Category).all(), [])        
        
        data = self.fixture.data(self.CategoryData)
        data.setup()
        
        self.session.clear()
        cats = self.session.query(Category).order_by('name').all()
        eq_(cats[0].name, 'cars')
        eq_(cats[1].name, 'get free stuff')
        
        data.teardown()
        self.session.clear()
        eq_(list(self.session.query(Category)), [])
コード例 #29
0
def main(argv=sys.argv):
    if len(argv) != 2:
        usage(argv)
    config_uri = argv[1]
    setup_logging(config_uri)
    settings = get_appsettings(config_uri)
    engine = engine_from_config(settings, 'sqlalchemy.')
    metadata = MetaData()
    metadata.bind = engine
    DBSession.configure(bind=engine)
    metadata.create_all()
    dbfixture = SQLAlchemyFixture(env={
        'WorkspaceData': Workspace,
        'MapData': Map
    },
                                  engine=metadata.bind)
    data = dbfixture.data(WorkspaceData, MapData)
    data.setup()
コード例 #30
0
ファイル: websetup.py プロジェクト: anton44eg/fixture
def setup_app(command, conf, vars):
    """Place any commands to setup addressbook here"""
    load_environment(conf.global_conf, conf.local_conf)

    log.info("Creating tables")
    # Create the tables if they don't already exist
    meta.metadata.create_all(bind=meta.engine)
    log.info("Successfully setup")
    
    # load some initial data during setup-app :
    
    db = SQLAlchemyFixture(
            env=model, style=NamedDataStyle(),
            engine=meta.engine)
            
    data = db.data(PersonData)
    log.info("Inserting initial data")
    data.setup()
    log.info("Done")
コード例 #31
0
    def test_with_engine_connection(self):
        fixture = SQLAlchemyFixture(
            # maps to a table object :
            env={'CategoryData': categories},
            # this should overwrite the default bind:
            engine=self.litemeta.bind)
        data = fixture.data(CategoryData)
        data.setup()

        rs = self.heavysession.query(Category).all()
        assert rs == [], "unexpected records in HEAVY_DSN db: %s" % rs

        rs = self.litesession.query(Category).all()
        eq_(len(rs), 2)

        data.teardown()

        rs = self.litesession.query(Category).all()
        eq_(len(rs), 0)
コード例 #32
0
def load_fixtures(suffix='', truncate_tables_first=False):
    from invenio.sqlalchemyutils import db
    from fixture import SQLAlchemyFixture
    from invenio.importutils import autodiscover_modules

    if len(suffix) > 0:
        related_name_re = ".+_fixtures_%s\.py" % (suffix, )
    else:
        related_name_re = ".+_fixtures\.py"

    fixture_modules = autodiscover_modules(['invenio'],
                                           related_name_re=related_name_re)
    model_modules = autodiscover_modules(['invenio'],
                                         related_name_re=".+_model\.py")
    fixtures = dict((f, getattr(ff, f)) for ff in fixture_modules
                    for f in dir(ff) if f[-4:] == 'Data')
    fixture_names = fixtures.keys()
    models = dict((m + 'Data', getattr(mm, m)) for mm in model_modules
                  for m in dir(mm) if m + 'Data' in fixture_names)

    dbfixture = SQLAlchemyFixture(env=models,
                                  engine=db.metadata.bind,
                                  session=db.session)
    data = dbfixture.data(*fixtures.values())

    if len(models) != len(fixtures):
        print ">>> ERROR: There are", len(models), "tables and", len(
            fixtures), "fixtures."
    else:
        print ">>> There are", len(models), "tables to be loaded."

    if truncate_tables_first:
        print ">>> Going to truncate following tables:",
        print map(lambda t: t.__name__, models.values())
        db.session.execute("TRUNCATE %s" % ('collectionname', ))
        db.session.execute("TRUNCATE %s" % ('collection_externalcollection', ))
        for m in models.values():
            db.session.execute("TRUNCATE %s" % (m.__tablename__, ))
        db.session.commit()

    data.setup()
    db.session.commit()
コード例 #33
0
 def test_with_engine_connection(self):
     fixture = SQLAlchemyFixture(
         # maps to a table object :
         env={'CategoryData':categories},
         # this should overwrite the default bind:
         engine = self.litemeta.bind
     )
     data = fixture.data(CategoryData)
     data.setup()
     
     rs = self.heavysession.query(Category).all()
     assert rs==[], "unexpected records in HEAVY_DSN db: %s" % rs 
     
     rs = self.litesession.query(Category).all()
     eq_(len(rs), 2)
     
     data.teardown()
     
     rs = self.litesession.query(Category).all()
     eq_(len(rs), 0)
コード例 #34
0
ファイル: database.py プロジェクト: mhellmic/b2share
def load_fixtures(packages=['invenio.modules.*'], truncate_tables_first=False):
    from invenio.base.utils import import_module_from_packages
    from invenio.ext.sqlalchemy import db, models
    from fixture import SQLAlchemyFixture

    fixture_modules = list(import_module_from_packages('fixtures',
                                                       packages=packages))
    model_modules = list(models)
    fixtures = dict((f, getattr(ff, f)) for ff in fixture_modules
                    for f in dir(ff) if f[-4:] == 'Data')
    fixture_names = fixtures.keys()
    models = dict((m+'Data', getattr(mm, m)) for mm in model_modules
                  for m in dir(mm) if m+'Data' in fixture_names)

    dbfixture = SQLAlchemyFixture(env=models, engine=db.metadata.bind,
                                  session=db.session)
    data = dbfixture.data(
        *[f for (n, f) in iteritems(fixtures) if n in models]
    )
    if len(models) != len(fixtures):
        print(
            ">>> ERROR: There are",
            len(models),
            "tables and",
            len(fixtures),
            "fixtures."
        )
        print(">>>", set(fixture_names) ^ set(models.keys()))
    else:
        print(">>> There are", len(models), "tables to be loaded.")

    if truncate_tables_first:
        print(">>> Going to truncate following tables:",
              map(lambda t: t.__tablename__, models.values()))
        db.session.execute("TRUNCATE %s" % ('collectionname', ))
        db.session.execute("TRUNCATE %s" % ('collection_externalcollection', ))
        for m in models.values():
            db.session.execute("TRUNCATE %s" % (m.__tablename__, ))
        db.session.commit()
    data.setup()
    db.session.commit()
コード例 #35
0
class TestTableObjects(unittest.TestCase):
    class CategoryData(DataSet):
        class cars:
            name = 'cars'
        class free_stuff:
            name = 'get free stuff'
            
    def setUp(self):
        self.engine = create_engine(conf.LITE_DSN)
        metadata.bind = self.engine
        metadata.create_all()
        Session = get_transactional_session()
        self.session = Session()
        self.fixture = SQLAlchemyFixture(
            # maps to a table object :
            env={'CategoryData':categories},
            engine=metadata.bind
        )
        
        clear_mappers()
        mapper(Category, categories)
    
    def tearDown(self):
        metadata.drop_all()
        self.session.close()
    
    @attr(functional=1)
    def test_setup_then_teardown(self):
        eq_(self.session.query(Category).all(), [])
        
        data = self.fixture.data(self.CategoryData)
        data.setup()
        self.session.clear()
        
        cats = self.session.execute(categories.select()).fetchall()
        eq_(cats[0].name, 'cars')
        eq_(cats[1].name, 'get free stuff')
        
        data.teardown()
        self.session.clear()
        eq_(self.session.execute(categories.select()).fetchall(), [])
コード例 #36
0
class TestTableObjects(unittest.TestCase):
    class CategoryData(DataSet):
        class cars:
            name = 'cars'
        class free_stuff:
            name = 'get free stuff'
            
    def setUp(self):
        self.engine = create_engine(conf.LITE_DSN)
        metadata.bind = self.engine
        metadata.create_all()
        Session = get_transactional_session()
        self.session = Session()
        self.fixture = SQLAlchemyFixture(
            # maps to a table object :
            env={'CategoryData':categories},
            engine=metadata.bind
        )
        
        clear_mappers()
        mapper(Category, categories)
    
    def tearDown(self):
        metadata.drop_all()
        self.session.close()
    
    @attr(functional=1)
    def test_setup_then_teardown(self):
        eq_(self.session.query(Category).all(), [])
        
        data = self.fixture.data(self.CategoryData)
        data.setup()
        clear_session(self.session)
        
        cats = self.session.execute(categories.select()).fetchall()
        eq_(cats[0].name, 'cars')
        eq_(cats[1].name, 'get free stuff')
        
        data.teardown()
        clear_session(self.session)
        eq_(self.session.execute(categories.select()).fetchall(), [])
コード例 #37
0
ファイル: loaddata.py プロジェクト: alexbrault/scribeui
def main(argv=sys.argv):
    if len(argv) != 2:
        usage(argv)
    config_uri = argv[1]
    setup_logging(config_uri)
    settings = get_appsettings(config_uri)
    engine = engine_from_config(settings, 'sqlalchemy.')
    metadata = MetaData()
    metadata.bind = engine
    DBSession.configure(bind=engine)
    metadata.create_all()
    dbfixture = SQLAlchemyFixture(
        env={
            'WorkspaceData': Workspace,
            'MapData': Map
            },
        engine=metadata.bind)
    data = dbfixture.data(
        WorkspaceData,
        MapData
        )
    data.setup()
コード例 #38
0
class TestSetupTeardown(unittest.TestCase):
    class CategoryData(DataSet):
        class cars:
            name = 'cars'
        class free_stuff:
            name = 'get free stuff'
            
    def setUp(self):
        engine = create_engine(conf.LITE_DSN)
        metadata.bind = engine
        metadata.create_all()
        Session = get_transactional_session()
        self.session = Session()
        self.fixture = SQLAlchemyFixture(
            env={'CategoryData':Category},
            engine=metadata.bind
        )
        
        clear_mappers()
        mapper(Category, categories)
    
    def tearDown(self):
        metadata.drop_all()
        self.session.close()
    
    @attr(functional=1)
    def test_setup_then_teardown(self):
        eq_(self.session.query(Category).all(), [])
        
        data = self.fixture.data(self.CategoryData)
        data.setup()
        self.session.clear()
        cats = self.session.query(Category).order_by('name').all()
        eq_(cats[0].name, 'cars')
        eq_(cats[1].name, 'get free stuff')
        
        data.teardown()
        self.session.clear()
        eq_(list(self.session.query(Category)), [])
コード例 #39
0
class TestScopedSessions(unittest.TestCase):
    class CategoryData(DataSet):
        class cars:
            name = 'cars'
        class free_stuff:
            name = 'get free stuff'
            
    def setUp(self):
        self.engine = create_engine(conf.LITE_DSN)
        metadata.bind = self.engine
        metadata.create_all()
        ScopedSession = scoped_session(get_transactional_session())
        self.session = ScopedSession()
        self.fixture = SQLAlchemyFixture(
            env={'CategoryData':Category},
            engine=metadata.bind
        )
        
        clear_mappers()
        mapper(Category, categories)
    
    def tearDown(self):
        metadata.drop_all()
        self.session.close()
    
    @attr(functional=1)
    def test_setup_then_teardown(self):
        eq_(self.session.query(Category).all(), [])
        
        data = self.fixture.data(self.CategoryData)
        data.setup()
        clear_session(self.session)
        cats = self.session.query(Category).order_by('name').all()
        eq_(cats[0].name, 'cars')
        eq_(cats[1].name, 'get free stuff')
        
        data.teardown()
        clear_session(self.session)
        eq_(list(self.session.query(Category)), [])
コード例 #40
0
ファイル: test_detail.py プロジェクト: grampajoe/tincture
class TestDetailView(TestCase):
    """Tests for DetailView."""
    urls = 'tests.integration.views.generic.urls'

    def setUp(self):
        setup_environment()

        self.fixture = SQLAlchemyFixture(
            env=models,
            session=session,
            style=NamedDataStyle(),
        )

    def test_detail_view(self):
        with self.fixture.data(fixtures.PersonData) as data:
            response = self.client.get('/people/%s/' % data.PersonData.John.id)

        self.assertEqual(response.status_code, 200)
        self.assertIn(data.PersonData.John.name, response.content)

    def test_detail_view_not_found(self):
        response = self.client.get('/people/100000000001/')

        self.assertEqual(response.status_code, 404)
コード例 #41
0
def install(*args):

    dbfixture = SQLAlchemyFixture(
        env={
            'LocaleData': video_models.Locale,
            'CategoryData': video_models.Category,
            'CategoryTranslationData': video_models.CategoryTranslation,
            'RockpackCoverArtData': RockpackCoverArt,
            'SourceData': video_models.Source,
            'UserData': User,
            'ChannelData': video_models.Channel,
            'ChannelLocaleMetaData': video_models.ChannelLocaleMeta,
            'VideoData': video_models.Video,
            'VideoInstanceData': video_models.VideoInstance,
            'MoodData': video_models.Mood,
            'ExternalTokenData': oauth_models.ExternalToken,
        },
        session=db.session,
    )

    data = dbfixture.data(*args)
    with app.test_request_context():
        data.setup()
        db.session.commit()
コード例 #42
0
def post_handler_demosite_populate(sender, default_data='', *args, **kwargs):
    """Loads data after records are created."""

    if default_data != 'demosite':
        print '>>> You can define your own post hadler for `demosite populate`'
    print '>>> Loading demosite data for BibCirculation ...'

    class CrcLIBRARYData(DataSet):

        class CrcLIBRARY_1:
            phone = u'1234567'
            name = u'Atlantis Main Library'
            address = u'CH-1211 Geneva 23'
            notes = u''
            type = None
            id = 1L
            email = u'*****@*****.**'

        class CrcLIBRARY_2:
            phone = u'1234567'
            name = u'Atlantis HEP Library'
            address = u'CH-1211 Geneva 21'
            notes = u''
            type = None
            id = 2L
            email = u'*****@*****.**'


    class CrcITEMData(DataSet):

        class CrcITEM_bc21001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id')
            status = u'available'
            id_bibrec = 21
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-21001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'MLL-DS.63'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc22001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'requested'
            id_bibrec = 22
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-22001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'1 week'
            location = u'AZD4E-865'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc23001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'requested'
            id_bibrec = 23
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-23001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'JHL-465.DS'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc24001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id')
            status = u'available'
            id_bibrec = 24
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-24001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'J56-475'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc25001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id')
            status = u'on loan'
            id_bibrec = 25
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-25001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'AGT-MLL5'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc26001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'missing'
            id_bibrec = 26
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-26001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'1 week'
            location = u'AZD456-465'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc27001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id')
            status = u'available'
            id_bibrec = 27
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-27001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'JLMQ-45-SQ'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc28001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'available'
            id_bibrec = 28
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-28001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'AZD5-456'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc29001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'requested'
            id_bibrec = 29
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-29001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'AZD456-465'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc30001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'available'
            id_bibrec = 30
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-30001'
            collection = u'Reference'
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'Not for loan'
            location = u'QSQS-52-S'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc31001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id')
            status = u'on loan'
            id_bibrec = 31
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-31001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'1 week'
            location = u'123LSKD'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc31002:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'available'
            id_bibrec = 31
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-31002'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'1 week'
            location = u'QSQ452-S'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc32001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'available'
            id_bibrec = 32
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-32001'
            collection = u'Reference'
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'Not for loan'
            location = u'WDFG-54'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc32002:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id')
            status = u'available'
            id_bibrec = 32
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-32002'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'RZ.612-MK'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc32003:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'missing'
            id_bibrec = 32
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-32003'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'RT-4654-E'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc33001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'on loan'
            id_bibrec = 33
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-33001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'AZ.12-AK'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc34001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'available'
            id_bibrec = 34
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-34001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'ABC-123'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc34002:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id')
            status = u'requested'
            id_bibrec = 34
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-34002'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'HEP-12A'
            number_of_requests = 0L
            expected_arrival_date = u''


    class CrcBORROWERData(DataSet):

        class CrcBORROWER_1:
            name = u'Admin'
            notes = u''
            borrower_until = datetime(1900, 1, 1, 0, 0)
            phone = u'20003'
            borrower_since = datetime(2008, 7, 21, 0, 0)
            email = u'*****@*****.**'
            address = u'99-Z-019'
            mailbox = None
            id = 1L
            ccid = None

        class CrcBORROWER_2:
            name = u'Jekyll'
            notes = u''
            borrower_until = datetime(1900, 1, 1, 0, 0)
            phone = u'01234'
            borrower_since = datetime(2008, 7, 21, 0, 0)
            email = u'*****@*****.**'
            address = u'21-Z-019'
            mailbox = None
            id = 2L
            ccid = None

        class CrcBORROWER_3:
            name = u'Hyde'
            notes = u''
            borrower_until = datetime(1900, 1, 1, 0, 0)
            phone = u'01574'
            borrower_since = datetime(2008, 7, 21, 0, 0)
            email = u'*****@*****.**'
            address = u'22-Z-119'
            mailbox = None
            id = 3L
            ccid = None

        class CrcBORROWER_4:
            name = u'Dorian Gray'
            notes = u''
            borrower_until = datetime(1900, 1, 1, 0, 0)
            phone = u'33234'
            borrower_since = datetime(2008, 7, 21, 0, 0)
            email = u'*****@*****.**'
            address = u'38-Y-819'
            mailbox = None
            id = 4L
            ccid = None

        class CrcBORROWER_5:
            name = u'Romeo Montague'
            notes = u''
            borrower_until = datetime(1900, 1, 1, 0, 0)
            phone = u'93844'
            borrower_since = datetime(2008, 7, 21, 0, 0)
            email = u'*****@*****.**'
            address = u'98-W-859'
            mailbox = None
            id = 5L
            ccid = None

        class CrcBORROWER_6:
            name = u'Juliet Capulet'
            notes = u''
            borrower_until = datetime(1900, 1, 1, 0, 0)
            phone = u'99874'
            borrower_since = datetime(2008, 7, 21, 0, 0)
            email = u'*****@*****.**'
            address = u'91-X-098'
            mailbox = None
            id = 6L
            ccid = None

        class CrcBORROWER_7:
            name = u'Benvolio Montague'
            notes = u''
            borrower_until = datetime(1900, 1, 1, 0, 0)
            phone = u'32354'
            borrower_since = datetime(2008, 7, 21, 0, 0)
            email = u'*****@*****.**'
            address = u'93-P-019'
            mailbox = None
            id = 7L
            ccid = None

        class CrcBORROWER_8:
            name = u'Balthasar Montague'
            notes = u''
            borrower_until = datetime(1900, 1, 1, 0, 0)
            phone = u'78644'
            borrower_since = datetime(2008, 7, 21, 0, 0)
            email = u'*****@*****.**'
            address = u'20-M-349'
            mailbox = None
            id = 8L
            ccid = None


    class CrcLOANData(DataSet):

        class CrcLOAN_1:
            status = u'on loan'
            due_date = datetime.now() + timedelta(days=30)
            id_bibrec = 33
            overdue_letter_date = datetime(1900, 1, 1, 0, 0)
            notes = u''
            barcode = CrcITEMData.CrcITEM_bc33001.ref('barcode')
            id_crcBORROWER = CrcBORROWERData.CrcBORROWER_4.ref('id')
            number_of_renewals = 0L
            loaned_on = datetime.now()
            returned_on = None
            overdue_letter_number = 0L
            type = u'normal'
            id = 1L

        class CrcLOAN_2:
            status = u'on loan'
            due_date = datetime.now() + timedelta(days=7)
            id_bibrec = 31
            overdue_letter_date = datetime(1900, 1, 1, 0, 0)
            notes = u''
            barcode = CrcITEMData.CrcITEM_bc31001.ref('barcode')
            id_crcBORROWER = CrcBORROWERData.CrcBORROWER_5.ref('id')
            number_of_renewals = 0L
            loaned_on = datetime.now()
            returned_on = None
            overdue_letter_number = 0L
            type = u'normal'
            id = 2L

        class CrcLOAN_3:
            status = u'on loan'
            due_date = datetime.now() + timedelta(days=30)
            id_bibrec = 31
            overdue_letter_date = datetime(1900, 1, 1, 0, 0)
            notes = u''
            barcode = CrcITEMData.CrcITEM_bc25001.ref('barcode')
            id_crcBORROWER = CrcBORROWERData.CrcBORROWER_5.ref('id')
            number_of_renewals = 0L
            loaned_on = datetime.now()
            returned_on = None
            overdue_letter_number = 0L
            type = u'normal'
            id = 3L


    class CrcLOANREQUESTData(DataSet):

        class CrcLOANREQUEST_1:
            status = u'pending'
            period_of_interest_from = datetime.now()
            id_bibrec = 34
            request_date = datetime.now()
            notes = u''
            barcode = CrcITEMData.CrcITEM_bc34002.ref('barcode')
            id_crcBORROWER = CrcBORROWERData.CrcBORROWER_5.ref('id')
            period_of_interest_to = datetime.now() + timedelta(days=60)
            id = 1L

        class CrcLOANREQUEST_2:
            status = u'pending'
            period_of_interest_from = datetime.now()
            id_bibrec = 29
            request_date = datetime.now()
            notes = u''
            barcode = CrcITEMData.CrcITEM_bc29001.ref('barcode')
            id_crcBORROWER = CrcBORROWERData.CrcBORROWER_6.ref('id')
            period_of_interest_to = datetime.now() + timedelta(days=45)
            id = 2L

        class CrcLOANREQUEST_3:
            status = u'waiting'
            period_of_interest_from = datetime.now()
            id_bibrec = 33
            request_date = datetime.now()
            notes = u''
            barcode = CrcITEMData.CrcITEM_bc33001.ref('barcode')
            id_crcBORROWER = CrcBORROWERData.CrcBORROWER_5.ref('id')
            period_of_interest_to = datetime.now() + timedelta(days=45)
            id = 3L

        class CrcLOANREQUEST_4:
            status = u'pending'
            period_of_interest_from = datetime.now()
            id_bibrec = 22
            request_date = datetime.now()
            notes = u''
            barcode = CrcITEMData.CrcITEM_bc22001.ref('barcode')
            id_crcBORROWER = CrcBORROWERData.CrcBORROWER_7.ref('id')
            period_of_interest_to = datetime.now() + timedelta(days=90)
            id = 4L


    fixtures = [CrcLIBRARYData, CrcBORROWERData, CrcITEMData, CrcLOANData,
                CrcLOANREQUESTData]

    try:
        from invenio.ext.sqlalchemy import db
        from fixture import SQLAlchemyFixture
        from invenio.modules.circulation import models as bibcirculation_model

        models = dict((m.__name__, getattr(bibcirculation_model, m.__name__[:-4]))
                      for m in fixtures)

        dbfixture = SQLAlchemyFixture(env=models, engine=db.metadata.bind,
                                      session=db.session)
        data = dbfixture.data(*fixtures)

        print ">>> There are", len(models), "tables to be loaded."
        data.setup()

        print ">>> BibCirculation demosite data has been loaded."
    except Exception as e:
        print ">>> FAIL: data has not been loaded", e
コード例 #43
0
class TestCascadingReferences(unittest.TestCase):
    CategoryData = CategoryData
    ProductData = ProductData
    OfferData = OfferData
    
    def setUp(self):
        if not conf.HEAVY_DSN:
            raise SkipTest("conf.HEAVY_DSN not defined")
        engine = create_engine(conf.HEAVY_DSN)
        metadata.bind = engine
        metadata.create_all()
        Session = get_transactional_session()
        self.session = Session()
        
        self.fixture = SQLAlchemyFixture(
            env=globals(),
            engine=metadata.bind,
            style=NamedDataStyle(),
        )
        
        clear_mappers()
        
        mapper(Category, categories)
        mapper(Product, products, properties={
            'category': relation(Category, backref='products')
        })
        mapper(Offer, offers, properties={
            'product': relation(Product, backref='offers'),
            'category': relation(Category, backref='offers')
        })
    
    def tearDown(self):
        metadata.drop_all()
        self.session.close()
        clear_mappers()
        # self.conn.close()
        metadata.bind.dispose()
    
    @attr(functional=1)
    def test_setup_then_teardown(self):
        eq_(self.session.query(Category).all(), [])
        eq_(self.session.query(Product).all(), [])
        eq_(self.session.query(Offer).all(), [])
        
        data = self.fixture.data(self.OfferData)
        data.setup()
        self.session.clear()
        
        cats = self.session.query(Category).order_by('name').all()
        eq_(cats[0].name, 'cars')
        eq_(cats[1].name, 'get free stuff')
        
        prods = self.session.query(Product).order_by('name').all()
        eq_(prods[0].name, 'truck')
        eq_(prods[0].category, cats[0])
        
        off = self.session.query(Offer).order_by('name').all()
        eq_(off[0].name, "it's a free TV")
        eq_(off[0].product, prods[0])
        eq_(off[0].category, cats[1])
        
        eq_(off[1].name, "it's a free spaceship")
        eq_(off[1].product, prods[0])
        eq_(off[1].category, cats[1])
        
        eq_(off[2].name, "it's a free truck")
        eq_(off[2].product, prods[0])
        eq_(off[2].category, cats[1])
        
        data.teardown()
        self.session.clear()
        
        eq_(self.session.query(Category).all(), [])
        eq_(self.session.query(Product).all(), [])
        eq_(self.session.query(Offer).all(), [])
コード例 #44
0
ファイル: receivers.py プロジェクト: switowski/cds-demosite
def post_handler_demosite_populate(sender, default_data='', *args, **kwargs):
    """Loads data after records are created."""

    if default_data != 'demosite':
        print '>>> You can define your own post hadler for `demosite populate`'
    print '>>> Loading demosite data for BibCirculation ...'

    class CrcLIBRARYData(DataSet):

        class CrcLIBRARY_1:
            phone = u'1234567'
            name = u'CERN Document Server'
            address = u'CH-1211 Geneva 23'
            notes = u'Access articles, reports and multimedia content in HEP'
            type = None
            id = 1L
            email = u'*****@*****.**'

        class CrcLIBRARY_2:
            phone = u'1234567'
            name = u'CDS HEP Library'
            address = u'CH-1211 Geneva 21'
            notes = u''
            type = None
            id = 2L
            email = u'*****@*****.**'


    class CrcITEMData(DataSet):

        class CrcITEM_bc21001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id')
            status = u'available'
            id_bibrec = 21
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-21001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'MLL-DS.63'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc22001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'requested'
            id_bibrec = 22
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-22001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'1 week'
            location = u'AZD4E-865'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc23001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'requested'
            id_bibrec = 23
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-23001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'JHL-465.DS'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc24001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id')
            status = u'available'
            id_bibrec = 24
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-24001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'J56-475'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc25001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id')
            status = u'on loan'
            id_bibrec = 25
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-25001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'AGT-MLL5'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc26001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'missing'
            id_bibrec = 26
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-26001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'1 week'
            location = u'AZD456-465'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc27001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id')
            status = u'available'
            id_bibrec = 27
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-27001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'JLMQ-45-SQ'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc28001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'available'
            id_bibrec = 28
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-28001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'AZD5-456'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc29001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'requested'
            id_bibrec = 29
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-29001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'AZD456-465'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc30001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'available'
            id_bibrec = 30
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-30001'
            collection = u'Reference'
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'Not for loan'
            location = u'QSQS-52-S'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc31001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id')
            status = u'on loan'
            id_bibrec = 31
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-31001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'1 week'
            location = u'123LSKD'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc31002:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'available'
            id_bibrec = 31
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-31002'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'1 week'
            location = u'QSQ452-S'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc32001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'available'
            id_bibrec = 32
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-32001'
            collection = u'Reference'
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'Not for loan'
            location = u'WDFG-54'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc32002:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id')
            status = u'available'
            id_bibrec = 32
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-32002'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'RZ.612-MK'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc32003:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'missing'
            id_bibrec = 32
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-32003'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'RT-4654-E'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc33001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'on loan'
            id_bibrec = 33
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-33001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'AZ.12-AK'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc34001:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id')
            status = u'available'
            id_bibrec = 34
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-34001'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'ABC-123'
            number_of_requests = 0L
            expected_arrival_date = u''

        class CrcITEM_bc34002:
            id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id')
            status = u'requested'
            id_bibrec = 34
            description = u'Book'
            modification_date = datetime(2008, 7, 21, 0, 0)
            barcode = u'bc-34002'
            collection = u''
            creation_date = datetime(2008, 7, 21, 0, 0)
            loan_period = u'4 weeks'
            location = u'HEP-12A'
            number_of_requests = 0L
            expected_arrival_date = u''


    class CrcBORROWERData(DataSet):

        class CrcBORROWER_1:
            name = u'Admin'
            notes = u''
            borrower_until = datetime(1900, 1, 1, 0, 0)
            phone = u'20003'
            borrower_since = datetime(2008, 7, 21, 0, 0)
            email = u'*****@*****.**'
            address = u'99-Z-019'
            mailbox = None
            id = 1L
            ccid = None

        class CrcBORROWER_2:
            name = u'Jekyll'
            notes = u''
            borrower_until = datetime(1900, 1, 1, 0, 0)
            phone = u'01234'
            borrower_since = datetime(2008, 7, 21, 0, 0)
            email = u'*****@*****.**'
            address = u'21-Z-019'
            mailbox = None
            id = 2L
            ccid = None

        class CrcBORROWER_3:
            name = u'Hyde'
            notes = u''
            borrower_until = datetime(1900, 1, 1, 0, 0)
            phone = u'01574'
            borrower_since = datetime(2008, 7, 21, 0, 0)
            email = u'*****@*****.**'
            address = u'22-Z-119'
            mailbox = None
            id = 3L
            ccid = None

        class CrcBORROWER_4:
            name = u'Dorian Gray'
            notes = u''
            borrower_until = datetime(1900, 1, 1, 0, 0)
            phone = u'33234'
            borrower_since = datetime(2008, 7, 21, 0, 0)
            email = u'*****@*****.**'
            address = u'38-Y-819'
            mailbox = None
            id = 4L
            ccid = None

        class CrcBORROWER_5:
            name = u'Romeo Montague'
            notes = u''
            borrower_until = datetime(1900, 1, 1, 0, 0)
            phone = u'93844'
            borrower_since = datetime(2008, 7, 21, 0, 0)
            email = u'*****@*****.**'
            address = u'98-W-859'
            mailbox = None
            id = 5L
            ccid = None

        class CrcBORROWER_6:
            name = u'Juliet Capulet'
            notes = u''
            borrower_until = datetime(1900, 1, 1, 0, 0)
            phone = u'99874'
            borrower_since = datetime(2008, 7, 21, 0, 0)
            email = u'*****@*****.**'
            address = u'91-X-098'
            mailbox = None
            id = 6L
            ccid = None

        class CrcBORROWER_7:
            name = u'Benvolio Montague'
            notes = u''
            borrower_until = datetime(1900, 1, 1, 0, 0)
            phone = u'32354'
            borrower_since = datetime(2008, 7, 21, 0, 0)
            email = u'*****@*****.**'
            address = u'93-P-019'
            mailbox = None
            id = 7L
            ccid = None

        class CrcBORROWER_8:
            name = u'Balthasar Montague'
            notes = u''
            borrower_until = datetime(1900, 1, 1, 0, 0)
            phone = u'78644'
            borrower_since = datetime(2008, 7, 21, 0, 0)
            email = u'*****@*****.**'
            address = u'20-M-349'
            mailbox = None
            id = 8L
            ccid = None


    class CrcLOANData(DataSet):

        class CrcLOAN_1:
            status = u'on loan'
            due_date = datetime.now() + timedelta(days=30)
            id_bibrec = 33
            overdue_letter_date = datetime(1900, 1, 1, 0, 0)
            notes = u''
            barcode = CrcITEMData.CrcITEM_bc33001.ref('barcode')
            id_crcBORROWER = CrcBORROWERData.CrcBORROWER_4.ref('id')
            number_of_renewals = 0L
            loaned_on = datetime.now()
            returned_on = None
            overdue_letter_number = 0L
            type = u'normal'
            id = 1L

        class CrcLOAN_2:
            status = u'on loan'
            due_date = datetime.now() + timedelta(days=7)
            id_bibrec = 31
            overdue_letter_date = datetime(1900, 1, 1, 0, 0)
            notes = u''
            barcode = CrcITEMData.CrcITEM_bc31001.ref('barcode')
            id_crcBORROWER = CrcBORROWERData.CrcBORROWER_5.ref('id')
            number_of_renewals = 0L
            loaned_on = datetime.now()
            returned_on = None
            overdue_letter_number = 0L
            type = u'normal'
            id = 2L

        class CrcLOAN_3:
            status = u'on loan'
            due_date = datetime.now() + timedelta(days=30)
            id_bibrec = 31
            overdue_letter_date = datetime(1900, 1, 1, 0, 0)
            notes = u''
            barcode = CrcITEMData.CrcITEM_bc25001.ref('barcode')
            id_crcBORROWER = CrcBORROWERData.CrcBORROWER_5.ref('id')
            number_of_renewals = 0L
            loaned_on = datetime.now()
            returned_on = None
            overdue_letter_number = 0L
            type = u'normal'
            id = 3L


    class CrcLOANREQUESTData(DataSet):

        class CrcLOANREQUEST_1:
            status = u'pending'
            period_of_interest_from = datetime.now()
            id_bibrec = 34
            request_date = datetime.now()
            notes = u''
            barcode = CrcITEMData.CrcITEM_bc34002.ref('barcode')
            id_crcBORROWER = CrcBORROWERData.CrcBORROWER_5.ref('id')
            period_of_interest_to = datetime.now() + timedelta(days=60)
            id = 1L

        class CrcLOANREQUEST_2:
            status = u'pending'
            period_of_interest_from = datetime.now()
            id_bibrec = 29
            request_date = datetime.now()
            notes = u''
            barcode = CrcITEMData.CrcITEM_bc29001.ref('barcode')
            id_crcBORROWER = CrcBORROWERData.CrcBORROWER_6.ref('id')
            period_of_interest_to = datetime.now() + timedelta(days=45)
            id = 2L

        class CrcLOANREQUEST_3:
            status = u'waiting'
            period_of_interest_from = datetime.now()
            id_bibrec = 33
            request_date = datetime.now()
            notes = u''
            barcode = CrcITEMData.CrcITEM_bc33001.ref('barcode')
            id_crcBORROWER = CrcBORROWERData.CrcBORROWER_5.ref('id')
            period_of_interest_to = datetime.now() + timedelta(days=45)
            id = 3L

        class CrcLOANREQUEST_4:
            status = u'pending'
            period_of_interest_from = datetime.now()
            id_bibrec = 22
            request_date = datetime.now()
            notes = u''
            barcode = CrcITEMData.CrcITEM_bc22001.ref('barcode')
            id_crcBORROWER = CrcBORROWERData.CrcBORROWER_7.ref('id')
            period_of_interest_to = datetime.now() + timedelta(days=90)
            id = 4L


    fixtures = [CrcLIBRARYData, CrcBORROWERData, CrcITEMData, CrcLOANData,
                CrcLOANREQUESTData]

    try:
        from invenio.ext.sqlalchemy import db
        from fixture import SQLAlchemyFixture
        from invenio.modules.circulation import models as bibcirculation_model

        models = dict((m.__name__, getattr(bibcirculation_model, m.__name__[:-4]))
                      for m in fixtures)

        dbfixture = SQLAlchemyFixture(env=models, engine=db.metadata.bind,
                                      session=db.session)
        data = dbfixture.data(*fixtures)

        print ">>> There are", len(models), "tables to be loaded."
        data.setup()

        print ">>> BibCirculation demosite data has been loaded."
    except Exception as e:
        print ">>> FAIL: data has not been loaded", e
コード例 #45
0
class TestCascadingReferences(unittest.TestCase):
    CategoryData = CategoryData
    ProductData = ProductData
    OfferData = OfferData
    
    def setUp(self):
        if not conf.HEAVY_DSN:
            raise SkipTest("conf.HEAVY_DSN not defined")
        engine = create_engine(conf.HEAVY_DSN)
        metadata.bind = engine
        metadata.create_all()
        Session = get_transactional_session()
        self.session = Session()
        
        self.fixture = SQLAlchemyFixture(
            env=globals(),
            engine=metadata.bind,
            style=NamedDataStyle(),
        )
        
        clear_mappers()
        
        mapper(Category, categories)
        mapper(Product, products, properties={
            'category': relation(Category, backref='products')
        })
        mapper(Offer, offers, properties={
            'product': relation(Product, backref='offers'),
            'category': relation(Category, backref='offers')
        })
    
    def tearDown(self):
        metadata.drop_all()
        self.session.close()
        clear_mappers()
        # self.conn.close()
        metadata.bind.dispose()
    
    @attr(functional=1)
    def test_setup_then_teardown(self):
        eq_(self.session.query(Category).all(), [])
        eq_(self.session.query(Product).all(), [])
        eq_(self.session.query(Offer).all(), [])
        
        data = self.fixture.data(self.OfferData)
        data.setup()
        clear_session(self.session)
        
        cats = self.session.query(Category).order_by('name').all()
        eq_(cats[0].name, 'cars')
        eq_(cats[1].name, 'get free stuff')
        
        prods = self.session.query(Product).order_by('name').all()
        eq_(prods[0].name, 'truck')
        eq_(prods[0].category, cats[0])
        
        off = self.session.query(Offer).order_by('name').all()
        eq_(off[0].name, "it's a free TV")
        eq_(off[0].product, prods[0])
        eq_(off[0].category, cats[1])
        
        eq_(off[1].name, "it's a free spaceship")
        eq_(off[1].product, prods[0])
        eq_(off[1].category, cats[1])
        
        eq_(off[2].name, "it's a free truck")
        eq_(off[2].product, prods[0])
        eq_(off[2].category, cats[1])
        
        data.teardown()
        clear_session(self.session)
        
        eq_(self.session.query(Category).all(), [])
        eq_(self.session.query(Product).all(), [])
        eq_(self.session.query(Offer).all(), [])
コード例 #46
0
ファイル: fixtures.py プロジェクト: seedofjoy/library-example
def install(app, *args):
    dbfixture = SQLAlchemyFixture(env=models, style=NamedDataStyle(),
                                  engine=db.engine)
    data = dbfixture.data(*args)
    data.setup()
    dbfixture.dispose()
コード例 #47
0
def install(app, *args):
    engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'])
    db = SQLAlchemyFixture(env=models, style=NamedDataStyle(), engine=engine)
    data = db.data(*args)
    data.setup()
    db.dispose()