fix: Bugs created after the overhaul, performance and layout fixes
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import asyncio
|
||||
import logging
|
||||
from fastapi import APIRouter, Depends, Query, BackgroundTasks
|
||||
from fastapi import APIRouter, Depends, Query, BackgroundTasks, Body
|
||||
from typing import Optional
|
||||
|
||||
from auth.models import TokenPayload
|
||||
@@ -14,15 +14,25 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@router.get("", response_model=CustomerListResponse)
|
||||
def list_customers(
|
||||
async def list_customers(
|
||||
search: Optional[str] = Query(None),
|
||||
tag: Optional[str] = Query(None),
|
||||
sort: Optional[str] = Query(None),
|
||||
_user: TokenPayload = Depends(require_permission("crm", "view")),
|
||||
):
|
||||
customers = service.list_customers(search=search, tag=tag)
|
||||
customers = service.list_customers(search=search, tag=tag, sort=sort)
|
||||
if sort == "latest_comm":
|
||||
customers = await service.list_customers_sorted_by_latest_comm(customers)
|
||||
return CustomerListResponse(customers=customers, total=len(customers))
|
||||
|
||||
|
||||
@router.get("/tags", response_model=list[str])
|
||||
def list_tags(
|
||||
_user: TokenPayload = Depends(require_permission("crm", "view")),
|
||||
):
|
||||
return service.list_all_tags()
|
||||
|
||||
|
||||
@router.get("/{customer_id}", response_model=CustomerInDB)
|
||||
def get_customer(
|
||||
customer_id: str,
|
||||
@@ -64,8 +74,57 @@ def update_customer(
|
||||
|
||||
|
||||
@router.delete("/{customer_id}", status_code=204)
|
||||
def delete_customer(
|
||||
async def delete_customer(
|
||||
customer_id: str,
|
||||
wipe_comms: bool = Query(False),
|
||||
wipe_files: bool = Query(False),
|
||||
wipe_nextcloud: bool = Query(False),
|
||||
_user: TokenPayload = Depends(require_permission("crm", "edit")),
|
||||
):
|
||||
customer = service.delete_customer(customer_id)
|
||||
nc_path = service.get_customer_nc_path(customer)
|
||||
|
||||
if wipe_comms or wipe_nextcloud:
|
||||
await service.delete_customer_comms(customer_id)
|
||||
|
||||
if wipe_files or wipe_nextcloud:
|
||||
await service.delete_customer_media_entries(customer_id)
|
||||
|
||||
if settings.nextcloud_url:
|
||||
folder = f"customers/{nc_path}"
|
||||
if wipe_nextcloud:
|
||||
try:
|
||||
await nextcloud.delete_file(folder)
|
||||
except Exception as e:
|
||||
logger.warning("Could not delete NC folder for customer %s: %s", customer_id, e)
|
||||
elif wipe_files:
|
||||
stale_folder = f"customers/STALE_{nc_path}"
|
||||
try:
|
||||
await nextcloud.rename_folder(folder, stale_folder)
|
||||
except Exception as e:
|
||||
logger.warning("Could not rename NC folder for customer %s: %s", customer_id, e)
|
||||
|
||||
|
||||
@router.post("/{customer_id}/toggle-negotiating", response_model=CustomerInDB)
|
||||
async def toggle_negotiating(
|
||||
customer_id: str,
|
||||
_user: TokenPayload = Depends(require_permission("crm", "edit")),
|
||||
):
|
||||
service.delete_customer(customer_id)
|
||||
return await service.toggle_negotiating(customer_id)
|
||||
|
||||
|
||||
@router.post("/{customer_id}/toggle-problem", response_model=CustomerInDB)
|
||||
async def toggle_problem(
|
||||
customer_id: str,
|
||||
_user: TokenPayload = Depends(require_permission("crm", "edit")),
|
||||
):
|
||||
return await service.toggle_problem(customer_id)
|
||||
|
||||
|
||||
@router.get("/{customer_id}/last-comm-direction")
|
||||
async def get_last_comm_direction(
|
||||
customer_id: str,
|
||||
_user: TokenPayload = Depends(require_permission("crm", "view")),
|
||||
):
|
||||
direction = await service.get_last_comm_direction(customer_id)
|
||||
return {"direction": direction}
|
||||
|
||||
Reference in New Issue
Block a user