From 977c5dd1755c02d302d15ea1f9d3d7b5f88a3016 Mon Sep 17 00:00:00 2001 From: kououken Date: Fri, 8 Mar 2019 14:31:29 -0800 Subject: [PATCH] Fix created/submitted dates to use timezone and call function when needed instead of at initialization. --- .../migrations/0003_auto_20190308_1416.py | 25 ++++++++++ .../migrations/0004_auto_20190308_1423.py | 24 ++++++++++ back/backend/models.py | 6 +-- back/backend/test_report.py | 45 ++++++++++++++++++ back/backend/views.py | 3 +- back/db.sqlite3 | Bin 119808 -> 119808 bytes 6 files changed, 99 insertions(+), 4 deletions(-) create mode 100644 back/backend/migrations/0003_auto_20190308_1416.py create mode 100644 back/backend/migrations/0004_auto_20190308_1423.py diff --git a/back/backend/migrations/0003_auto_20190308_1416.py b/back/backend/migrations/0003_auto_20190308_1416.py new file mode 100644 index 0000000..c72db8e --- /dev/null +++ b/back/backend/migrations/0003_auto_20190308_1416.py @@ -0,0 +1,25 @@ +# Generated by Django 2.1.7 on 2019-03-08 22:16 + +import datetime +from django.db import migrations, models +from django.utils.timezone import utc + + +class Migration(migrations.Migration): + + dependencies = [ + ('backend', '0002_auto_20190303_0106'), + ] + + operations = [ + migrations.AlterField( + model_name='report', + name='date_created', + field=models.DateTimeField(default=datetime.datetime(2019, 3, 8, 22, 16, 32, 697634, tzinfo=utc), verbose_name='date created'), + ), + migrations.AlterField( + model_name='report', + name='date_submitted', + field=models.DateTimeField(default=datetime.datetime(2019, 3, 8, 22, 16, 32, 697634, tzinfo=utc), verbose_name='date submitted'), + ), + ] diff --git a/back/backend/migrations/0004_auto_20190308_1423.py b/back/backend/migrations/0004_auto_20190308_1423.py new file mode 100644 index 0000000..2c4bf55 --- /dev/null +++ b/back/backend/migrations/0004_auto_20190308_1423.py @@ -0,0 +1,24 @@ +# Generated by Django 2.1.7 on 2019-03-08 22:23 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('backend', '0003_auto_20190308_1416'), + ] + + operations = [ + migrations.AlterField( + model_name='report', + name='date_created', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='date created'), + ), + migrations.AlterField( + model_name='report', + name='date_submitted', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='date submitted'), + ), + ] diff --git a/back/backend/models.py b/back/backend/models.py index dd47555..155e85e 100644 --- a/back/backend/models.py +++ b/back/backend/models.py @@ -1,6 +1,6 @@ from django.db import models from django.conf import settings -import datetime +from django.utils import timezone import ntpath class Report(models.Model): @@ -10,8 +10,8 @@ class Report(models.Model): """ user_id = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) title = models.CharField(max_length=128) - date_created = models.DateTimeField('date created', default=datetime.date.today) - date_submitted = models.DateTimeField('date submitted', default=datetime.date.today) + date_created = models.DateTimeField('date created', default=timezone.now) + date_submitted = models.DateTimeField('date submitted', default=timezone.now) submitted = models.BooleanField(default=False) reference_number = models.CharField(max_length=32, default='') diff --git a/back/backend/test_report.py b/back/backend/test_report.py index c39e3d4..ff00e8f 100644 --- a/back/backend/test_report.py +++ b/back/backend/test_report.py @@ -116,3 +116,48 @@ class ReportTests(TestCase): force_authenticate(review_request, user=user) response = report_detail(review_request, 1) self.assertEqual(response.status_code, 409) + + def test_report_finalize_logged_out(self): + """ + Test for when an unauthenticated user tries to finalize a report. + """ + factory = APIRequestFactory() + request = factory.put('/api/v1/report/1/final') + response = create_report(request) + self.assertEqual(response.status_code, 401) + + def test_report_finalize_logged_in_not_finalized(self): + """ + Test for when an authenticated user tries to finalize a report + that has not been finalized yet. + """ + factory = APIRequestFactory() + add_report_request = factory.post('/api/v1/report', {'title':'Test Report', 'reference':'12345'}) + user = CustomUser.objects.get(email='one@one.com') + force_authenticate(add_report_request, user=user) + create_report(add_report_request) + review_request = factory.put('/api/v1/report/1/final') + force_authenticate(review_request, user=user) + response = report_detail(review_request, 1) + self.assertEqual(response.status_code, 200) + reports = Report.objects.filter(user_id=user) + print("reports=",len(reports)) + self.assertTrue(report.submitted) + + def test_report_finalize_logged_in_already_finalized(self): + """ + Test for when an authenticated user tries to finalize a report + that has already been finalized. + """ + factory = APIRequestFactory() + add_report_request = factory.post('/api/v1/report', {'title':'Test Report', 'reference':'12345'}) + user = CustomUser.objects.get(email='one@one.com') + force_authenticate(add_report_request, user=user) + create_report(add_report_request) + report = Report.objects.get(user_id=user) + report.submitted = True + report.save() + review_request = factory.put('/api/v1/report/1/final') + force_authenticate(review_request, user=user) + response = report_detail(review_request, 1) + self.assertEqual(response.status_code, 409) diff --git a/back/backend/views.py b/back/backend/views.py index 28fdf16..f872c55 100644 --- a/back/backend/views.py +++ b/back/backend/views.py @@ -6,6 +6,7 @@ import os from django.core.mail import EmailMultiAlternatives from django.template.loader import render_to_string from decouple import config +from django.utils import timezone def get_report(report_pk): """ @@ -125,7 +126,7 @@ def create_report(request): report = Report.objects.create( user_id=request.user, title=request.data['title'], - date_created=datetime.date.today(), + date_created=timezone.now(), reference_number=request.data['reference'] ) report.save() diff --git a/back/db.sqlite3 b/back/db.sqlite3 index 15729b1a43cf3ad23d2de756ef6081d0b087ae98..74baa7cae142e5f1214b094fbcd79190733cf7ae 100644 GIT binary patch delta 927 zcmaKq-%FEG7{||Z&UAC8GTD!EYI7Mma_ekIU+2_vj7V6Get<=gubc0TNSv%Gc%^Fy zU3AgQYrGd?1>IQDg}u-m>jy+)ffs?9NP{kdpqu&wBIqdg%Vuz%59d7aJ^dDwZRH>n zQI10)ZH08}s^&=;e<26SGrW!$@uJpX7{hyPX2KvA9k?7Hmc(RyB#}&sVq!=#DDy@O zSd=B>Kxtil6$u$s*$8HJ*bRCuT%Nn*s6?}fJS9oeiNE0`d<~z$4e$}}K^*L;fM%5j z!}vs3T?w*x1h)!MN?XL}XeuH4sJERm>KDB&KDKdiQ|6|AhtC)Av4FSLBQVO^Xjknv zIr~TM75!zD6nJ&F0ON)6wJ{ zy%JA~mn6QNN-lT%(UVs;U6~1(vb<8?*xrtR%^^6bKR_v86|ly8pF(h$qerWJ`xaurocq=c0p=aNpTze+2X;Yc|UIy0zD&=BJTg z=JQs};)4z}8-e5}ck)tD1zMx?RL{2AI-6y!tPsEBB1Taaqiq}N!yi_q4G5|MpF%bD z!?e(gXqt}jubsHcy$rZOlf62?7|mZ)V?j(A{NxJTu>ka)Iz1~BfZ8gT)_zpVmiEsMTpQ8 zyTRI78MxSf(Q0Rf(iHn%ZcAV}$^PAZO-CP@N^*EGgvDg4-^Isu^oS&zcNro{(z3WS zj!u$Xnf&lN9wMnCga4XE2T7WZyO+?JA?$!rPdjGIO@#`SpRUN`&JlF*2T`nNjk&jU zY+&XP@3@8`qGE;rxrzsfv{W8@B^p!X9)9;SHjv4a&h0O;E=~IH(-`0*_zh#ij+itm zCj;N=!Ar_ywXj8&WzUooWeZOlz(wUsv+1AapKTXfVr>9@Y`Gf)Qqn0gTN`hQplaz8 O>CUI?OpHYEdh9PCNTmt@