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