Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

M2-4632: Change source for secret_user_id and nikname to subject #1063

Merged
merged 2 commits into from
Feb 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 22 additions & 4 deletions src/apps/invitations/crud.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import uuid
from typing import Any

from sqlalchemy import delete, select, text, update
from sqlalchemy import and_, delete, func, select, text, update
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.engine import Result
from sqlalchemy.orm import Query
from sqlalchemy.sql.functions import count
Expand All @@ -23,6 +24,7 @@
from apps.shared.paging import paging
from apps.shared.query_params import QueryParams
from apps.shared.searching import Searching
from apps.subjects.db.schemas import SubjectSchema
from apps.workspaces.db.schemas import UserAppletAccessSchema
from infrastructure.database import BaseCRUD

Expand Down Expand Up @@ -83,12 +85,27 @@ async def get_pending_by_invitor_id(
)

query: Query = select(
InvitationSchema, AppletSchema.display_name.label("applet_name")
InvitationSchema,
AppletSchema.display_name.label("applet_name"),
SubjectSchema.secret_user_id.label("user_secret_id"),
SubjectSchema.nickname.label("nickname")
)
query = query.where(InvitationSchema.applet_id.in_(user_applet_ids))
query = query.join(
AppletSchema, AppletSchema.id == InvitationSchema.applet_id
)

query = query.outerjoin(
SubjectSchema,
and_(
InvitationSchema.meta.has_key('subject_id'),
SubjectSchema.id == func.cast(
InvitationSchema.meta['subject_id'].astext,
UUID(as_uuid=True)
)
),
)

query = query.where(
InvitationSchema.status == InvitationStatus.PENDING
)
Expand All @@ -108,7 +125,7 @@ async def get_pending_by_invitor_id(

db_result = await self._execute(query)
results = []
for invitation, applet_name in db_result.all():
for invitation, applet_name, secret_id, nickname in db_result.all():
results.append(
InvitationDetail(
id=invitation.id,
Expand All @@ -123,7 +140,8 @@ async def get_pending_by_invitor_id(
first_name=invitation.first_name,
last_name=invitation.last_name,
created_at=invitation.created_at,
nickname=invitation.nickname,
nickname=nickname,
secret_user_id=secret_id
)
)
return results
Expand Down
2 changes: 2 additions & 0 deletions src/apps/invitations/domain.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ class InvitationDetail(InvitationDetailBase):

meta: dict
nickname: str | None
secret_user_id: str | None


class InvitationDetailRespondent(InvitationDetailBase):
Expand Down Expand Up @@ -271,6 +272,7 @@ class InvitationResponse(PublicModel):
created_at: datetime
meta: dict
nickname: str | None
secret_user_id: str | None


class _InvitationResponse(PublicModel):
Expand Down
Loading