diff --git a/app/templates/app/detail_materi.html b/app/templates/app/detail_materi.html index c489843d40314a994c7a4e39dba192316ed30e46..c8141efc4c138a413ee78ea550542de8e96f0823 100644 --- a/app/templates/app/detail_materi.html +++ b/app/templates/app/detail_materi.html @@ -284,6 +284,11 @@ div.review { <em class="align-self-center far fa-square" id="readLaterText"></em> Baca Nanti </button> {% endif %} + <button class="btn btn-book shadow-sm p-2 mr-2 bg-white rounded align-self-center" + type="button" aria-haspopup="true" aria-expanded="false" data-toggle="modal" + data-target="#reportModal"> + <em></em>Laporkan + </button> </div> </div> </div> @@ -469,6 +474,51 @@ div.review { </div> </div> </div> + +<div class="modal fade" id="reportModal" tabindex="-1" role="dialog" aria-labelledby="reportModal" + aria-hidden="true"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <div class="modal-header"> + <h5 class="modal-title" id="reportModal"> + {% if user.is_authenticated %} + Laporkan Materi + {% else %} + Belum Login + {% endif %} + </h5> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"> + <span aria-hidden="true">×</span> + </button> + </div> + <form method="POST"> + <div class="modal-body"> + {% if user.is_authenticated %} + <p>Judul materi: <b>{{ materi_data.title }}</b><br></p> + {% csrf_token %} + <div class="form-group"> + <textarea placeholder="Alasan laporan..." class="form-control" id="exampleFormControlTextarea1" + rows="3" name="report" required></textarea> + </div> + {% else %} + Login untuk melaporkan materi + {% endif %} + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-secondary" data-dismiss="modal">Batal</button> + {% if user.is_authenticated %} + <button type="submit" class="btn btn-primary"> + Laporkan Materi + {% else %} + <button type="button" class="btn btn-primary" onclick="window.location.href = '/login';"> + Login + {% endif %} + </button> + </div> + </form> + </div> + </div> +</div> {% endblock content %} {% block extra_scripts %} <script src="https://kit.fontawesome.com/bc2cedd6b2.js" crossorigin="anonymous"></script> diff --git a/app/tests.py b/app/tests.py index c71588983703b869f038359fd35eb75e12ff58cd..c05ae60365035454cf98941d84f012b76dd48040 100644 --- a/app/tests.py +++ b/app/tests.py @@ -49,6 +49,7 @@ from .views import (DaftarKatalog, DashboardKontributorView, DetailMateri, KatalogPerKontributorView, MateriFavorite, PasswordChangeViews, PostsView, ProfilView, ReqMateriView, RevisiMateriView, SuksesLoginAdminView, + LaporanMateri, SuksesLoginKontributorView, SuntingProfilView, UploadMateriExcelView, UploadMateriView, password_success) @@ -527,6 +528,14 @@ class DetailMateriTest(TestCase): self.assertIn("Anda belum menuliskan komentar", response.context["error_message"]) + def test_post_blank_report(self): + url = self.url + self.client.login(**self.anonymous_credential) + response = self.client.post(url, {"report": ""}) + self.assertIn("error_message", response.context) + self.assertIn("Anda belum menuliskan komentar", + response.context["error_message"]) + def test_comment_rendered_to_template(self): url = self.url self.client.login(**self.contributor_credential) @@ -534,6 +543,13 @@ class DetailMateriTest(TestCase): response = Client().get(url) self.assertContains(response, "This is my new comment") + def test_report_rendered_to_template(self): + url = self.url + self.client.login(**self.contributor_credential) + self.client.post(url, {"report": "This is my new comment"}) + response = Client().get(url) + self.assertEqual(response.status_code, 200) + def test_comment_by_admin(self): url = self.url self.client.login(**self.admin_credential) diff --git a/app/views.py b/app/views.py index cd6be9c991ea2acdaaece401b16d1959f7a2a8db..18dc1f83a52254611a1978cb144e53b4f2cc8696 100644 --- a/app/views.py +++ b/app/views.py @@ -30,6 +30,7 @@ from app.models import ( Comment, Review, Materi, + LaporanMateri, ReqMaterial, Rating, RatingContributor, SubmitVisitor, @@ -190,7 +191,10 @@ class DetailMateri(TemplateView): def post(self, request, *args, **kwargs): comment_text = request.POST.get("comment", None) review_text = request.POST.get("review", None) - if ((comment_text == None or comment_text == "" )and (review_text == None or review_text == "")): + report_text = request.POST.get("report", None) + if ((comment_text == None or comment_text == "" ) and \ + (review_text == None or review_text == "") and \ + (report_text == None or report_text == "")): context = self.get_context_data(*args, **kwargs) context["error_message"] = "Anda belum menuliskan komentar" context["materi_data"] = get_object_or_404(Materi, pk=kwargs["pk"]) @@ -226,6 +230,11 @@ class DetailMateri(TemplateView): review=review_text, username=DetailMateriService.get_user_name(request), materi=materi, user=user_obj ) review.save() + elif (report_text != None): + laporan_materi = LaporanMateri.objects.create( + materi=materi, laporan=report_text, user=user_obj + ) + laporan_materi.save() return HttpResponseRedirect(request.path)