forked from sr2/cloud-api
feat: schema mixins moved to project level
Resolves circular dependency issues.
This commit is contained in:
parent
e9fe405e06
commit
4ff9edf6d1
6 changed files with 38 additions and 43 deletions
|
|
@ -3,7 +3,6 @@ Pydantic models for the IAM module
|
||||||
|
|
||||||
Models follow the nomenclature of:
|
Models follow the nomenclature of:
|
||||||
- Sub-models: "<Resource><Opt:>Schema"
|
- Sub-models: "<Resource><Opt:>Schema"
|
||||||
- Mixins: "<Attribute>Mixin"
|
|
||||||
- Models: "<Module><Method><Resource><Opt:Resource><Direction>" ie "IAMGetGroupPermissionsResponse"
|
- Models: "<Module><Method><Resource><Opt:Resource><Direction>" ie "IAMGetGroupPermissionsResponse"
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
@ -11,10 +10,14 @@ from typing import Optional, Annotated
|
||||||
|
|
||||||
from pydantic import EmailStr, ConfigDict, Field
|
from pydantic import EmailStr, ConfigDict, Field
|
||||||
|
|
||||||
from src.service.schemas import ServiceIDMixin
|
from src.schemas import (
|
||||||
from src.organisation.schemas import OrgIDMixin
|
CustomBaseModel,
|
||||||
from src.schemas import CustomBaseModel
|
ServiceIDMixin,
|
||||||
from src.user.schemas import UserIDMixin
|
OrgIDMixin,
|
||||||
|
UserIDMixin,
|
||||||
|
PermIDMixin,
|
||||||
|
GroupIDMixin,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class UserSchema(CustomBaseModel):
|
class UserSchema(CustomBaseModel):
|
||||||
|
|
@ -39,14 +42,6 @@ class GroupSchema(CustomBaseModel):
|
||||||
name: str
|
name: str
|
||||||
|
|
||||||
|
|
||||||
class GroupIDMixin(CustomBaseModel):
|
|
||||||
group_id: int = Field(gt=0)
|
|
||||||
|
|
||||||
|
|
||||||
class PermIDMixin(CustomBaseModel):
|
|
||||||
permission_id: int = Field(gt=0)
|
|
||||||
|
|
||||||
|
|
||||||
class IAMGetGroupPermissionsResponse(CustomBaseModel):
|
class IAMGetGroupPermissionsResponse(CustomBaseModel):
|
||||||
permissions: list[PermissionSchema]
|
permissions: list[PermissionSchema]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,25 +3,19 @@ Pydantic models for organisation module
|
||||||
|
|
||||||
Models follow the nomenclature of:
|
Models follow the nomenclature of:
|
||||||
- Sub-models: "<Resource><Opt:>Schema"
|
- Sub-models: "<Resource><Opt:>Schema"
|
||||||
- Mixins: "<Attribute>Mixin"
|
|
||||||
- Models: "<Module><Method><Resource><Opt:Resource><Direction>" ie "OrgPostOrgRequest"
|
- Models: "<Module><Method><Resource><Opt:Resource><Direction>" ie "OrgPostOrgRequest"
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from pydantic import EmailStr, ConfigDict, Field
|
from pydantic import EmailStr, ConfigDict
|
||||||
|
|
||||||
from src.schemas import CustomBaseModel
|
from src.schemas import CustomBaseModel, OrgIDMixin, UserIDMixin
|
||||||
from src.contact.schemas import ContactModel
|
from src.contact.schemas import ContactModel
|
||||||
from src.user.schemas import UserIDMixin
|
|
||||||
|
|
||||||
from src.organisation.constants import Status, ContactType
|
from src.organisation.constants import Status, ContactType
|
||||||
|
|
||||||
|
|
||||||
class OrgIDMixin(CustomBaseModel):
|
|
||||||
organisation_id: int = Field(gt=0)
|
|
||||||
|
|
||||||
|
|
||||||
class Questionnaire(CustomBaseModel):
|
class Questionnaire(CustomBaseModel):
|
||||||
question_one: Optional[str] = None
|
question_one: Optional[str] = None
|
||||||
question_two: Optional[str] = None
|
question_two: Optional[str] = None
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ Exports:
|
||||||
- ResourceName
|
- ResourceName
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, Field
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -19,3 +19,24 @@ class ResourceName(CustomBaseModel):
|
||||||
organisation: str
|
organisation: str
|
||||||
resource: str
|
resource: str
|
||||||
instance: Optional[str] = None
|
instance: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
|
### Mixins ###
|
||||||
|
class OrgIDMixin(CustomBaseModel):
|
||||||
|
organisation_id: int = Field(gt=0)
|
||||||
|
|
||||||
|
|
||||||
|
class GroupIDMixin(CustomBaseModel):
|
||||||
|
group_id: int = Field(gt=0)
|
||||||
|
|
||||||
|
|
||||||
|
class PermIDMixin(CustomBaseModel):
|
||||||
|
permission_id: int = Field(gt=0)
|
||||||
|
|
||||||
|
|
||||||
|
class ServiceIDMixin(CustomBaseModel):
|
||||||
|
service_id: int = Field(gt=0)
|
||||||
|
|
||||||
|
|
||||||
|
class UserIDMixin(CustomBaseModel):
|
||||||
|
user_id: int = Field(gt=0)
|
||||||
|
|
|
||||||
|
|
@ -3,17 +3,12 @@ Pydantic models for service module
|
||||||
|
|
||||||
Models follow the nomenclature of:
|
Models follow the nomenclature of:
|
||||||
- Sub-models: "<Resource><Opt:>Schema"
|
- Sub-models: "<Resource><Opt:>Schema"
|
||||||
- Mixins: "<Attribute>Mixin"
|
|
||||||
- Models: "<Module><Method><Resource><Opt:Resource><Direction>" ie "ServiceGetServiceResponse"
|
- Models: "<Module><Method><Resource><Opt:Resource><Direction>" ie "ServiceGetServiceResponse"
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from pydantic import ConfigDict, Field
|
from pydantic import ConfigDict
|
||||||
|
|
||||||
from src.schemas import CustomBaseModel
|
from src.schemas import CustomBaseModel, ServiceIDMixin
|
||||||
|
|
||||||
|
|
||||||
class ServiceIDMixin(CustomBaseModel):
|
|
||||||
service_id: int = Field(gt=0)
|
|
||||||
|
|
||||||
|
|
||||||
class ServiceSchema(CustomBaseModel):
|
class ServiceSchema(CustomBaseModel):
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ from src.user.models import User
|
||||||
|
|
||||||
from src.auth.service import claims_dependency
|
from src.auth.service import claims_dependency
|
||||||
from src.database import db_dependency
|
from src.database import db_dependency
|
||||||
from src.user.schemas import UserIDMixin
|
from src.schemas import UserIDMixin
|
||||||
|
|
||||||
|
|
||||||
async def get_user_model_claims(claims: claims_dependency, db: db_dependency):
|
async def get_user_model_claims(claims: claims_dependency, db: db_dependency):
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,9 @@ Pydantic models for the user module
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from pydantic import Field, EmailStr
|
from pydantic import EmailStr
|
||||||
|
|
||||||
from src.schemas import CustomBaseModel
|
from src.schemas import CustomBaseModel, OrgIDMixin
|
||||||
|
|
||||||
|
|
||||||
class UserIDMixin(CustomBaseModel):
|
|
||||||
user_id: int = Field(gt=0)
|
|
||||||
|
|
||||||
|
|
||||||
class OIDCClaims(CustomBaseModel):
|
class OIDCClaims(CustomBaseModel):
|
||||||
|
|
@ -52,13 +48,7 @@ class UserResponse(CustomBaseModel):
|
||||||
groups: Optional[dict[str, list[dict[str, str | int]]]] = None
|
groups: Optional[dict[str, list[dict[str, str | int]]]] = None
|
||||||
|
|
||||||
|
|
||||||
class OrgResponse(CustomBaseModel):
|
class UserPostInvitationRequest(OrgIDMixin):
|
||||||
org_id: int
|
|
||||||
name: str
|
|
||||||
|
|
||||||
|
|
||||||
class UserPostInvitationRequest(CustomBaseModel):
|
|
||||||
organisation_id: int
|
|
||||||
user_email: EmailStr
|
user_email: EmailStr
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue