Esempio n. 1
0
def peewee_database():
    from playhouse.apsw_ext import APSWDatabase

    from cozy.db.artwork_cache import ArtworkCache
    from cozy.db.book import Book
    from cozy.db.offline_cache import OfflineCache
    from cozy.db.settings import Settings
    from cozy.db.storage import Storage
    from cozy.db.storage_blacklist import StorageBlackList
    from cozy.db.track import Track

    models = [
        Track, Book, Settings, ArtworkCache, Storage, StorageBlackList,
        OfflineCache
    ]

    print("Setup database...")
    db_path = '/tmp/cozy_test.db'
    test_db = APSWDatabase(db_path, pragmas=[('journal_mode', 'wal')])
    test_db.bind(models, bind_refs=False, bind_backrefs=False)
    test_db.connect()
    test_db.create_tables(models)

    path_of_test_folder = os.path.dirname(os.path.realpath(__file__)) + '/'

    with open(path_of_test_folder + 'books.json') as json_file:
        book_data = json.load(json_file)

    with open(path_of_test_folder + 'tracks.json') as json_file:
        track_data = json.load(json_file)

    Book.insert_many(book_data).execute()
    for chunk in chunks(track_data, 25):
        Track.insert_many(chunk).execute()

    print("Provide database...")
    yield test_db

    print("Teardown database...")
    test_db.drop_tables(models)
    test_db.close()
    os.remove(db_path)
Esempio n. 2
0
def prepare_db():
    from playhouse.apsw_ext import APSWDatabase
    from cozy.db.artwork_cache import ArtworkCache
    from cozy.db.book import Book
    from cozy.db.offline_cache import OfflineCache
    from cozy.db.settings import Settings
    from cozy.db.storage import Storage
    from cozy.db.storage_blacklist import StorageBlackList
    from cozy.db.track import Track

    models = [
        Track, Book, Settings, ArtworkCache, Storage, StorageBlackList,
        OfflineCache
    ]

    print("Setup database...")

    db_path = '/tmp/cozy_test.db'
    test_db = APSWDatabase(db_path, pragmas=[('journal_mode', 'wal')])
    test_db.bind(models, bind_refs=False, bind_backrefs=False)
    test_db.connect()
    test_db.create_tables(models)

    return db_path, models, test_db
Esempio n. 3
0
        raise


if __name__ == '__main__':
    # template --char "{'name': '', 'stand': '', 'part': , 'manga_debut': , 'anime_debut': , 'wiki': '', 'comment': ''}" --ref "{'name': '', 'reference_type': ''}" --song "{'title': '', 'artist': '', 'link': ''}"
    parser = argparse.ArgumentParser()
    parser.add_argument('--character', type=literal_eval_w_traceback)
    parser.add_argument('--reference', type=literal_eval_w_traceback)
    parser.add_argument('--song',
                        type=literal_eval_w_traceback,
                        action='append')
    last = None

    database.connect()
    try:
        database.create_tables([Character, Reference, Song])
    except (SQLError, OperationalError) as e:
        print(e)

    while True:
        res = input('Add another one or stop\n')
        if res == 'stop':
            break
        else:
            try:
                res = res.strip()
                args = shlex.split(res)
                args = parser.parse_args(args)
                print(args)

                if args.character is None:
Esempio n. 4
0
                             on_delete='RESTRICT',
                             primary_key=True)
    value = DecimalField(verbose_name='Rank for Place', decimal_places=2)


class Quality(ObraModel):
    """
    Race Quality figures for a Race
    """
    race = ForeignKeyField(verbose_name='Quality Race',
                           model=Race,
                           backref='quality',
                           on_update='RESTRICT',
                           on_delete='RESTRICT')
    value = DecimalField(verbose_name='Race Quality', decimal_places=2)
    points_per_place = DecimalField(verbose_name='Points per Place',
                                    decimal_places=2)


with db.connection_context():
    db.create_tables([
        Series, Event, Race, Person, ObraPersonSnapshot, PendingUpgrade,
        Result, Points, Rank, Quality
    ],
                     fail_silently=True)

    try:
        db.execute_sql('VACUUM')
    except Exception as e:
        logger.warn('Failed to vacuum database: {}'.format(e))