from typing import Annotated from annotated_types import MinLen from ninja_extra import ControllerBase, api_controller, paginate, route from ninja_extra.pagination import PageNumberPaginationExtra from ninja_extra.schemas import PaginatedResponseSchema from accounting.models import ClubAccount, Company from accounting.schemas import ClubAccountSchema, CompanySchema from core.api_permissions import CanAccessLookup @api_controller("/lookup", permissions=[CanAccessLookup]) class AccountingController(ControllerBase): @route.get("/club-account", response=PaginatedResponseSchema[ClubAccountSchema]) @paginate(PageNumberPaginationExtra, page_size=50) def search_club_account(self, search: Annotated[str, MinLen(1)]): return ClubAccount.objects.filter(name__icontains=search).values() @route.get("/company", response=PaginatedResponseSchema[CompanySchema]) @paginate(PageNumberPaginationExtra, page_size=50) def search_company(self, search: Annotated[str, MinLen(1)]): return Company.objects.filter(name__icontains=search).values()