ogn-python/ogn/collect/database.py

48 wiersze
1.3 KiB
Python
Czysty Zwykły widok Historia

from celery.utils.log import get_task_logger
2016-02-03 22:09:11 +00:00
2016-06-21 17:34:05 +00:00
from ogn.model import DeviceInfo, AddressOrigin
from ogn.utils import get_ddb
2016-02-03 22:09:11 +00:00
from ogn.collect.celery import app
2016-02-03 22:09:11 +00:00
logger = get_task_logger(__name__)
2016-05-22 05:26:02 +00:00
2016-07-01 05:00:17 +00:00
def delete_device_infos(session, address_origin):
2016-06-21 17:34:05 +00:00
session.query(DeviceInfo) \
.filter(DeviceInfo.address_origin == address_origin) \
2016-05-22 05:26:02 +00:00
.delete()
2016-07-01 05:00:17 +00:00
session.commit()
2016-05-22 05:26:02 +00:00
2016-07-01 05:00:17 +00:00
def update_device_infos(session, device_infos):
2016-06-21 17:34:05 +00:00
session.bulk_save_objects(device_infos)
session.commit()
2016-06-21 17:34:05 +00:00
return len(device_infos)
@app.task
def import_ddb():
"""Import registered devices from the DDB."""
logger.info("Import registered devices fom the DDB...")
2016-07-01 05:00:17 +00:00
address_origin = AddressOrigin.ogn_ddb
delete_device_infos(app.session, address_origin)
counter = update_device_infos(app.session, get_ddb(address_origin=address_origin))
logger.info("Imported {} devices.".format(counter))
@app.task
def import_file(path='tests/custom_ddb.txt'):
"""Import registered devices from a local file."""
logger.info("Import registered devices from '{}'...".format(path))
2016-07-01 05:00:17 +00:00
address_origin = AddressOrigin.user_defined
delete_device_infos(app.session, address_origin)
counter = update_device_infos(app.session, get_ddb(csvfile=path, address_origin=address_origin))
logger.info("Imported {} devices.".format(counter))