update: overhauled firmware ui. Added public flash page.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
from fastapi import APIRouter, Depends, Query, UploadFile, File, Form
|
||||
from fastapi.responses import FileResponse
|
||||
from fastapi import APIRouter, Depends, Query, UploadFile, File, Form, HTTPException
|
||||
from fastapi.responses import FileResponse, PlainTextResponse
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
import logging
|
||||
@@ -22,7 +22,9 @@ async def upload_firmware(
|
||||
version: str = Form(...),
|
||||
update_type: UpdateType = Form(UpdateType.mandatory),
|
||||
min_fw_version: Optional[str] = Form(None),
|
||||
notes: Optional[str] = Form(None),
|
||||
changelog: Optional[str] = Form(None),
|
||||
release_note: Optional[str] = Form(None),
|
||||
bespoke_uid: Optional[str] = Form(None),
|
||||
file: UploadFile = File(...),
|
||||
_user: TokenPayload = Depends(require_permission("manufacturing", "add")),
|
||||
):
|
||||
@@ -34,7 +36,9 @@ async def upload_firmware(
|
||||
file_bytes=file_bytes,
|
||||
update_type=update_type,
|
||||
min_fw_version=min_fw_version,
|
||||
notes=notes,
|
||||
changelog=changelog,
|
||||
release_note=release_note,
|
||||
bespoke_uid=bespoke_uid,
|
||||
)
|
||||
|
||||
|
||||
@@ -61,6 +65,18 @@ def get_latest_firmware(
|
||||
return service.get_latest(hw_type, channel, hw_version=hw_version, current_version=current_version)
|
||||
|
||||
|
||||
@router.get("/{hw_type}/{channel}/latest/changelog", response_class=PlainTextResponse)
|
||||
def get_latest_changelog(hw_type: str, channel: str):
|
||||
"""Returns the full changelog for the latest firmware. Plain text."""
|
||||
return service.get_latest_changelog(hw_type, channel)
|
||||
|
||||
|
||||
@router.get("/{hw_type}/{channel}/{version}/info/changelog", response_class=PlainTextResponse)
|
||||
def get_version_changelog(hw_type: str, channel: str, version: str):
|
||||
"""Returns the full changelog for a specific firmware version. Plain text."""
|
||||
return service.get_version_changelog(hw_type, channel, version)
|
||||
|
||||
|
||||
@router.get("/{hw_type}/{channel}/{version}/info", response_model=FirmwareMetadataResponse)
|
||||
def get_firmware_info(hw_type: str, channel: str, version: str):
|
||||
"""Returns metadata for a specific firmware version.
|
||||
@@ -80,6 +96,33 @@ def download_firmware(hw_type: str, channel: str, version: str):
|
||||
)
|
||||
|
||||
|
||||
@router.put("/{firmware_id}", response_model=FirmwareVersion)
|
||||
async def edit_firmware(
|
||||
firmware_id: str,
|
||||
channel: Optional[str] = Form(None),
|
||||
version: Optional[str] = Form(None),
|
||||
update_type: Optional[UpdateType] = Form(None),
|
||||
min_fw_version: Optional[str] = Form(None),
|
||||
changelog: Optional[str] = Form(None),
|
||||
release_note: Optional[str] = Form(None),
|
||||
bespoke_uid: Optional[str] = Form(None),
|
||||
file: Optional[UploadFile] = File(None),
|
||||
_user: TokenPayload = Depends(require_permission("manufacturing", "add")),
|
||||
):
|
||||
file_bytes = await file.read() if file and file.filename else None
|
||||
return service.edit_firmware(
|
||||
doc_id=firmware_id,
|
||||
channel=channel,
|
||||
version=version,
|
||||
update_type=update_type,
|
||||
min_fw_version=min_fw_version,
|
||||
changelog=changelog,
|
||||
release_note=release_note,
|
||||
bespoke_uid=bespoke_uid,
|
||||
file_bytes=file_bytes,
|
||||
)
|
||||
|
||||
|
||||
@router.delete("/{firmware_id}", status_code=204)
|
||||
def delete_firmware(
|
||||
firmware_id: str,
|
||||
|
||||
Reference in New Issue
Block a user