From 9257e4b9ca3c14b34f02db5b7d1d3d08f8fdb39b Mon Sep 17 00:00:00 2001 From: Irwanto Date: Tue, 2 Jun 2020 17:34:55 +0700 Subject: [PATCH 1/7] [REFACTOR] Fix model name for monitoring case log --- apps/logs/serializers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/logs/serializers.py b/apps/logs/serializers.py index 1444379..270bce9 100644 --- a/apps/logs/serializers.py +++ b/apps/logs/serializers.py @@ -41,7 +41,7 @@ class LogSerializer(serializers.Serializer): if isinstance(instance, InvestigationCaseHistory): return MODEL_NAME_INVESTIGATION_CASE if isinstance(instance, MonitoringCaseHistory): - return MODEL_NAME_CASE_SUBJECT + return MODEL_NAME_MONITORING_CASE def get_author(self, instance): if isinstance(instance.author, Account): -- GitLab From 9abb2737f454cca16986839503e69bd14750a0ed Mon Sep 17 00:00:00 2001 From: Irwanto Date: Thu, 4 Jun 2020 00:20:00 +0700 Subject: [PATCH 2/7] [CHORES] Changed admin logs to current admin log only --- apps/logs/tests/test_units/test_logs.py | 6 +----- apps/logs/views.py | 7 +------ 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/apps/logs/tests/test_units/test_logs.py b/apps/logs/tests/test_units/test_logs.py index 72a8928..e7d3470 100644 --- a/apps/logs/tests/test_units/test_logs.py +++ b/apps/logs/tests/test_units/test_logs.py @@ -39,8 +39,4 @@ class ActivityLogViewTest(APITestCase): def test_list_only_current_author_logs_success(self): self.client = APIClient(HTTP_AUTHORIZATION=HEADER_PREFIX + self.officer_token.key) - self.assertIn('"count":2', self.get_logs_response()) - - def test_admin_account_get_all_logs_success(self): - self.client = APIClient(HTTP_AUTHORIZATION=HEADER_PREFIX + self.admin_token.key) - self.assertIn('"count":4', self.get_logs_response()) + self.assertIn('"count":1', self.get_logs_response()) diff --git a/apps/logs/views.py b/apps/logs/views.py index 08a281a..dc66a39 100644 --- a/apps/logs/views.py +++ b/apps/logs/views.py @@ -21,16 +21,11 @@ class LogAPIView(ListAPIView): def _get_logs_queryset(self, queryset, request): account = request.user.account - if account.is_admin: - return queryset return queryset.filter(author=account) def get_queryset(self, request): account = request.user.account - if account.is_admin: - account_logs = AccountHistory.objects.all() - else: - account_logs = AccountHistory.objects.filter(object_id=account.id) + account_logs = AccountHistory.objects.filter(author=account.id) case_subject_logs = ( self._get_logs_queryset(CaseSubjectHistory.objects.all(), request)) -- GitLab From da6ce204b311a2dec9e5ad16f611558fca9a3ebd Mon Sep 17 00:00:00 2001 From: Irwanto Date: Thu, 4 Jun 2020 00:20:50 +0700 Subject: [PATCH 3/7] [CHORES] Add author when create account --- apps/accounts/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/accounts/views.py b/apps/accounts/views.py index 1e862ff..8aaab3f 100644 --- a/apps/accounts/views.py +++ b/apps/accounts/views.py @@ -73,7 +73,7 @@ class AccountViewSet(viewsets.ModelViewSet): ) user = User.objects.create_user(username=username, password=password) - Account.objects.create(user=user, **serializer.validated_data) + Account.objects.create(user=user, author=self.request.user.account, **serializer.validated_data) return Response( serializer.data, status=status.HTTP_201_CREATED, -- GitLab From 2fd4c4e8956a6dff7e710d9588bfa5cd26b1ce6d Mon Sep 17 00:00:00 2001 From: Irwanto Date: Thu, 4 Jun 2020 00:46:59 +0700 Subject: [PATCH 4/7] [RED] Add creating account without auth token test --- .../tests/test_units/test_accounts.py | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/apps/accounts/tests/test_units/test_accounts.py b/apps/accounts/tests/test_units/test_accounts.py index bb72c19..d694ce6 100644 --- a/apps/accounts/tests/test_units/test_accounts.py +++ b/apps/accounts/tests/test_units/test_accounts.py @@ -35,6 +35,7 @@ class AccountViewTest(APITestCase): cls.faker = Faker() def setUp(self): + self.noAuthClient = APIClient() self.client = APIClient(HTTP_AUTHORIZATION=HEADER_PREFIX + self.token_1.key) def test_string_representation(self): @@ -138,6 +139,30 @@ class AccountViewTest(APITestCase): f'"action_type":"{ACTIVITY_TYPE_CREATE}"', response_string ) + def test_create_new_officer_success_without_auth_token(self): + url = self.BASE_URL + + _account_id = self.faker.email() + officer_prev_count = Account.objects.filter(is_admin=False).count() + + data = { + "name": self.faker.name(), + "username": _account_id, + "password": "justpass", + "email": _account_id, + "phone_number": "+999999999999", + "area": self.faker.city(), + "is_admin": False, + "is_verified": False, + "is_active": False, + } + + response = self.noAuthClient.post(path=url, data=data, format="json",) + officer_current_count = Account.objects.filter(is_admin=False).count() + + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + self.assertEqual(officer_current_count, officer_prev_count + 1) + def test_create_existing_user_fails(self): url = self.BASE_URL data = { -- GitLab From eedf84a72d6e54549d340908d3de77ff302086cf Mon Sep 17 00:00:00 2001 From: Irwanto Date: Thu, 4 Jun 2020 00:47:42 +0700 Subject: [PATCH 5/7] [GREEN] Fixed creating account without auth to have no author --- apps/accounts/views.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/accounts/views.py b/apps/accounts/views.py index 8aaab3f..f548fbc 100644 --- a/apps/accounts/views.py +++ b/apps/accounts/views.py @@ -1,5 +1,5 @@ from django.core.mail import send_mail -from django.contrib.auth.models import User +from django.contrib.auth.models import AnonymousUser, User from django.shortcuts import get_object_or_404 from django_filters.rest_framework import DjangoFilterBackend from rest_framework import status, viewsets @@ -73,7 +73,10 @@ class AccountViewSet(viewsets.ModelViewSet): ) user = User.objects.create_user(username=username, password=password) - Account.objects.create(user=user, author=self.request.user.account, **serializer.validated_data) + if isinstance(self.request.user, AnonymousUser): + Account.objects.create(user=user, **serializer.validated_data) + else: + Account.objects.create(user=user, author=self.request.user.account, **serializer.validated_data) return Response( serializer.data, status=status.HTTP_201_CREATED, -- GitLab From ce8b6f6219a73ff011a8e9c59d4f0bd85123f6a2 Mon Sep 17 00:00:00 2001 From: Irwanto Date: Thu, 4 Jun 2020 01:03:50 +0700 Subject: [PATCH 6/7] [REFACTOR] Fixed codestyle issues --- apps/accounts/views.py | 5 ++++- .../tests/test_units/test_custom_login.py | 2 +- apps/custom_auth/views.py | 2 +- .../tests/test_units/test_exportables.py | 15 ++++++++------- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/apps/accounts/views.py b/apps/accounts/views.py index f548fbc..4417df0 100644 --- a/apps/accounts/views.py +++ b/apps/accounts/views.py @@ -76,7 +76,10 @@ class AccountViewSet(viewsets.ModelViewSet): if isinstance(self.request.user, AnonymousUser): Account.objects.create(user=user, **serializer.validated_data) else: - Account.objects.create(user=user, author=self.request.user.account, **serializer.validated_data) + Account.objects.create( + user=user, + author=self.request.user.account, + **serializer.validated_data) return Response( serializer.data, status=status.HTTP_201_CREATED, diff --git a/apps/custom_auth/tests/test_units/test_custom_login.py b/apps/custom_auth/tests/test_units/test_custom_login.py index 9ea2f1e..d609c75 100644 --- a/apps/custom_auth/tests/test_units/test_custom_login.py +++ b/apps/custom_auth/tests/test_units/test_custom_login.py @@ -13,7 +13,7 @@ class CustomAuthTest(APITestCase): user = User.objects.create(username="jonathan") user.set_password("justpass") user.save() - cls.user = user + cls.user = user def _test_success(self, data): response = self.client.post(path=self.URL, data=data, format="json") diff --git a/apps/custom_auth/views.py b/apps/custom_auth/views.py index 647058b..1d642e0 100644 --- a/apps/custom_auth/views.py +++ b/apps/custom_auth/views.py @@ -19,4 +19,4 @@ class CustomAuthToken(ObtainAuthToken): user = serializer.validated_data["user"] token, _ = Token.objects.get_or_create(user=user) - return Response(data={ "token": token.key }, status=status.HTTP_200_OK) + return Response(data={"token": token.key}, status=status.HTTP_200_OK) diff --git a/apps/exportables/tests/test_units/test_exportables.py b/apps/exportables/tests/test_units/test_exportables.py index e3dd299..38ebe97 100644 --- a/apps/exportables/tests/test_units/test_exportables.py +++ b/apps/exportables/tests/test_units/test_exportables.py @@ -10,15 +10,16 @@ from apps.cases.tests.factories.cases import InvestigationCaseFactory from apps.exportables.renderers import INVESTIGATION_CASE_RENDERER_FIELDS + def init_data(): InvestigationCaseFactory( - case_subject=CaseSubjectFactory( - district="Beji", - age=19, - is_male=True, - ), - is_positive=True, - ) + case_subject=CaseSubjectFactory( + district="Beji", + age=19, + is_male=True, + ), + is_positive=True, + ) InvestigationCaseFactory( case_subject=CaseSubjectFactory( district="Cilodong", -- GitLab From a81881ca44599b84c21b8e2c45dfacf0808deb65 Mon Sep 17 00:00:00 2001 From: Irwanto Date: Thu, 4 Jun 2020 01:16:00 +0700 Subject: [PATCH 7/7] [REFACTOR] Change is_positive condition in case serializers --- apps/cases/serializers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/cases/serializers.py b/apps/cases/serializers.py index 610ce15..7953199 100644 --- a/apps/cases/serializers.py +++ b/apps/cases/serializers.py @@ -93,7 +93,7 @@ class InvestigationCaseSerializer(serializers.ModelSerializer): outcome = self.validated_data.get('outcome', None) is_positive = None if outcome is not None: - is_positive = True if "+" in outcome else False + is_positive = False if "-" in outcome else True super(InvestigationCaseSerializer, self).save(author=account, is_positive=is_positive) -- GitLab