hotspot / App /Portals /PortalRoutes.py
Mbonea's picture
testing deployment
9e798a1
raw
history blame
2.43 kB
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})