Exemple #1
0
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)
Exemple #2
0
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})
Exemple #3
0
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])
Exemple #4
0
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
Exemple #5
0
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
Exemple #6
0
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
Exemple #7
0
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