crashclouseau/create.py (36 lines of code) (raw):
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
from datetime import datetime
from dateutil.relativedelta import relativedelta
import json
from libmozdata import utils as lmdutils
import pytz
import six
from . import config, java, models, update
from .logger import logger
def create(date=None, extra={}, hgauthors={}):
"""Clear the current database (if one), create a new one and add everything we need"""
models.clear()
if not models.create():
return
if not date:
date = pytz.utc.localize(datetime.utcnow())
else:
date = lmdutils.get_date_ymd(date)
logger.info("Populate with java files: started.")
try:
java.populate_java_files()
except Exception as e:
logger.error(e, exc_info=True)
return
logger.info("Populate with java files: finished.")
models.HGAuthor.put(hgauthors)
start_date = date - relativedelta(days=config.get_ndays_of_data())
logger.info("Create data for {}: started.".format(date))
for chan in config.get_channels():
update.put_filelog(chan, start_date=start_date, end_date=date)
for prod in config.get_products():
update.update_builds(start_date + relativedelta(days=1), chan, prod)
if isinstance(extra, six.string_types):
extra = json.loads(extra)
for build in extra.get("builds", []):
update.put_build(*build)
logger.info("Create data for {}: finished.".format(date))
update.update_all()