Files
orion/app/modules/tenancy/schemas/__init__.py
Samir Boulahtit 0455e63a2e feat(tenancy): add merchant team CRUD with multi-store hub view
The merchant team page was read-only. Now merchant owners can invite,
edit roles, and remove team members across all their stores from a
single hub view.

Architecture: No new models — delegates to existing store_team_service.
Members are deduplicated across stores with per-store role badges.

New:
- 5 API endpoints: GET team (member-centric), GET store roles, POST
  invite (multi-store), PUT update role, DELETE remove member
- merchant-team.js Alpine component with invite/edit/remove modals
- Full CRUD template with stats cards, store filter, member table
- 7 Pydantic schemas for merchant team request/response
- 2 service methods: validate_store_ownership, get_merchant_team_members
- 25 new i18n keys across 4 tenancy locales + 1 core common key

Tests: 434 tenancy tests passing, arch-check green.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:57:45 +01:00

272 lines
6.6 KiB
Python

# app/modules/tenancy/schemas/__init__.py
"""
Tenancy module Pydantic schemas.
Request/response schemas for platform, merchant, store, admin user, and team management.
"""
# Auth schemas
# Admin schemas
from app.modules.tenancy.schemas.admin import (
AdminAuditLogFilters,
AdminAuditLogListResponse,
AdminAuditLogResponse,
AdminDashboardStats,
AdminNotificationCreate,
AdminNotificationListResponse,
AdminNotificationResponse,
AdminNotificationUpdate,
AdminSessionListResponse,
AdminSessionResponse,
AdminSettingCreate,
AdminSettingDefaultResponse,
AdminSettingListResponse,
AdminSettingResponse,
AdminSettingUpdate,
ApplicationLogFilters,
ApplicationLogListResponse,
ApplicationLogResponse,
BulkStoreAction,
BulkStoreActionResponse,
BulkUserAction,
BulkUserActionResponse,
ComponentHealthStatus,
FileLogResponse,
LogCleanupResponse,
LogDeleteResponse,
LogFileInfo,
LogFileListResponse,
LogSettingsResponse,
LogSettingsUpdate,
LogSettingsUpdateResponse,
LogStatistics,
PlatformAlertCreate,
PlatformAlertListResponse,
PlatformAlertResolve,
PlatformAlertResponse,
PublicDisplaySettingsResponse,
RowsPerPageResponse,
RowsPerPageUpdateResponse,
SystemHealthResponse,
)
from app.modules.tenancy.schemas.auth import (
LoginResponse,
LogoutResponse,
OwnedMerchantSummary,
PasswordResetRequestResponse,
PasswordResetResponse,
PlatformSelectResponse,
StoreMembershipSummary,
StoreUserResponse,
UserContext,
UserCreate,
UserDeleteResponse,
UserDetailResponse,
UserListResponse,
UserLogin,
UserResponse,
UserSearchItem,
UserSearchResponse,
UserStatusToggleResponse,
UserUpdate,
)
from app.modules.tenancy.schemas.merchant import (
MerchantBase,
MerchantCreate,
MerchantCreateResponse,
MerchantDetailResponse,
MerchantListResponse,
MerchantPortalProfileResponse,
MerchantPortalProfileUpdate,
MerchantPortalStoreListResponse,
MerchantResponse,
MerchantStoreCreate,
MerchantStoreDetailResponse,
MerchantStoreUpdate,
MerchantSummary,
MerchantTransferOwnership,
MerchantTransferOwnershipResponse,
MerchantUpdate,
)
# Store schemas
from app.modules.tenancy.schemas.store import (
StoreCreate,
StoreCreateResponse,
StoreDetailResponse,
StoreListResponse,
StoreResponse,
StoreSummary,
StoreUpdate,
)
# Store domain schemas
from app.modules.tenancy.schemas.store_domain import (
DomainDeletionResponse,
DomainVerificationInstructions,
DomainVerificationResponse,
StoreDomainCreate,
StoreDomainListResponse,
StoreDomainResponse,
StoreDomainUpdate,
)
# Team schemas
from app.modules.tenancy.schemas.team import (
BulkRemoveRequest,
BulkRemoveResponse,
InvitationAccept,
InvitationAcceptResponse,
InvitationResponse,
MerchantTeamInvite,
MerchantTeamInviteResponse,
MerchantTeamMemberResponse,
MerchantTeamMemberStoreInfo,
MerchantTeamOverviewResponse,
MerchantTeamStoreInfo,
PermissionCheckRequest,
PermissionCheckResponse,
RoleBase,
RoleCreate,
RoleListResponse,
RoleResponse,
RoleUpdate,
TeamErrorResponse,
TeamMemberBase,
TeamMemberInvite,
TeamMemberListResponse,
TeamMemberResponse,
TeamMemberUpdate,
TeamStatistics,
UserPermissionsResponse,
)
# User account (self-service) schemas
from app.modules.tenancy.schemas.user_account import (
UserAccountResponse,
UserAccountUpdate,
UserPasswordChange,
)
__all__ = [
# Auth
"LoginResponse",
"LogoutResponse",
"OwnedMerchantSummary",
"PasswordResetRequestResponse",
"PasswordResetResponse",
"PlatformSelectResponse",
"StoreMembershipSummary",
"StoreUserResponse",
"UserContext",
"UserCreate",
"UserDeleteResponse",
"UserDetailResponse",
"UserListResponse",
"UserLogin",
"UserResponse",
"UserSearchItem",
"UserSearchResponse",
"UserStatusToggleResponse",
"UserUpdate",
# Merchant
"MerchantBase",
"MerchantCreate",
"MerchantCreateResponse",
"MerchantDetailResponse",
"MerchantListResponse",
"MerchantPortalProfileResponse",
"MerchantPortalProfileUpdate",
"MerchantPortalStoreListResponse",
"MerchantResponse",
"MerchantStoreCreate",
"MerchantStoreDetailResponse",
"MerchantStoreUpdate",
"MerchantSummary",
"MerchantTransferOwnership",
"MerchantTransferOwnershipResponse",
"MerchantUpdate",
# Store
"StoreCreate",
"StoreCreateResponse",
"StoreDetailResponse",
"StoreListResponse",
"StoreResponse",
"StoreSummary",
"StoreUpdate",
# Admin
"AdminAuditLogFilters",
"AdminAuditLogListResponse",
"AdminAuditLogResponse",
"AdminDashboardStats",
"AdminNotificationCreate",
"AdminNotificationListResponse",
"AdminNotificationResponse",
"AdminNotificationUpdate",
"AdminSessionListResponse",
"AdminSessionResponse",
"AdminSettingCreate",
"AdminSettingDefaultResponse",
"AdminSettingListResponse",
"AdminSettingResponse",
"AdminSettingUpdate",
"ApplicationLogFilters",
"ApplicationLogListResponse",
"ApplicationLogResponse",
"BulkUserAction",
"BulkUserActionResponse",
"BulkStoreAction",
"BulkStoreActionResponse",
"ComponentHealthStatus",
"FileLogResponse",
"LogCleanupResponse",
"LogDeleteResponse",
"LogFileInfo",
"LogFileListResponse",
"LogSettingsResponse",
"LogSettingsUpdate",
"LogSettingsUpdateResponse",
"LogStatistics",
"PlatformAlertCreate",
"PlatformAlertListResponse",
"PlatformAlertResolve",
"PlatformAlertResponse",
"PublicDisplaySettingsResponse",
"RowsPerPageResponse",
"RowsPerPageUpdateResponse",
"SystemHealthResponse",
# Team
"BulkRemoveRequest",
"BulkRemoveResponse",
"InvitationAccept",
"InvitationAcceptResponse",
"InvitationResponse",
"PermissionCheckRequest",
"PermissionCheckResponse",
"RoleBase",
"RoleCreate",
"RoleListResponse",
"RoleResponse",
"RoleUpdate",
"TeamErrorResponse",
"TeamMemberBase",
"TeamMemberInvite",
"TeamMemberListResponse",
"TeamMemberResponse",
"TeamMemberUpdate",
"TeamStatistics",
"UserPermissionsResponse",
# User Account
"UserAccountResponse",
"UserAccountUpdate",
"UserPasswordChange",
# Store Domain
"DomainDeletionResponse",
"DomainVerificationInstructions",
"DomainVerificationResponse",
"StoreDomainCreate",
"StoreDomainListResponse",
"StoreDomainResponse",
"StoreDomainUpdate",
]