Updated settings for VScode, updated focus_compliance, fixed req
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
from kontur_focus.req import Request
|
||||
from dotenv import load_dotenv
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class FocusCompliance(Request):
|
||||
@@ -17,8 +18,25 @@ class FocusCompliance(Request):
|
||||
)
|
||||
self._focus_base_url = f'/banks/{os.environ.get('FOCUS_COMPLIANCE_BANK_ID')}'
|
||||
|
||||
def _save_file(self, filename: str, content, file_type: str = 'pdf', path: str = None) -> dict:
|
||||
current_datetime = datetime.now().strftime('%d-%m-%Y_%H-%M')
|
||||
f_name = f'{filename}_{self.inn}_{current_datetime}.{file_type}'
|
||||
|
||||
if not path:
|
||||
file_path = os.path.join(self._basedir, f_name)
|
||||
else:
|
||||
file_path = os.path.join(path, f_name)
|
||||
|
||||
try:
|
||||
with open(file_path, mode='wb') as file:
|
||||
file.write(content)
|
||||
|
||||
return {'success': True, 'path': file_path}
|
||||
except Exception as e:
|
||||
return {'success': False, 'message': e}
|
||||
|
||||
# Компании
|
||||
def company_is_foreign_agent(self):
|
||||
def company_is_foreign_agent(self) -> dict:
|
||||
"""Вхождение организации и ее руководителей в список иностранных агентов
|
||||
|
||||
:return: Дата формирования реестра, а также признаки присутствия или отсутствия в списках иностранных агентов
|
||||
@@ -49,6 +67,59 @@ class FocusCompliance(Request):
|
||||
|
||||
return fal_data
|
||||
|
||||
def search_global_company_profiles_id(self) -> list:
|
||||
"""Поиск сводной информации по санкционным профилям ЮЛ
|
||||
|
||||
:return: Список идентификаторов профилей
|
||||
:rtype: list
|
||||
"""
|
||||
response = self.get(f'{self._focus_base_url}/companies/profiles/search', query=self.inn)
|
||||
profiles = response['legalEntityProfiles']
|
||||
|
||||
if not profiles:
|
||||
return profiles
|
||||
elif len(profiles) > 1:
|
||||
return [profile['id'] for profile in profiles]
|
||||
else:
|
||||
return [profiles[0]['id']]
|
||||
|
||||
def legal_entity_profile_report(self, profile_id_list: list, path: str = None) -> dict:
|
||||
"""Получение печатного отчета по профилю ЮЛ
|
||||
|
||||
:param profile_id_list: Список идентификаторов санкционных профилей компании
|
||||
:type profile_id_list: list
|
||||
:param path: Путь сохранения файла, по-умолчанию файл сохраняется в текущий каталог
|
||||
:type path: str, optional
|
||||
:return: Отчет о результате сохранения файла
|
||||
:rtype: dict
|
||||
"""
|
||||
if not profile_id_list:
|
||||
return {'success': False, 'message': 'No profiles is specified'}
|
||||
elif len(profile_id_list) > 1:
|
||||
files = []
|
||||
|
||||
for profile_id in profile_id_list:
|
||||
response = self.get(f'{self._focus_base_url}/companies/profiles/{profile_id}/report')
|
||||
result = self._save_file(
|
||||
filename=f'Отчет_по_профилю_{profile_id_list[0]}',
|
||||
content=response.content,
|
||||
file_type='docx',
|
||||
path=path
|
||||
)
|
||||
files.append(result)
|
||||
|
||||
return files
|
||||
else:
|
||||
response = self.get(f'{self._focus_base_url}/companies/profiles/{profile_id_list[0]}/report')
|
||||
result = self._save_file(
|
||||
filename=f'Отчет_по_профилю_{profile_id_list[0]}',
|
||||
content=response.content,
|
||||
file_type='docx',
|
||||
path=path
|
||||
)
|
||||
|
||||
return result
|
||||
|
||||
# Физлица
|
||||
def person_is_foreign_agent(self):
|
||||
"""Вхождение физлица в список иностранных агентов
|
||||
@@ -60,3 +131,8 @@ class FocusCompliance(Request):
|
||||
fa = response[0]['foreignAgents']
|
||||
|
||||
return True if fa else False
|
||||
|
||||
def get_foreign_agents_list(self): # Не работает, если нет подключенной лицензии
|
||||
response = self.get(path=f'{self._focus_base_url}/foreign-agents')
|
||||
|
||||
return response
|
||||
|
||||
Reference in New Issue
Block a user