From 1b96a05c585facd4e22b18e01a53102e268eb0f4 Mon Sep 17 00:00:00 2001 From: Nandhika Prayoga <nandhika.prayoga@ui.ac.id> Date: Wed, 14 Oct 2020 15:59:41 +0700 Subject: [PATCH] [#41] Material: Random Material List --- app/templates/app/katalog_materi.html | 4 ++- app/tests.py | 43 +++++++++++++++++++++++++++ app/views.py | 5 ++++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/app/templates/app/katalog_materi.html b/app/templates/app/katalog_materi.html index 34051b5..bd49b2d 100644 --- a/app/templates/app/katalog_materi.html +++ b/app/templates/app/katalog_materi.html @@ -75,7 +75,9 @@ </div> </header> - <a href="/download-history/" class="btn-history">Riwayat Unduh</a><br><br> + <a href="/download-history/" class="btn-history">Riwayat Unduh</a><br><br> + + <a href="?random=1" class="btn-history">Acak Materi</a><br><br> <div class="container"> <div class="row content"> diff --git a/app/tests.py b/app/tests.py index 5c99fd0..303ed28 100644 --- a/app/tests.py +++ b/app/tests.py @@ -2274,6 +2274,49 @@ class MateriModelTest(TestCase): Like.objects.create(timestamp=datetime.now(), materi=self.materi, session_id="dummysessionid2") self.assertEqual(2, self.materi.like_count) +class RandomizedMateriTest(TestCase): + def setUp(self): + self.contributor = User.objects.create( + email="kontributor@gov.id", password="passwordtest", name="kontributor", is_contributor=True + ) + + self.cover = SimpleUploadedFile("ExampleCover221.jpg", b"Test file") + self.content = SimpleUploadedFile("ExampleFile221.pdf", b"Test file") + + self.materi = Materi.objects.create( + title="Materi 1", + author="Nandhika", + uploader=self.contributor, + publisher="Kelas SC", + descriptions="Deskripsi Materi 1", + status="APPROVE", + cover=self.cover, + content=self.content, + date_modified=datetime.now(), + date_created=datetime.now(), + ) + + self.materi = Materi.objects.create( + title="Materi 2", + author="Prayoga", + uploader=self.contributor, + publisher="Kelas SC", + descriptions="Deskripsi Materi 2", + status="APPROVE", + cover=self.cover, + content=self.content, + date_modified=datetime.now(), + date_created=datetime.now(), + ) + + def test_randomized_materi_returns_200(self): + response = Client().get("/?random=1") + self.assertEqual(response.status_code, 200) + + def test_randomized_materi_remains_same_materi(self): + response = Client().get("/?random=1") + self.assertIn("Materi 1", response.content.decode()) + self.assertIn("Materi 2", response.content.decode()) class YearChoicesTest(TestCase): def test_release_year_contains_the_right_current_year(self): diff --git a/app/views.py b/app/views.py index a42118b..66b96f6 100644 --- a/app/views.py +++ b/app/views.py @@ -39,6 +39,7 @@ from django.contrib import messages from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive from pydrive.auth import AuthenticationRejected +import random def permission_denied(request, exception, template_name="error_403.html"): return defaults.permission_denied(request, exception, template_name) @@ -96,6 +97,10 @@ class DaftarKatalog(TemplateView): elif(getSort == "jumlah_unduh"): lstMateri = lstMateri.annotate(count=Count('unduh__id')).order_by('-count') + should_random = bool(request.GET.get("random")) + if should_random: + lstMateri = random.sample(list(lstMateri), len(lstMateri)) + context["materi_list"] = lstMateri paginator = Paginator(context["materi_list"], 15) page_number = request.GET.get("page") -- GitLab