Esempio n. 1
0
def export_data():

    n = ("Beginning export process. Writing files to {}.".format(
        APPLICATION_PATH + EXPORT_FILE_PATH))

    yield ("<p>" + n)

    # db = DataSet('sqlite:///' + DATABASE_PATH)
    db = DataSet(DB.dataset_connection())

    if os.path.isdir(APPLICATION_PATH + EXPORT_FILE_PATH) is False:
        os.makedirs(APPLICATION_PATH + EXPORT_FILE_PATH)

    with db.transaction():

        for table_name in db.tables:

            if not table_name.startswith("page_search"):

                table = db[table_name]
                n = "Exporting table: " + table_name

                yield ('<p>' + n)
                filename = APPLICATION_PATH + EXPORT_FILE_PATH + '/dump-' + table_name + '.json'
                table.freeze(format='json', filename=filename)

    db.close()

    n = "Export process ended. <a href='{}'>Click here to continue.</a>".format(
        BASE_URL)

    yield ("<p>" + n)
Esempio n. 2
0
def import_data():

    n = ("Beginning import process.")

    yield "<p>" + n

    DB.clean_database()

    xdb = DataSet(DB.dataset_connection())

    xdb.query(DB.pre_import(), commit=False)

    with xdb.transaction() as txn:

        for table_name in xdb.tables:

            xdb.query('DELETE FROM `{}`;'.format(table_name), commit=True)

    with xdb.transaction() as txn:

        for table_name in xdb.tables:

            n = ("Loading table " + table_name)

            yield "<p>" + n

            try:
                table = xdb[table_name]
            except:
                yield ("<p>Sorry, couldn't create table ", table_name)
            else:

                filename = (APPLICATION_PATH + EXPORT_FILE_PATH + '/dump-' +
                            table_name + '.json')
                if os.path.exists(filename):

                    table.thaw(format='json', filename=filename, strict=True)

                else:
                    n = ("No data for table " + table_name)
                    yield "<p>" + n

    xdb.query(DB.post_import())

    xdb.close()

    DB.recreate_indexes()

    n = "Import process ended. <a href='{}'>Click here to continue.</a>".format(
        BASE_URL)

    yield "<p>" + n

    from core.routes import app
    app.reset()
Esempio n. 3
0
def import_data():
    from settings import DB
    n = []
    n.append("Beginning import process.")
    # yield "<p>" + n

    n.append("Cleaning DB.")
    # yield "<p>" + n
    try:
        DB.clean_database()
    except:
        from core.models import init_db
        init_db.recreate_database()
        DB.remove_indexes()

    n.append("Clearing tables.")
    # yield "<p>" + n

    xdb = DataSet(DB.dataset_connection())

    # with xdb.atomic() as txn:
    try:
        with xdb.transaction():
            for table_name in xdb.tables:
                n.append("Loading table " + table_name)
                # yield "<p>" + n
                try:
                    table = xdb[table_name]
                except:
                    n.append("<p>Sorry, couldn't create table ", table_name)
                else:
                    filename = (APPLICATION_PATH + EXPORT_FILE_PATH +
                                '/dump-' + table_name + '.json')
                    if os.path.exists(filename):
                        try:
                            table.thaw(format='json',
                                       filename=filename,
                                       strict=True)
                        except Exception as e:
                            n.append("<p>Sorry, error:{}".format(e))

                    else:
                        n.append("No data for table " + table_name)
                        # yield "<p>" + n
    except Exception as e:
        n.append('Ooops: {}'.e)
    else:
        xdb.query(DB.post_import())
        xdb.close()
        DB.recreate_indexes()
        n.append(
            "Import process ended. <a href='{}'>Click here to continue.</a>".
            format(BASE_URL))
    return '<p>'.join(n)
