File size: 2,431 Bytes
9e798a1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
from fastapi import APIRouter, HTTPException, status
from .Schema import (
CreatePortalRequest,
UpdatePortalRequest,
PortalResponse,
BaseResponse,
)
from .Model import Portal
portal_router = APIRouter(tags=["Portals"])
# Constants for portal names
ANDROID = "Android"
MIKROTIK = "MikroTik"
# Get Portal by Name (Android or MikroTik)
@portal_router.get(
"/portals/{portal_name}",
response_model=PortalResponse,
status_code=status.HTTP_200_OK,
)
async def get_portal_by_name(portal_name: str):
portal = await Portal.get_or_none(name=portal_name)
if not portal:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=f"Portal '{portal_name}' not found.",
)
return PortalResponse.from_orm(portal)
# Assign or Update Android Portal
@portal_router.put(
"/portals/android", response_model=BaseResponse, status_code=status.HTTP_200_OK
)
async def update_android_portal(request: UpdatePortalRequest):
try:
portal, created = await Portal.get_or_create(name=ANDROID)
except:
portal, created = await Portal.get_or_create(
name=ANDROID, description="Android-Link", url="https://example.com"
)
portal_data = request.dict(exclude_unset=True)
for key, value in portal_data.items():
setattr(portal, key, value)
await portal.save()
message = (
"Android portal created successfully"
if created
else "Android portal updated successfully"
)
return BaseResponse(code=200, message=message, payload={"portal_name": ANDROID})
# Assign or Update MikroTik Portal
@portal_router.put(
"/portals/mikrotik", response_model=BaseResponse, status_code=status.HTTP_200_OK
)
async def update_mikrotik_portal(request: UpdatePortalRequest):
try:
portal, created = await Portal.get_or_create(name=MIKROTIK)
except:
portal, created = await Portal.get_or_create(
name=MIKROTIK, description="Android-Link", url="https://example.com"
)
portal_data = request.dict(exclude_unset=True)
for key, value in portal_data.items():
setattr(portal, key, value)
await portal.save()
message = (
"MikroTik portal created successfully"
if created
else "MikroTik portal updated successfully"
)
return BaseResponse(code=200, message=message, payload={"portal_name": MIKROTIK})
|