From 024f40e3146f980dc1405e84d4aeec995b8b6805 Mon Sep 17 00:00:00 2001
From: Joshua Casey <joshua.caseyd@gmail.com>
Date: Wed, 19 Apr 2017 01:34:38 +0700
Subject: [PATCH] #23 added company applications and vacancies list api

---
 core/views/vacancies.py | 29 ++++++++++++++++++++++++++++-
 kape/urls.py            |  9 +++++----
 2 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/core/views/vacancies.py b/core/views/vacancies.py
index 02f6ff68..0a50e8b8 100644
--- a/core/views/vacancies.py
+++ b/core/views/vacancies.py
@@ -5,7 +5,7 @@ from rest_framework.permissions import IsAuthenticated
 from rest_framework.response import Response
 
 from core.lib.permissions import IsAdminOrStudent, IsAdminOrCompany
-from core.models import Student
+from core.models import Student, Company
 from core.models.vacancies import Vacancy, Application
 from core.serializers.vacancies import VacancySerializer, ApplicationSerializer
 
@@ -66,6 +66,33 @@ class ApplicationViewSet(viewsets.GenericViewSet):
         return Response(ApplicationSerializer(application, context={'request': request}).data)
 
 
+class CompanyApplicationViewSet(viewsets.GenericViewSet):
+    queryset = Application.objects.all()
+
+    def list(self, request, company_id):
+        """
+        Get list of company {company_id}'s applications
+        ---
+        """
+        company = get_object_or_404(Company.objects.all(), pk=company_id)
+        vacancies = Vacancy.objects.filter(company = company)
+        applications = Application.objects.filter(vacancy__in = vacancies)
+        return Response(ApplicationSerializer(applications, many=True, context={'request': request}).data)
+
+
+class CompanyVacanciesViewSet(viewsets.GenericViewSet):
+    queryset = Vacancy. objects.all()
+
+    def list(self, request, company_id):
+        """
+        Get list of company {company_id}'s vacancies
+        ---
+        """
+        company = get_object_or_404(Company.objects.all(), pk=company_id)
+        vacancies = Vacancy.objects.filter(company = company)
+        return Response(VacancySerializer(vacancies, many=True, context={'request': request}).data)
+
+
 class BookmarkedVacancyByStudentViewSet(viewsets.GenericViewSet):
     serializer_class = VacancySerializer
     permission_classes = [IsAdminOrStudent]
diff --git a/kape/urls.py b/kape/urls.py
index a6e641fd..2606f3de 100755
--- a/kape/urls.py
+++ b/kape/urls.py
@@ -23,7 +23,7 @@ from rest_framework_swagger.views import get_swagger_view
 
 from core import apps
 from core.views.accounts import StudentViewSet, CompanyViewSet, SupervisorViewSet, UserViewSet, LoginViewSet, CompanyRegisterViewSet
-from core.views.vacancies import VacancyViewSet, BookmarkedVacancyByStudentViewSet, ApplicationViewSet
+from core.views.vacancies import VacancyViewSet, BookmarkedVacancyByStudentViewSet, ApplicationViewSet, CompanyApplicationViewSet, CompanyVacanciesViewSet
 
 schema_view = get_swagger_view()
 router = routers.DefaultRouter()
@@ -38,7 +38,10 @@ router.register(r'students/(?P<student_id>\d+)/bookmarked-vacancies', Bookmarked
                 base_name='bookmarked-vacancy-list')
 router.register(r'students/(?P<student_id>\d+)/applied-vacancies', ApplicationViewSet,
                 base_name='applications')
-
+router.register(r'companies/(?P<company_id>\d+)/applications', CompanyApplicationViewSet,
+                base_name='company-applications')
+router.register(r'companies/(?P<company_id>\d+)/vacancies', CompanyVacanciesViewSet,
+                base_name='company-vacancies')
 
 urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
 urlpatterns += [
@@ -49,5 +52,3 @@ urlpatterns += [
     url(r'^admin/', admin.site.urls),
     url(r'', apps.index, name="index"),
 ]
-
-
-- 
GitLab