Last active
April 1, 2019 08:49
-
-
Save snopoke/43462ea5b7322d3422e979e02cc0ea39 to your computer and use it in GitHub Desktop.
Mobile UCR SQL Log
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from casexml.apps.phone.tests.utils import call_fixture_generator | |
from corehq.apps.app_manager.fixtures.mobile_ucr import report_fixture_generator | |
from casexml.apps.phone.models import OTARestoreCommCareUser | |
from corehq.apps.users.models import CommCareUser | |
from corehq.apps.app_manager.models import Application | |
from datetime import date | |
import logging | |
from corehq.apps.app_manager.models import ReportModule | |
from corehq.apps.app_manager.fixtures.mobile_ucr import ReportFixturesProvider | |
import json | |
class CustomFileHandler(logging.FileHandler): | |
msgs = [] | |
def emit(self, record): | |
if 'log this' in record.msg: | |
super(CustomFileHandler, self).emit(record) | |
if 'config_report_icds-cas' in record.msg: | |
self.msgs.append('--start\n{}\n--end'.format(record.msg.replace('%s', "'%s'"))) | |
if record.msg == '%r' and self.msgs: | |
args = tuple([ | |
a.strftime('%Y-%m-%d') if isinstance(a, date) else a | |
for a in record.args[0].params | |
]) | |
msg = self.msgs.pop(0) | |
record.msg = msg | |
record.args = args | |
super(CustomFileHandler, self).emit(record) | |
def clear_handlers(logger): | |
for h in logger.handlers: | |
logger.removeHandler(h) | |
clear_handlers(logging.getLogger('')) | |
for d in logging.Logger.manager.loggerDict: | |
clear_handlers(logging.getLogger(d)) | |
logger = logging.getLogger('sqlalchemy.engine') | |
logger.setLevel(logging.INFO) | |
clear_handlers(logger) | |
logger.addHandler(CustomFileHandler('sql.log')) | |
logger.addHandler(logging.FileHandler('all.log')) | |
app_id = '<app id>' | |
app = Application.get(app_id) | |
username = '<username>' | |
user = CommCareUser.get_by_username(username) | |
ruser = OTARestoreCommCareUser(user.domain, user) | |
#call_fixture_generator(report_fixture_generator, ruser, app=app) | |
apps = [app] | |
report_configs = [ | |
report_config | |
for app_ in apps | |
for module in app_.modules if isinstance(module, ReportModule) | |
for report_config in module.report_configs | |
] | |
for i, rc in enumerate(report_configs): | |
logger.info('log this: {}: {}'.format(i, json.dumps(rc.to_json()))) | |
ReportFixturesProvider.report_config_to_v1_fixture(rc, ruser) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment