diff --git a/assets/js/__test__/components/Vacancy-test.jsx b/assets/js/__test__/components/Vacancy-test.jsx index 31986e0f87ee8d55aeeb388685b4d33fd916befc..bfb44832032dcfafb5e886ebd3987af79029b750 100644 --- a/assets/js/__test__/components/Vacancy-test.jsx +++ b/assets/js/__test__/components/Vacancy-test.jsx @@ -18,7 +18,7 @@ describe('Vacancy', () => { created: '2017-03-28T07:05:47.128672Z', description: 'Lorem ipsum dolbh.', id: 3, - name: 'Software Engineer', + name: 'Software Engineer', open_time: '2017-03-28T05:55:38Z', updated: '2017-03-28T07:34:13.122093Z', verified: true, @@ -46,6 +46,7 @@ describe('Vacancy', () => { role: 'company', data: { url: 'http://localhost:8001/api/users/8/', + username: 'Tutuplapak', email: '', is_staff: false, diff --git a/assets/js/components/Vacancy.jsx b/assets/js/components/Vacancy.jsx index 3180a4cece546bf5c9a65212cadda2cb738aedf3..3951c2ff8c94f4a36325e68510073ae718240bc9 100644 --- a/assets/js/components/Vacancy.jsx +++ b/assets/js/components/Vacancy.jsx @@ -125,9 +125,9 @@ export default class Vacancy extends React.Component { <Grid.Column floated="left"> <h4>{ this.props.data.name }</h4> { this.props.data.company.name }<br /> - { this.props.data.company.address }<br /> + { this.props.data.company.address }<br /><br /> Rp. { this.props.data.salary } <br /> <br /> - <b>{`Ditutup ${moment(moment(this.props.data.close_time)).fromNow()}`}</b> + <b>{this.props.data.apply_before}</b> </Grid.Column> <Grid.Column floated="right" > <Grid.Row textAlign="center"> diff --git a/core/migrations/0020_merge_20191006_1444.py b/core/migrations/0020_merge_20191006_1444.py new file mode 100644 index 0000000000000000000000000000000000000000..3f808abd2bf82eb95280b9fa149463f620ab4272 --- /dev/null +++ b/core/migrations/0020_merge_20191006_1444.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2019-10-06 07:44 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0017_vacancy_amount'), + ('core', '0019_merge_20191006_0852'), + ] + + operations = [ + ] diff --git a/core/migrations/0025_merge_20191008_0014.py b/core/migrations/0025_merge_20191008_0014.py new file mode 100644 index 0000000000000000000000000000000000000000..29cd7ddd7d12879d5ce92b4658ee4edaea9d56b2 --- /dev/null +++ b/core/migrations/0025_merge_20191008_0014.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2019-10-07 17:14 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0020_merge_20191006_1444'), + ('core', '0024_auto_20191007_1533'), + ] + + operations = [ + ] diff --git a/core/migrations/0028_merge_20191008_0921.py b/core/migrations/0028_merge_20191008_0921.py new file mode 100644 index 0000000000000000000000000000000000000000..2e5e9f0f5001c757965af5fbffd206088e156f34 --- /dev/null +++ b/core/migrations/0028_merge_20191008_0921.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2019-10-08 02:21 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0027_merge_20191008_0652'), + ('core', '0025_merge_20191008_0014'), + ] + + operations = [ + ] diff --git a/core/models/vacancies.py b/core/models/vacancies.py index 33f889dde7e76d7d502bdfe0d2fc9671604f5ead..52b02a4fd0a474cab8c6c279e6227dc0c1235c82 100644 --- a/core/models/vacancies.py +++ b/core/models/vacancies.py @@ -1,7 +1,8 @@ from django.db import models from django.core.exceptions import ValidationError from core.models.accounts import Company, Student - +import datetime +from django.utils import timezone class Vacancy(models.Model): company = models.ForeignKey(Company, related_name="vacancies", null=False) @@ -16,6 +17,12 @@ class Vacancy(models.Model): salary = models.IntegerField(default=0) + @property + def apply_before(self): + if(self.close_time<timezone.now()): + return "Pendaftaran ditutup" + return "Daftar sebelum "+self.close_time.strftime('%d')+" "+self.close_time.strftime('%B')+" "+self.close_time.strftime('%Y') + class Meta: ordering = ['-updated'] diff --git a/core/serializers/vacancies.py b/core/serializers/vacancies.py index 128f8810de07714a964881dd233e6a8635330ce3..88fbc47ee7bb116fd5ddfca596e6ee72bb6a85e3 100644 --- a/core/serializers/vacancies.py +++ b/core/serializers/vacancies.py @@ -32,7 +32,7 @@ class VacancySerializer(serializers.ModelSerializer): class Meta: model = Vacancy - fields = ['company', 'verified', 'open_time', 'description', 'close_time', 'created', 'updated', 'name', \ + fields = ['company', 'verified', 'open_time', 'description', 'close_time', 'created','apply_before', 'updated', 'name', \ 'status', 'bookmarked', 'id', 'salary'] def name_position_validator(names): diff --git a/core/tests/__init__.py b/core/tests/__init__.py index a799147e2530aa818f5609982bafa09e4a3c6c8b..0e080d58b36aa0b3e19475bf851c0f8cbc1640e9 100755 --- a/core/tests/__init__.py +++ b/core/tests/__init__.py @@ -1,4 +1,5 @@ # __init__.py + from core.tests.test_accounts import LoginTests, RegisterTests, ProfileUpdateTests -from core.tests.test_vacancies import ApplicationTests, BookmarkApplicationTests, CompanyListsTests +from core.tests.test_vacancies import ApplicationTests, BookmarkApplicationTests, CompanyListsTests, VacancyTest from core.tests.test_feedbacks import FeedbacksTests diff --git a/core/tests/test_vacancies.py b/core/tests/test_vacancies.py index 668444fb09ffb8a9c37dddffec020869791b0c8b..3920ba472abc5d462f3d391715f6d748e7e521b2 100644 --- a/core/tests/test_vacancies.py +++ b/core/tests/test_vacancies.py @@ -340,6 +340,7 @@ class VacancyTest(APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) + def test_fail_on_unverified_user_vacancy_list(self): url = '/api/vacancies/' response = self.client.post(url, format='json') @@ -398,6 +399,35 @@ class VacancyTest(APITestCase): self.assertEqual("expired vacancy" in response, False) + + def test_vacancy_is_closed(self): + superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') + new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, + address=None) + + new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), + description="lalala", close_time=timezone.now() - timedelta(minutes = 10)) + self.client.force_authenticate(user=superuser) + + response = new_vacancy.apply_before + + self.assertEqual(response, "Pendaftaran ditutup") + + def test_vacancy_is_closed(self): + superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') + new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, + address=None) + + new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), + description="lalala", close_time=timezone.now() + timedelta(minutes = 10)) + self.client.force_authenticate(user=superuser) + + response = new_vacancy.apply_before + + self.assertNotEqual(response, "Pendaftaran ditutup") + + + class CompanyListsTests(APITestCase): def test_company_vacancy_list(self): new_user = User.objects.create_user('dummy.company3', 'dummy.company3@company.com', 'lalala123') diff --git a/core/views/vacancies.py b/core/views/vacancies.py index 46f79ab776bfc6a38f6aac09a77cc070d8e8c23a..84f643a929e801d8e44af890e733699a58e2da07 100644 --- a/core/views/vacancies.py +++ b/core/views/vacancies.py @@ -60,6 +60,8 @@ class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet): vacancies = vacancies.filter(company__id__in=companies) page = self.paginate_queryset(vacancies) + print(vacancies) + print(request) if page is not None: return self.get_paginated_response(VacancySerializer(page, many=True, context={'request': request}).data) vacancies = Vacancy.objects.all()