Fakultas Ilmu Komputer UI
Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Fasilkom UI Open Source Software
Kape
Commits
4e7e0d36
Commit
4e7e0d36
authored
May 23, 2017
by
Joshua Casey
Browse files
[#44] [GREEN] added implementation for supervisor to verify vacancy
parent
01e5c1ed
Changes
4
Hide whitespace changes
Inline
Side-by-side
core/lib/permissions.py
View file @
4e7e0d36
...
...
@@ -5,6 +5,7 @@ from core.models import Company
from
core.models
import
Student
from
core.models
import
Supervisor
from
core.models
import
Application
from
core.models
import
Vacancy
def
is_admin_or_student
(
user
):
...
...
@@ -145,3 +146,11 @@ class IsAdminOrVacancyOwner(permissions.BasePermission):
raise
PermissionDenied
(
"Checking owner permission on non-application object"
)
class
VacancyApprovalPermission
(
permissions
.
BasePermission
):
def
has_permission
(
self
,
request
,
view
):
return
is_admin_or_supervisor
(
request
.
user
)
def
has_object_permission
(
self
,
request
,
view
,
obj
):
return
isinstance
(
obj
,
Vacancy
)
core/serializers/vacancies.py
View file @
4e7e0d36
...
...
@@ -43,3 +43,10 @@ class VacancyApplicationSerializer(serializers.ModelSerializer):
class
Meta
:
model
=
Application
fields
=
[
'cover_letter'
,
'vacancy'
,
'status'
]
class
VacancyVerifiedSerializer
(
serializers
.
ModelSerializer
):
class
Meta
:
model
=
Vacancy
fields
=
[
'verified'
]
core/tests/test_vacancies.py
View file @
4e7e0d36
...
...
@@ -203,7 +203,6 @@ class SupervisorApprovalTests(APITestCase):
url
=
'/api/vacancies/'
+
str
(
new_vacancy2
.
pk
)
+
'/verify/'
response
=
self
.
client
.
patch
(
url
,
{
'verified'
:
True
},
format
=
'json'
)
print
response
.
data
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_200_OK
)
retrieve_vacancy
=
Vacancy
.
objects
.
get
(
pk
=
new_vacancy2
.
pk
)
...
...
core/views/vacancies.py
View file @
4e7e0d36
...
...
@@ -8,11 +8,11 @@ from rest_framework.permissions import IsAuthenticated
from
rest_framework.response
import
Response
from
core.lib.mixins
import
MultiSerializerViewSetMixin
from
core.lib.permissions
import
IsAdminOrStudent
,
IsAdminOrCompany
,
IsAdminOrVacancyOwner
from
core.lib.permissions
import
IsAdminOrStudent
,
IsAdminOrCompany
,
IsAdminOrVacancyOwner
,
VacancyApprovalPermission
from
core.models
import
Student
,
Company
from
core.models.vacancies
import
Vacancy
,
Application
from
core.serializers.vacancies
import
VacancySerializer
,
ApplicationSerializer
,
ApplicationStatusSerializer
,
\
VacancyApplicationSerializer
,
PostVacancySerializer
VacancyApplicationSerializer
,
PostVacancySerializer
,
VacancyVerifiedSerializer
class
VacancyViewSet
(
MultiSerializerViewSetMixin
,
viewsets
.
ModelViewSet
):
...
...
@@ -43,6 +43,15 @@ class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet):
count_new
=
Application
.
objects
.
filter
(
vacancy
=
vacancy
,
status
=
Application
.
NEW
).
count
()
return
Response
({
"count"
:
count
,
"count_new"
:
count_new
},
status
=
status
.
HTTP_200_OK
)
@
detail_route
(
methods
=
[
'patch'
],
permission_classes
=
[
VacancyApprovalPermission
],
serializer_class
=
VacancyVerifiedSerializer
)
def
verify
(
self
,
request
,
pk
=
None
):
vacancy
=
self
.
get_object
()
serializer
=
self
.
get_serializer_class
()(
vacancy
,
data
=
request
.
data
,
partial
=
True
)
if
serializer
.
is_valid
():
serializer
.
save
()
return
Response
(
serializer
.
data
,
status
=
status
.
HTTP_200_OK
)
return
Response
({
"error"
:
"bad request"
},
status
=
status
.
HTTP_400_BAD_REQUEST
)
class
ApplicationViewSet
(
viewsets
.
GenericViewSet
):
serializer_class
=
ApplicationSerializer
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment