from django.conf import settings as s from ninja import Router from ninja_extra.pagination import paginate from uuid import UUID from epdb.models import Reaction from ..pagination import EnhancedPageNumberPagination from ..schemas import ReactionOutSchema, ReviewStatusFilter from ..dal import get_user_entities_qs, get_package_scoped_entities_qs router = Router() @router.get("/reactions/", response=EnhancedPageNumberPagination.Output[ReactionOutSchema]) @paginate( EnhancedPageNumberPagination, page_size=s.API_PAGINATION_DEFAULT_PAGE_SIZE, filter_schema=ReviewStatusFilter, ) def list_all_reactions(request): """ List all reactions from reviewed packages. """ user = request.user return get_user_entities_qs(Reaction, user).order_by("name").all() @router.get( "/package/{uuid:package_uuid}/reaction/", response=EnhancedPageNumberPagination.Output[ReactionOutSchema], ) @paginate( EnhancedPageNumberPagination, page_size=s.API_PAGINATION_DEFAULT_PAGE_SIZE, filter_schema=ReviewStatusFilter, ) def list_package_reactions(request, package_uuid: UUID): """ List all reactions for a specific package. """ user = request.user return get_package_scoped_entities_qs(Reaction, package_uuid, user).order_by("name").all()