Esempio n. 4
0
def db_recreate(table_name='FileInfo'):
    '''
    Utility function for recreating a database table after changes
    '''

    from core import models
    table_model = getattr(models, table_name)
    table_ref = table_model._meta.db_table

    from settings import DB, EXPORT_FILE_PATH
    from core.libs.playhouse.dataset import DataSet

    n = []

    n.append("Beginning export process... Writing files to {}.".format(APPLICATION_PATH + EXPORT_FILE_PATH))

    xdb = DataSet(DB.dataset_connection())

    if os.path.isdir(APPLICATION_PATH + EXPORT_FILE_PATH) is False:
        os.makedirs(APPLICATION_PATH + EXPORT_FILE_PATH)
    with xdb.transaction():
        table = xdb[table_ref]
        n.append("Exporting table: " + table_name)
        filename = APPLICATION_PATH + EXPORT_FILE_PATH + '/dump-' + table_ref + '.json'
        table.freeze(format='json', filename=filename)
    xdb.close()

    n.append("Export process ended.")

    with db.atomic():
        db.drop_tables((table_model,),
            safe=True)
        db.create_tables((table_model,),
            safe=False)

    try:
        with xdb.transaction():
            n.append("Loading table " + table_name)
            try:
                table = xdb[table_ref]
            except:
                n.append("<p>Sorry, couldn't create table ", table_name)
            else:
                filename = (APPLICATION_PATH + EXPORT_FILE_PATH +
                    '/dump-' + table_ref + '.json')
                if os.path.exists(filename):
                    try:
                        table.thaw(format='json',
                            filename=filename,
                            strict=True)
                    except Exception as e:
                        n.append("<p>Sorry, error:{}".format(e))

                else:
                    n.append("No data for table " + table_name)
    except Exception as e:
        n.append('Ooops: {}'.e)
    else:
        xdb.query(DB.post_import())
        xdb.close()
        # DB.recreate_indexes()
        n.append("Import process ended.")

    return ('<p>'.join(n))
Esempio n. 5
0
def db_recreate(table_name='FileInfo'):
    '''
    Utility function for recreating a database table after changes
    '''

    from core import models
    table_model = getattr(models, table_name)
    table_ref = table_model._meta.db_table

    from settings import DB, EXPORT_FILE_PATH
    from core.libs.playhouse.dataset import DataSet

    n = []

    n.append("Beginning export process... Writing files to {}.".format(
        APPLICATION_PATH + EXPORT_FILE_PATH))

    xdb = DataSet(DB.dataset_connection())

    if os.path.isdir(APPLICATION_PATH + EXPORT_FILE_PATH) is False:
        os.makedirs(APPLICATION_PATH + EXPORT_FILE_PATH)
    with xdb.transaction():
        table = xdb[table_ref]
        n.append("Exporting table: " + table_name)
        filename = APPLICATION_PATH + EXPORT_FILE_PATH + '/dump-' + table_ref + '.json'
        table.freeze(format='json', filename=filename)
    xdb.close()

    n.append("Export process ended.")

    with db.atomic():
        db.drop_tables((table_model, ), safe=True)
        db.create_tables((table_model, ), safe=False)

    try:
        with xdb.transaction():
            n.append("Loading table " + table_name)
            try:
                table = xdb[table_ref]
            except:
                n.append("<p>Sorry, couldn't create table ", table_name)
            else:
                filename = (APPLICATION_PATH + EXPORT_FILE_PATH + '/dump-' +
                            table_ref + '.json')
                if os.path.exists(filename):
                    try:
                        table.thaw(format='json',
                                   filename=filename,
                                   strict=True)
                    except Exception as e:
                        n.append("<p>Sorry, error:{}".format(e))

                else:
                    n.append("No data for table " + table_name)
    except Exception as e:
        n.append('Ooops: {}'.e)
    else:
        xdb.query(DB.post_import())
        xdb.close()
        # DB.recreate_indexes()
        n.append("Import process ended.")

    return ('<p>'.join(n))