736e4c6cae
NEW VERSION
82 lines
2.7 KiB
Python
82 lines
2.7 KiB
Python
import logging
|
|
from typing import Optional
|
|
from sqlalchemy import select
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
from datetime import datetime
|
|
|
|
from app.database.models import ServiceRule
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
async def get_rules_by_language(db: AsyncSession, language: str = "ru") -> Optional[ServiceRule]:
|
|
result = await db.execute(
|
|
select(ServiceRule)
|
|
.where(
|
|
ServiceRule.language == language,
|
|
ServiceRule.is_active == True
|
|
)
|
|
.order_by(ServiceRule.order, ServiceRule.created_at.desc())
|
|
.limit(1)
|
|
)
|
|
return result.scalar_one_or_none()
|
|
|
|
|
|
async def create_or_update_rules(
|
|
db: AsyncSession,
|
|
content: str,
|
|
language: str = "ru",
|
|
title: str = "Правила сервиса"
|
|
) -> ServiceRule:
|
|
|
|
existing_rules_result = await db.execute(
|
|
select(ServiceRule).where(
|
|
ServiceRule.language == language,
|
|
ServiceRule.is_active == True
|
|
)
|
|
)
|
|
existing_rules = existing_rules_result.scalars().all()
|
|
|
|
for rule in existing_rules:
|
|
rule.is_active = False
|
|
rule.updated_at = datetime.utcnow()
|
|
|
|
new_rules = ServiceRule(
|
|
title=title,
|
|
content=content,
|
|
language=language,
|
|
is_active=True,
|
|
order=0
|
|
)
|
|
|
|
db.add(new_rules)
|
|
await db.commit()
|
|
await db.refresh(new_rules)
|
|
|
|
logger.info(f"✅ Правила для языка {language} обновлены")
|
|
return new_rules
|
|
|
|
|
|
async def get_current_rules_content(db: AsyncSession, language: str = "ru") -> str:
|
|
rules = await get_rules_by_language(db, language)
|
|
|
|
if rules:
|
|
return rules.content
|
|
else:
|
|
return """
|
|
🔒 <b>Правила использования сервиса</b>
|
|
|
|
1. Сервис предоставляется "как есть" без каких-либо гарантий.
|
|
|
|
2. Запрещается использование сервиса для незаконных действий.
|
|
|
|
3. Администрация оставляет за собой право заблокировать доступ пользователя при нарушении правил.
|
|
|
|
4. Возврат средств осуществляется в соответствии с политикой возврата.
|
|
|
|
5. Пользователь несет полную ответственность за безопасность своего аккаунта.
|
|
|
|
6. При возникновении вопросов обращайтесь в техническую поддержку.
|
|
|
|
Используя сервис, вы соглашаетесь с данными правилами.
|
|
""" |