def directory_handler(data): if isinstance(data, str): data = json.loads(data) if data is None: data = {} base_path = data.get('base_path', os.path.expanduser("~")) new_path = data.get('new_path') if new_path is not None: base_path = os.path.abspath(os.path.join(base_path, new_path)) if not os.path.isdir(base_path): transmit.errors(DIRECTORY, 'invalid path') return path = os.path.join(base_path, '*/') subdir = [] for d in glob.glob(path): subdir.append(d) payload = { 'base_path': base_path, 'subdir': subdir, } transmit.data(DIRECTORY, payload)
def api_key_handler(data): if isinstance(data, str): data = json.loads(data) tp = data.get('type', 'GET') if not isinstance(tp, str): transmit.errors(DART_API_KEY, 'Invalid request type') return tp = tp.upper() api_key = None if tp == 'GET': config = read_config_file() if config: api_key = config.get(DART_API_KEY) elif tp == 'SET': api_key = data.get(DART_API_KEY) else: transmit.errors(DART_API_KEY, 'Invalid request type') return api_key = set_api_key(api_key) if api_key is not None: save_config_file({DART_API_KEY: api_key}) transmit.data(DART_API_KEY, {DART_API_KEY: api_key})
def corp_list_handler(data): if not check_authorized(): return # Loading Start transmit.start(CORP_LIST) corp_list = get_corp_list() transmit.finish(CORP_LIST) if isinstance(data, str): data = json.loads(data) corp_name = data.get('corp_name') exactly = data.get('exactly') market = data.get('market', 'YKNE') if corp_name is None: transmit.errors(CORP_LIST, 'corp_name is None') else: corps = corp_list.find_by_corp_name(corp_name=corp_name, exactly=exactly, market=market) if corps is None: corps = [] transmit.data(CORP_LIST, [x.to_dict() for x in corps])
def download_handler(data): if isinstance(data, str): data = json.loads(data) if not check_authorized(): return bgn_de = data.get('bgn_de') end_de = data.get('end_de') corps = data.get('corps') path = data.get('path') separate = data.get('separate', False) report_tp = data.get('report_tp', 'annual') report_tp = report_tp.lower() if (bgn_de and path) is None or len(corps) == 0: transmit.errors(DOWNLOAD, {'msg': 'Some parameters are missing'}) return corp_list = get_corp_list() # stderr progress extractor stderr = sys.stderr sys.stderr = TqdmExtractor(stderr) transmit.start(DOWNLOAD) total = len(corps) # Start for idx, corp_code in enumerate(corps): corp = corp_list.find_by_corp_code(corp_code) sys.stderr.set_info(corp, len(corps), index=idx) try: # Extracting START transmit_progress(0, corp.corp_code, corp.corp_name, total, idx) fs = corp.extract_fs(bgn_de=bgn_de, end_de=end_de, separate=separate, report_tp=report_tp) filename = '{}_{}_{}.xlsx'.format(corp.corp_name, corp.corp_code, report_tp) fs.save(path=path, filename=filename) except Exception as e: msg = '[{}]{} : {}'.format(corp.corp_code, corp.corp_name, str(e)) transmit.errors(DOWNLOAD, msg) finally: # Extracting Finish transmit_progress(100, corp.corp_code, corp.corp_name, total, idx) transmit.finish(DOWNLOAD) # Reset stderr sys.stderr = stderr
def set_api_key(api_key): try: dart = get_dart_fss() dart.set_api_key(api_key) save_config_file({DART_API_KEY: api_key}) except ValueError as e: api_key = None transmit.errors(DART_API_KEY, str(e)) finally: cache[DART_API_KEY] = api_key return api_key
def get_corp_list(): # Acquire semaphore sem.acquire() corp_list = [] dart = get_dart_fss() try: corp_list = cache.get('corp_list') if corp_list is None: corp_list = dart.get_corp_list() cache['corp_list'] = corp_list except APIKeyError as e: transmit.errors(CORP_LIST, str(e)) finally: # Release semaphore sem.release() return corp_list
def check_authorized(): api_key = cache.get('DART_API_KEY', None) if api_key is None: transmit.errors(DART_API_KEY, 'Unauthorized') return False return True