diff --git a/core/apps/companies/urls.py b/core/apps/companies/urls.py index 29570a7..276a2b2 100644 --- a/core/apps/companies/urls.py +++ b/core/apps/companies/urls.py @@ -7,9 +7,7 @@ router = DefaultRouter() router.register(r"company-accounts", views.CompanyAccountCrudViewSet, "company-account-view-set") # type: ignore router.register(r"company-folders", views.CompanyFolderCrudViewSet, "company-folders-view-set") # type: ignore -# router.register(r"company-folders", views.ContractFolderApiView, "folders-contracts-view-set") # type: ignore router.register(r"companies", views.CompanyCrudViewSet, "companies-view-set") # type: ignore -# router.register(r"companies", views.CompanyAccountView, "companies-accounts-view") # type: ignore urlpatterns: list[object] = [ @@ -22,6 +20,11 @@ urlpatterns: list[object] = [ path( r"companies//contracts", views.CompanyContractApiView.as_view(), - name="company-contracts" + name="company-contracts-api-view" + ), + path( + r"companies//accounts", + views.CompanyAccountApiView.as_view(), + name="company-accounts-api-view" ) ] diff --git a/core/apps/companies/views/companies.py b/core/apps/companies/views/companies.py index 4734450..98f6f73 100644 --- a/core/apps/companies/views/companies.py +++ b/core/apps/companies/views/companies.py @@ -1,4 +1,3 @@ -from typing import Any from django_core.mixins import BaseViewSetMixin # type: ignore from django.contrib.auth import get_user_model @@ -70,8 +69,9 @@ class CompanyCrudViewSet(BaseViewSetMixin, ModelViewSet): ###################################################################### -# company//contract Views +# company//contract ###################################################################### +@extend_schema(tags=["Company Contracts"]) class CompanyContractApiView(BaseApiViewMixin, GenericAPIView): # type: ignore queryset = CompanyModel.objects.all() permission_classes = [IsCompanyAccount] @@ -110,33 +110,26 @@ class CompanyContractApiView(BaseApiViewMixin, GenericAPIView): # type: ignore ###################################################################### -# company//accounts Views +# company//accounts ###################################################################### -class CompanyAccountView(GenericAPIView): +@extend_schema(tags=["Company Accounts"]) +class CompanyAccountApiView(BaseApiViewMixin, GenericAPIView): # type: ignore queryset = CompanyModel.objects.all() - serializer_class = None + serializer_class = RetrieveCompanyAccountSerializer permission_classes = [IsCompanyAccount] - action_serializer_class = { - "list_account": RetrieveCompanyAccountSerializer + method_serializer_class = { + "get": RetrieveCompanyAccountSerializer + } + method_permission_classes = { + "get": [IsCompanyAccount] } - - def get_serializer_class(self): - if self.request.method == "GET": - return RetrieveCompanyAccountSerializer - return RetrieveCompanyFolderSerializer @extend_schema( summary="List company accounts", description="List Company Accounts" ) - @action(url_path="accounts", detail=True, methods=["GET"]) - def list_account( - self, - request: HttpRequest, - *args: object, - **kwargs: object, - ) -> Response: + def get(self, *args: object, **kwargs: object) -> Response: company = self.get_object() accounts = CompanyAccountModel.objects.filter(company=company) ser = self.get_serializer(instance=accounts, many=True) # type: ignore @@ -144,25 +137,36 @@ class CompanyAccountView(GenericAPIView): ###################################################################### -# company//folders Views +# company//folders ###################################################################### -class CompanyFolderApiView(GenericAPIView): +@extend_schema(tags=["Company Folders"]) +class CompanyFolderApiView(BaseApiViewMixin, GenericAPIView): # type: ignore queryset = CompanyModel.objects.all() permission_classes = [IsCompanyAccount] - def get_serializer_class(self): # type: ignore - if self.request.method == "POST": - return CreateFolderForCompanySerializer - return RetrieveCompanyFolderSerializer + method_serializer_class = { + "get": RetrieveCompanyFolderSerializer, + "post": CreateFolderForCompanySerializer, + } + method_permission_classes = { + "get": [IsCompanyAccount], + "get": [IsCompanyAccount], + } - @extend_schema(summary="List Company Folders") - def get(self, request: HttpRequest, *args: object, **kwargs: object) -> Response: + @extend_schema( + summary="List Company Folders", + description="List Company Folders", + ) + def get(self, *args: object, **kwargs: object) -> Response: company = self.get_object() folders = CompanyFolderModel.objects.filter(company=company) serializer = self.get_serializer(instance=folders, many=True) return Response(serializer.data, status=status.HTTP_200_OK) - @extend_schema(summary="Create Folder for Company") + @extend_schema( + summary="Create Folder for Company", + description="Create Folder for Company", + ) def post(self, request: HttpRequest, *args: object, **kwargs: object): company = self.get_object() serializer = self.get_serializer(data=request.data, context={"company_id": company.pk})