|
|
|
|
|
|
|
|
from tenacity import retry, retry_if_exception_type, stop_before_delay, wait_fixed |
|
|
from tenacity import retry, retry_if_exception_type, stop_before_delay, wait_fixed |
|
|
|
|
|
|
|
|
from extensions.ext_database import db |
|
|
from extensions.ext_database import db |
|
|
|
|
|
from libs.helper import RateLimiter |
|
|
from models.account import TenantAccountJoin, TenantAccountRole |
|
|
from models.account import TenantAccountJoin, TenantAccountRole |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
base_url = os.environ.get("BILLING_API_URL", "BILLING_API_URL") |
|
|
base_url = os.environ.get("BILLING_API_URL", "BILLING_API_URL") |
|
|
secret_key = os.environ.get("BILLING_API_SECRET_KEY", "BILLING_API_SECRET_KEY") |
|
|
secret_key = os.environ.get("BILLING_API_SECRET_KEY", "BILLING_API_SECRET_KEY") |
|
|
|
|
|
|
|
|
|
|
|
compliance_download_rate_limiter = RateLimiter("compliance_download_rate_limiter", 4, 60) |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
def get_info(cls, tenant_id: str): |
|
|
def get_info(cls, tenant_id: str): |
|
|
params = {"tenant_id": tenant_id} |
|
|
params = {"tenant_id": tenant_id} |
|
|
|
|
|
|
|
|
"""Update account deletion feedback.""" |
|
|
"""Update account deletion feedback.""" |
|
|
json = {"email": email, "feedback": feedback} |
|
|
json = {"email": email, "feedback": feedback} |
|
|
return cls._send_request("POST", "/account/delete-feedback", json=json) |
|
|
return cls._send_request("POST", "/account/delete-feedback", json=json) |
|
|
|
|
|
|
|
|
|
|
|
@classmethod |
|
|
|
|
|
def get_compliance_download_link( |
|
|
|
|
|
cls, |
|
|
|
|
|
doc_name: str, |
|
|
|
|
|
account_id: str, |
|
|
|
|
|
tenant_id: str, |
|
|
|
|
|
ip: str, |
|
|
|
|
|
device_info: str, |
|
|
|
|
|
): |
|
|
|
|
|
limiter_key = f"{account_id}:{tenant_id}" |
|
|
|
|
|
if cls.compliance_download_rate_limiter.is_rate_limited(limiter_key): |
|
|
|
|
|
from controllers.console.error import CompilanceRateLimitError |
|
|
|
|
|
|
|
|
|
|
|
raise CompilanceRateLimitError() |
|
|
|
|
|
|
|
|
|
|
|
json = { |
|
|
|
|
|
"doc_name": doc_name, |
|
|
|
|
|
"account_id": account_id, |
|
|
|
|
|
"tenant_id": tenant_id, |
|
|
|
|
|
"ip_address": ip, |
|
|
|
|
|
"device_info": device_info, |
|
|
|
|
|
} |
|
|
|
|
|
res = cls._send_request("POST", "/compliance/download", json=json) |
|
|
|
|
|
cls.compliance_download_rate_limiter.increment_rate_limit(limiter_key) |
|
|
|
|
|
return res |