diff --git a/ogn/collect/fetchddb.py b/ogn/collect/fetchddb.py index f9c87ce..f228ed2 100644 --- a/ogn/collect/fetchddb.py +++ b/ogn/collect/fetchddb.py @@ -5,15 +5,18 @@ from ogn.collect.celery import app from ogn.model import Device from ogn.utils import get_ddb +from ogn.model.address_origin import AddressOrigin logger = get_task_logger(__name__) @app.task -def update_ddb_data(): - logger.info("Update ddb data.") +def update_ddb_from_ogn(): + logger.info("Update ddb data from ogn.") - app.session.query(Device).delete() + app.session.query(Device) \ + .filter(Device.address_origin == AddressOrigin.ogn_ddb) \ + .delete() devices = get_ddb() logger.debug("New Devices: %s" % str(devices)) @@ -25,10 +28,14 @@ def update_ddb_data(): @app.task -def import_ddb_data(filename='custom_ddb.txt'): +def update_ddb_from_file(): logger.info("Import ddb data from file.") - devices = get_ddb(filename) + app.session.query(Device) \ + .filter(Device.address_origin == AddressOrigin.userdefined) \ + .delete() + + devices = get_ddb('ogn/custom_ddb.txt') app.session.bulk_save_objects(devices) app.session.commit() diff --git a/ogn/commands/database.py b/ogn/commands/database.py index f6c3ed6..0185f30 100644 --- a/ogn/commands/database.py +++ b/ogn/commands/database.py @@ -3,7 +3,7 @@ from ogn.model import Base from manager import Manager manager = Manager() -from ogn.collect.fetchddb import update_ddb_data +from ogn.collect.fetchddb import update_ddb_from_ogn, update_ddb_from_file @manager.command @@ -15,9 +15,18 @@ def init(): @manager.command -def updateddb(): - """Update the ddb data.""" +def update_ddb_ogn(): + """Update devices with data from ogn.""" print("Updating ddb data...") - result = update_ddb_data.delay() + result = update_ddb_from_ogn.delay() + counter = result.get() + print("Imported %i devices." % counter) + + +@manager.command +def update_ddb_file(): + """Update devices with data from local file.""" + print("Updating ddb data...") + result = update_ddb_from_file.delay() counter = result.get() print("Imported %i devices." % counter)