Compare commits
No commits in common. "37ecf28f2fa00bc3363b930e95862b7094e5f0df" and "9ae64e8cb1f4d38d6ff05d4c841c99c057698c31" have entirely different histories.
37ecf28f2f
...
9ae64e8cb1
@ -680,30 +680,6 @@ class Report(models.Model):
|
|||||||
def get_moderation_actions(self):
|
def get_moderation_actions(self):
|
||||||
return ModerationAction.objects.filter(report=self)
|
return ModerationAction.objects.filter(report=self)
|
||||||
|
|
||||||
@property
|
|
||||||
def reported_content(self):
|
|
||||||
"""
|
|
||||||
Dynamically fetch the reported content based on subclass.
|
|
||||||
The alternative would be to use the ContentType framework:
|
|
||||||
https://docs.djangoproject.com/en/5.1/ref/contrib/contenttypes/
|
|
||||||
"""
|
|
||||||
if hasattr(self, "reportadoptionnotice"):
|
|
||||||
return self.reportadoptionnotice.adoption_notice
|
|
||||||
elif hasattr(self, "reportcomment"):
|
|
||||||
return self.reportcomment.reported_comment
|
|
||||||
return None
|
|
||||||
|
|
||||||
@property
|
|
||||||
def reported_content_url(self):
|
|
||||||
"""
|
|
||||||
Same as reported_content, just for url
|
|
||||||
"""
|
|
||||||
if hasattr(self, "reportadoptionnotice"):
|
|
||||||
print(self.reportadoptionnotice.adoption_notice.get_absolute_url)
|
|
||||||
return self.reportadoptionnotice.adoption_notice.get_absolute_url
|
|
||||||
elif hasattr(self, "reportcomment"):
|
|
||||||
return self.reportcomment.reported_comment.get_absolute_url
|
|
||||||
return None
|
|
||||||
|
|
||||||
class ReportAdoptionNotice(Report):
|
class ReportAdoptionNotice(Report):
|
||||||
adoption_notice = models.ForeignKey("AdoptionNotice", on_delete=models.CASCADE)
|
adoption_notice = models.ForeignKey("AdoptionNotice", on_delete=models.CASCADE)
|
||||||
@ -712,9 +688,6 @@ class ReportAdoptionNotice(Report):
|
|||||||
def reported_content(self):
|
def reported_content(self):
|
||||||
return self.adoption_notice
|
return self.adoption_notice
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"Report der Vermittlung {self.adoption_notice}"
|
|
||||||
|
|
||||||
|
|
||||||
class ReportComment(Report):
|
class ReportComment(Report):
|
||||||
reported_comment = models.ForeignKey("Comment", on_delete=models.CASCADE)
|
reported_comment = models.ForeignKey("Comment", on_delete=models.CASCADE)
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="report card">
|
<div class="report card">
|
||||||
<h2>
|
<h2>
|
||||||
{% translate 'Meldung von ' %} <a href="{{ report.reported_content_url }}"><i>{{ report.reported_content }}</i></a>
|
{% blocktranslate %}
|
||||||
|
Meldung von {{ report.reported_content }}
|
||||||
|
{% endblocktranslate %}
|
||||||
</h2>
|
</h2>
|
||||||
{% if report.reported_broken_rules %}
|
{% if report.reported_broken_rules %}
|
||||||
{% translate "Regeln gegen die Verstoßen wurde" %}
|
{% translate "Regeln gegen die Verstoßen wurde" %}
|
||||||
@ -11,14 +13,9 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<p>
|
<p><b>{% translate "Kommentar zur Meldung" %}:</b>
|
||||||
{% if report.user_comment %}
|
{{ report.user_comment }}
|
||||||
<b>{% translate "Kommentar zur Meldung" %}:</b> {{ report.user_comment }}
|
|
||||||
{% else %}
|
|
||||||
<i>{% translate 'Es wurde kein Kommentar zur Meldung hinzugefügt.' %}</i>
|
|
||||||
{% endif %}
|
|
||||||
</p>
|
</p>
|
||||||
{% if is_mod_or_above %}
|
|
||||||
<div class="container-edit-buttons">
|
<div class="container-edit-buttons">
|
||||||
<form action="allow" class="">
|
<form action="allow" class="">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
@ -31,5 +28,4 @@
|
|||||||
<button class="btn allow" type="submit">{% translate "Inhalt als gesperrt kennzeichnen" %}</button>
|
<button class="btn allow" type="submit">{% translate "Inhalt als gesperrt kennzeichnen" %}</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
@ -429,13 +429,10 @@ def report_detail(request, report_id, form_complete=False):
|
|||||||
"""
|
"""
|
||||||
Detailed view of a report, including moderation actions
|
Detailed view of a report, including moderation actions
|
||||||
"""
|
"""
|
||||||
# Prefetching reduces the number of queries to the database that are needed (see reported_content)
|
report = Report.objects.get(pk=report_id)
|
||||||
report = Report.objects.select_related("reportadoptionnotice", "reportcomment").get(pk=report_id)
|
|
||||||
moderation_actions = ModerationAction.objects.filter(report_id=report_id)
|
moderation_actions = ModerationAction.objects.filter(report_id=report_id)
|
||||||
is_mod_or_above = user_is_trust_level_or_above(request.user, TrustLevel.MODERATOR)
|
|
||||||
|
|
||||||
context = {"report": report, "moderation_actions": moderation_actions,
|
context = {"report": report, "moderation_actions": moderation_actions, "form_complete": form_complete}
|
||||||
"form_complete": form_complete, "is_mod_or_above": is_mod_or_above}
|
|
||||||
|
|
||||||
return render(request, 'fellchensammlung/details/detail-report.html', context)
|
return render(request, 'fellchensammlung/details/detail-report.html', context)
|
||||||
|
|
||||||
@ -506,7 +503,7 @@ def my_profile(request):
|
|||||||
|
|
||||||
@user_passes_test(user_is_trust_level_or_above)
|
@user_passes_test(user_is_trust_level_or_above)
|
||||||
def modqueue(request):
|
def modqueue(request):
|
||||||
open_reports = Report.objects.select_related("reportadoptionnotice", "reportcomment").filter(status=Report.WAITING)
|
open_reports = Report.objects.filter(status=Report.WAITING)
|
||||||
context = {"reports": open_reports}
|
context = {"reports": open_reports}
|
||||||
return render(request, 'fellchensammlung/modqueue.html', context=context)
|
return render(request, 'fellchensammlung/modqueue.html', context=context)
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ class BasicViewTest(TestCase):
|
|||||||
self.assertTrue(ReportComment.objects.filter(reported_comment=c.pk).exists())
|
self.assertTrue(ReportComment.objects.filter(reported_comment=c.pk).exists())
|
||||||
|
|
||||||
def test_show_report_details_logged_in(self):
|
def test_show_report_details_logged_in(self):
|
||||||
self.client.login(username='testuser1', password='12345')
|
self.client.login(username='testuser0', password='12345')
|
||||||
report = ReportComment.objects.get(user_comment="ReportComment1")
|
report = ReportComment.objects.get(user_comment="ReportComment1")
|
||||||
response = self.client.get(reverse('report-detail', args=(report.pk,)))
|
response = self.client.get(reverse('report-detail', args=(report.pk,)))
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
@ -125,7 +125,7 @@ class BasicViewTest(TestCase):
|
|||||||
self.assertNotContains(response, '<form action="allow" class="">')
|
self.assertNotContains(response, '<form action="allow" class="">')
|
||||||
|
|
||||||
def test_show_report_details_admin(self):
|
def test_show_report_details_admin(self):
|
||||||
self.client.login(username='testuser0', password='12345')
|
self.client.login(username='testuser1', password='12345')
|
||||||
report = ReportComment.objects.get(user_comment="ReportComment1")
|
report = ReportComment.objects.get(user_comment="ReportComment1")
|
||||||
response = self.client.get(reverse('report-detail', args=(report.pk,)))
|
response = self.client.get(reverse('report-detail', args=(report.pk,)))
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user