diff --git a/scipost_django/journals/views.py b/scipost_django/journals/views.py index 3a59fef9f91db1b4c7a58950e3a9a105823653ad..d6f18a81d453eec215a4cc38ef5b5ba76a2975b3 100644 --- a/scipost_django/journals/views.py +++ b/scipost_django/journals/views.py @@ -366,7 +366,7 @@ class IssuesView(DetailView): List all Issues sorted per Journal. """ - queryset = Journal.objects.has_issues() + queryset = Journal.objects.active().has_issues() slug_field = slug_url_kwarg = "doi_label" template_name = "journals/journal_issues.html" @@ -409,6 +409,10 @@ def authoring(request, doi_label=None): context = {} if doi_label: journal = get_object_or_404(Journal, doi_label=doi_label) + # Guard against inactive journals + if not (journal.active or request.user.is_staff): + raise PermissionDenied("Journal is not active") + context = {"journal": journal} return render(request, "journals/authoring.html", context) @@ -418,12 +422,19 @@ def refereeing(request, doi_label=None): context = {} if doi_label: journal = get_object_or_404(Journal, doi_label=doi_label) + # Guard against inactive journals + if not (journal.active or request.user.is_staff): + raise PermissionDenied("Journal is not active") + context = {"journal": journal} return render(request, "journals/refereeing.html", context) def redirect_to_about(request, doi_label): journal = get_object_or_404(Journal, doi_label=doi_label) + # Guard against inactive journals + if not (journal.active or request.user.is_staff): + raise PermissionDenied("Journal is not active") return redirect( reverse("journal:about", kwargs={"doi_label": journal.doi_label}), permanent=True, @@ -433,6 +444,10 @@ def redirect_to_about(request, doi_label): def about(request, doi_label): """Journal specific about page.""" journal = get_object_or_404(Journal, doi_label=doi_label) + # Guard against inactive journals + if not (journal.active or request.user.is_staff): + raise PermissionDenied("Journal is not active") + year = timezone.now().year nr_publications = journal.nr_publications(year=year) nr_publications_1 = journal.nr_publications(year=year - 1) @@ -473,6 +488,9 @@ def provide_plot(x, y, name, nonce=None): def metrics(request, doi_label, specialty=None): journal = get_object_or_404(Journal, doi_label=doi_label) + # Guard against inactive journals + if not (journal.active or request.user.is_staff): + raise PermissionDenied("Journal is not active") context = { "journal": journal, "specialty": specialty,