креативы
This commit is contained in:
@@ -6,11 +6,35 @@ if typing.TYPE_CHECKING:
|
||||
from .. import Usecase
|
||||
|
||||
|
||||
async def get_jwt_by_telegram_id(self: 'Usecase', telegram_id: int) -> dto.ValidateLoginTokenOutput:
|
||||
async def get_jwt_by_telegram_id(
|
||||
self: 'Usecase',
|
||||
telegram_id: int,
|
||||
username: str | None = None,
|
||||
first_name: str | None = None,
|
||||
last_name: str | None = None,
|
||||
) -> dto.ValidateLoginTokenOutput:
|
||||
user = await self.database.get_user(telegram_id=telegram_id)
|
||||
|
||||
if not user:
|
||||
raise domain.UserNotFound()
|
||||
user = domain.User(
|
||||
telegram_id=telegram_id,
|
||||
username=username,
|
||||
first_name=first_name,
|
||||
last_name=last_name,
|
||||
)
|
||||
await self.database.create_user(user)
|
||||
else:
|
||||
updated = False
|
||||
if username is not None and user.username != username:
|
||||
user.username = username
|
||||
updated = True
|
||||
if first_name is not None and user.first_name != first_name:
|
||||
user.first_name = first_name
|
||||
updated = True
|
||||
if last_name is not None and user.last_name != last_name:
|
||||
user.last_name = last_name
|
||||
updated = True
|
||||
if updated:
|
||||
await self.database.update_user(user)
|
||||
|
||||
access_token = self.jwt_encoder.encode_access_token(
|
||||
user_id=user.id,
|
||||
|
||||
@@ -22,11 +22,17 @@ async def create_creative(
|
||||
log.warning('User %s attempted to create creative for unavailable project %s', user_id, project_id)
|
||||
raise domain.ProjectNotFound(project_id)
|
||||
|
||||
domain.validate_media_size(input.media_data)
|
||||
|
||||
creative_text = domain.replace_invite_link_with_tag(input.text)
|
||||
|
||||
creative = domain.Creative(
|
||||
name=input.name,
|
||||
text=creative_text,
|
||||
media_type=input.media_type,
|
||||
media_file_id=input.media_file_id,
|
||||
media_data=input.media_data,
|
||||
buttons=[button.model_dump() for button in input.buttons],
|
||||
status=domain.CreativeStatus.ACTIVE,
|
||||
project_id=project.id,
|
||||
workspace_id=workspace_id,
|
||||
@@ -37,6 +43,9 @@ async def create_creative(
|
||||
id=creative.id,
|
||||
name=creative.name,
|
||||
text=creative.text,
|
||||
media_type=creative.media_type,
|
||||
media_file_id=creative.media_file_id,
|
||||
buttons=creative.buttons,
|
||||
project_id=project.id,
|
||||
project_channel_title=project.channel.title,
|
||||
created_at=creative.created_at,
|
||||
|
||||
@@ -26,6 +26,9 @@ async def get_creative(self: 'Usecase', input: dto.GetCreativeInput) -> dto.Crea
|
||||
id=creative.id,
|
||||
name=creative.name,
|
||||
text=creative.text,
|
||||
media_type=creative.media_type,
|
||||
media_file_id=creative.media_file_id,
|
||||
buttons=creative.buttons,
|
||||
project_id=creative.project_id,
|
||||
project_channel_title=creative.project.channel.title,
|
||||
created_at=creative.created_at,
|
||||
|
||||
@@ -32,6 +32,9 @@ async def get_creatives(self: 'Usecase', input: dto.GetCreativesInput) -> list[d
|
||||
id=creative.id,
|
||||
name=creative.name,
|
||||
text=creative.text,
|
||||
media_type=creative.media_type,
|
||||
media_file_id=creative.media_file_id,
|
||||
buttons=creative.buttons,
|
||||
project_id=creative.project_id,
|
||||
project_channel_title=creative.project.channel.title,
|
||||
created_at=creative.created_at,
|
||||
|
||||
@@ -30,6 +30,15 @@ async def update_creative(
|
||||
creative.name = input.name
|
||||
if input.text:
|
||||
creative.text = domain.replace_invite_link_with_tag(input.text)
|
||||
if input.media_data is not None:
|
||||
domain.validate_media_size(input.media_data)
|
||||
creative.media_data = input.media_data
|
||||
if input.media_type is not None:
|
||||
creative.media_type = input.media_type
|
||||
if input.media_file_id is not None:
|
||||
creative.media_file_id = input.media_file_id
|
||||
if input.buttons is not None:
|
||||
creative.buttons = [button.model_dump() for button in input.buttons]
|
||||
if input.status:
|
||||
creative.status = input.status
|
||||
|
||||
@@ -41,6 +50,9 @@ async def update_creative(
|
||||
id=creative.id,
|
||||
name=creative.name,
|
||||
text=creative.text,
|
||||
media_type=creative.media_type,
|
||||
media_file_id=creative.media_file_id,
|
||||
buttons=creative.buttons,
|
||||
project_id=creative.project_id,
|
||||
project_channel_title=creative.project.channel.title,
|
||||
created_at=creative.created_at,
|
||||
|
||||
Reference in New Issue
Block a user