-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbcr2mongo.py
67 lines (60 loc) · 1.85 KB
/
bcr2mongo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import argparse
import datetime as dt
import logging
import sys
import pymongo
from utils import get_logger, barchartrace_to_html, mongo_connected
from utils.config import (
MONGO_URI, DB_NAME, COLLECTION_NAME, ENV, BARCHART_DB_KEY
)
CLIENT = pymongo.MongoClient(MONGO_URI)
DB = CLIENT[DB_NAME]
COLLECTION = DB[COLLECTION_NAME]
def barchartrace_to_mongo(var_to_bcr):
"""
Create, or update, an item on mongodb like the following
{
"_id": "barchart_race",
"ts": dt.datetime.now(),
"html_str": "<video ....."
}
:param: var_to_bcr: str
:return: None
"""
bcr_html = barchartrace_to_html(var_to_bcr)
new_data = {
"$set": {
BARCHART_DB_KEY: var_to_bcr,
"html_str": bcr_html,
"ts": dt.datetime.now()
}
}
main_logger.info(
"Writing {} bcr to collection {}".format(var_to_bcr, COLLECTION_NAME)
)
COLLECTION.update_one({BARCHART_DB_KEY: var_to_bcr}, new_data, upsert=True)
if __name__ == "__main__":
main_logger = get_logger(name="main")
main_logger.setLevel(logging.INFO)
PARSER_DESCRIPTION = (
"Make a bar chart race of a given variable in the PC dataset"
" e.g. 'totale_positivi'"
)
parser = argparse.ArgumentParser(description=PARSER_DESCRIPTION)
parser.add_argument(
'-v', '--var',
help='provide the var name as per the PC dataset',
required=True
)
args = parser.parse_args()
VAR_TO_BCR = args.var
main_logger.info("=" * 20)
if ENV is not None:
main_logger.info("ENVIRONMENT: {}".format(ENV))
main_logger.info("Doing {}".format(VAR_TO_BCR))
if not mongo_connected(client=CLIENT):
main_logger.error("Check mongo connection")
sys.exit(1)
barchartrace_to_mongo(VAR_TO_BCR)
main_logger.info("Done")
main_logger.info("=" * 20)