Files
kontur-focus-lib/kontur_focus/focus.py

148 lines
5.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import os
from dotenv import load_dotenv
from kontur_focus.req import Request
from datetime import datetime
class Focus(Request):
_basedir = os.path.abspath(os.path.dirname(__file__))
def __init__(self, inn: str, ogrn: str = None):
load_dotenv()
super().__init__(
base_url=os.environ.get('FOCUS_BASE_URL'),
access_key=os.environ.get('FOCUS_ACCESS_KEY'),
inn=inn,
ogrn=ogrn
)
def base_info(self):
"""Выгрузка базовых реквизитов Российских юридических лиц и индивидуальных предпринимателей
:return: Информация о ЮЛ
:rtype: str
"""
return self.get(path='/req')
def advanced_info(self):
"""Расширенные сведения на основе ЕГРЮЛ/ЕГРИП
:return: Информация о ЮЛ
:rtype: str
"""
return self.get('/egrDetails')
def excerpt(self, path: str = None) -> dict:
"""Выписка из ЕГРЮЛ/ЕГРИП
:param path: Путь выгрузки файла. Если не указан, выгружается в текущий каталог.
:type path: str, необязательный
:return: Результат, имя файла и путь выгрузки
:rtype: str
"""
response = self.get('/excerpt')
current_datetime = datetime.now().strftime('%d-%m-%Y_%H-%M')
filename = f'Выписка_{self.inn}_{current_datetime}.pdf'
if not path:
file_path = os.path.join(self._basedir, filename)
else:
file_path = os.path.join(path, filename)
try:
with open(file_path, mode='wb') as file:
file.write(response.content)
return {'success': True, 'filename': filename, 'path': file_path}
except Exception as e:
return {'success': False, 'message': e}
def express_report(self, pdf: bool = True, path: str = None) -> dict:
"""Экспресс-отчет по контрагенту
:param pdf: Выгрузить PDF файл, по-умолчанию True
:type pdf: bool, optional
:param path: Путь выгрузки файла. Если не указан, выгружается в текущий каталог.
:type path: str, optional
:return: _description_
:rtype: _type_
"""
response = self.get('/briefReport', pdf=pdf)
current_datetime = datetime.now().strftime('%d-%m-%Y_%H-%M')
filename = f'Экспресс-отчет_{self.inn}_{current_datetime}.pdf'
if pdf:
if not path:
file_path = os.path.join(self._basedir, filename)
else:
file_path = os.path.join(path, filename)
try:
with open(file_path, mode='wb') as file:
file.write(response.content)
return {'success': True, 'filename': filename, 'path': file_path}
except Exception as e:
return {'success': False, 'message': e}
else:
return response
def finan(self, path: str = None):
"""В файле указана рейтинговая таблица и окончательное заключение о финансовых показателях компании.
:param path: Путь выгрузки файла. Если не указан, выгружается в текущий каталог, defaults to None
:type path: str, optional
"""
response = self.get('/finan')
current_datetime = datetime.now().strftime('%d-%m-%Y_%H-%M')
filename = f'Финансовый_анализ_{self.inn}_{current_datetime}.pdf'
if not path:
file_path = os.path.join(self._basedir, filename)
else:
file_path = os.path.join(path, filename)
try:
with open(file_path, mode='wb') as file:
file.write(response.content)
return {'success': True, 'filename': filename, 'path': file_path}
except Exception as e:
return {'success': False, 'message': e}
def founders_history(self):
"""История владения организацией
:return: Набор полей с информацией об изменениях
:rtype: str
"""
return self.get('/foundersHistory')
def foreign_representatives(self):
"""Иностранные представительства и филиалы
:return: Набор данных о представительствах
:rtype: str
"""
return self.get('/foreignRepresentatives')
def government_lists(self): # DEPRECATED
"""Вхождение организации в государственные реестры
:return: Список реестров
:rtype: _type_
"""
response = self.get('/analyticLists')
return response['listsEntries']
def is_foreign_agent(self): # DEPRECATED
"""Проверка наличия организации в Едином реестре иностранных агентов
:return: Результат проверки
:rtype: bool
"""
foreign_agents_list = next(lst for lst in self.government_lists() if lst['id'] == 'fcfc856d-89f8-408b-afef-56750cb90fed')
return foreign_agents_list['isInList']