Skip to content
Snippets Groups Projects
Unverified Commit 4517b5a5 authored by Saurabh Kumar's avatar Saurabh Kumar Committed by GitHub
Browse files

Move systemsettings out of public + remove duplicate 404/403 template (#3804)

- Renamed the SystemSettings model class
- 404/403 templates specific to apply to is removed, use a single
  template for them.
- Add data migration for old SystemMessageSettings model class
- add/update the testing urls for error pages
Fixes #3768
parent 9a9a9e82
No related branches found
No related tags found
1 merge request!76Merge up to 5.6.0
Showing
with 222 additions and 80 deletions
......@@ -6,8 +6,8 @@
{% block header_menu %}
<section class="header__menus header__menus--desktop">
{% if settings.utils.SystemMessagesSettings.nav_content %}
{{ settings.utils.SystemMessagesSettings.nav_content|safe }}
{% if settings.core.SystemSettings.nav_content %}
{{ settings.core.SystemSettings.nav_content|safe }}
{% else %}
{% include "core/navigation/primarynav-apply.html" %}
{% endif %}
......
{% extends "base-apply.html" %}
{% load wagtailcore_tags wagtailsettings_tags %}
{% block title %}{{ settings.utils.SystemMessagesSettings.title_403 }}{% endblock %}
{% block body_class %}template-403{% endblock %}
{% block content %}
<div class="wrapper wrapper--small wrapper--inner-space-large">
<h1>{{ settings.utils.SystemMessagesSettings.title_403 }}</h1>
<div class="rich-text">{{ settings.utils.SystemMessagesSettings.body_403|richtext }}</div>
</div>
{% endblock %}
{% extends "base-apply.html" %}
{% load wagtailcore_tags wagtailsettings_tags %}
{% block title %}{{ settings.utils.SystemMessagesSettings.title_404 }}{% endblock %}
{% block body_class %}template-404{% endblock %}
{% block content %}
<div class="wrapper wrapper--small wrapper--inner-space-large">
<h1>{{ settings.utils.SystemMessagesSettings.title_404 }}</h1>
<p>If you typed the web address, check it is correct.</p>
<p>If you pasted the web address, check you copied the entire address.</p>
<div class="rich-text">{{ settings.utils.SystemMessagesSettings.body_404|richtext }}</div>
</div>
{% endblock %}
......@@ -5,7 +5,6 @@ from django.http import HttpResponseForbidden
from django.shortcuts import get_object_or_404, redirect
from django.utils.decorators import method_decorator
from django.utils.translation import gettext as _
from django.views import defaults
from django.views.generic import View
from django.views.generic.base import ContextMixin
from django.views.generic.detail import SingleObjectTemplateResponseMixin
......@@ -16,18 +15,6 @@ from wagtail.admin.views.pages.delete import delete
from wagtail.models import Page
def page_not_found(request, exception=None, template_name="apply/404.html"):
if not request.user.is_authenticated:
template_name = "404.html"
return defaults.page_not_found(request, exception, template_name)
def permission_denied(request, exception=None, template_name="apply/403.html"):
if not request.user.is_authenticated:
template_name = "403.html"
return defaults.permission_denied(request, exception, template_name)
@method_decorator(login_required, name="dispatch")
class ViewDispatcher(View):
admin_view: View = None
......
# Generated by Django 4.2.11 on 2024-03-11 08:01
from django.db import migrations, models
import django.db.models.deletion
import wagtail.fields
class Migration(migrations.Migration):
initial = True
dependencies = [
("images", "0006_alter_rendition_file"),
("core", "0002_auto_20240215_remove_mailhimp"),
]
operations = [
migrations.CreateModel(
name="SystemSettings",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"site_logo_link",
models.URLField(
blank=True,
default="",
help_text='Link for the site logo, e.g. "https://www.example.org/". If not set, defaults to page with slug set to "home".',
),
),
(
"nav_content",
models.TextField(
blank=True,
help_text="This will overwrite the default front page navigation bar, html tags is allowed.",
verbose_name="Front page navigation content",
),
),
(
"footer_content",
models.TextField(
blank=True,
default="<p>Configure this text in Wagtail admin -> Settings -> System settings.</p>",
help_text="This will be added to the footer, html tags is allowed.",
verbose_name="Footer content",
),
),
(
"title_404",
models.CharField(
default="Page not found", max_length=255, verbose_name="Title"
),
),
(
"body_404",
wagtail.fields.RichTextField(
default="<p>You may be trying to find a page that doesn&rsquo;t exist or has been moved.</p>",
verbose_name="Text",
),
),
(
"title_403",
models.CharField(
default="Permission Denied",
max_length=255,
verbose_name="Title",
),
),
(
"body_403",
wagtail.fields.RichTextField(
default="<p>You might not have access to the requested resource.</p>",
verbose_name="Text",
),
),
(
"site_logo_default",
models.ForeignKey(
blank=True,
help_text="Default site logo",
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to="images.customimage",
),
),
(
"site_logo_mobile",
models.ForeignKey(
blank=True,
help_text="Mobil site logo (if not set default will be used)",
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to="images.customimage",
),
),
],
options={
"verbose_name": "System settings",
"db_table": "system_settings",
},
),
]
# Generated by Django 4.2.11 on 2024-03-11 08:02
from django.db import migrations
def copy_public_system_messages_settings(apps, schema_editor):
if not apps.is_installed("utils"):
return
SystemSettings = apps.get_model("core", "SystemSettings")
PublicSystemMessages = apps.get_model("utils", "SystemMessagesSettings")
for old_settings in PublicSystemMessages.objects.all():
SystemSettings.objects.create(
site_logo_default=old_settings.site_logo_default,
site_logo_mobile=old_settings.site_logo_mobile,
site_logo_link=old_settings.site_logo_link,
nav_content=old_settings.nav_content,
footer_content=old_settings.footer_content,
title_404=old_settings.title_404,
body_404=old_settings.body_404,
title_403=old_settings.title_403,
body_403=old_settings.body_403,
)
def reverse_copy_public_system_messages_settings(apps, schema_editor):
SystemSettings = apps.get_model("core", "SystemSettings")
SystemSettings.objects.all().delete()
class Migration(migrations.Migration):
dependencies = [
("core", "0003_initial"),
]
operations = [
migrations.RunPython(
copy_public_system_messages_settings,
reverse_copy_public_system_messages_settings,
),
]
from .system_settings import SystemSettings
__all__ = ["SystemSettings"]
......@@ -12,11 +12,10 @@ from wagtail.fields import RichTextField
@register_setting
class SystemMessagesSettings(BaseGenericSetting):
wagtail_reference_index_ignore = True
class SystemSettings(BaseGenericSetting):
class Meta:
verbose_name = "System settings"
db_table = "system_settings"
site_logo_default = models.ForeignKey(
"images.CustomImage",
......
......@@ -3,8 +3,8 @@
{% block header_menu %}
<section class="header__menus header__menus--desktop">
{% if settings.utils.SystemMessagesSettings.nav_content %}
{{ settings.utils.SystemMessagesSettings.nav_content|safe }}
{% if settings.core.SystemSettings.nav_content %}
{{ settings.core.SystemSettings.nav_content|safe }}
{% else %}
{% include "core/navigation/primarynav-apply.html" %}
{% endif %}
......
# Generated by Django 4.2.11 on 2024-03-11 16:36
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("utils", "0012_alter_systemmessagessettings_footer_content"),
("core", "0004_move_system_settings_data"),
]
operations = [
migrations.DeleteModel(
name="SystemMessagesSettings",
),
]
{% extends "base.html" %}
{% extends "base-apply.html" %}
{% load wagtailcore_tags wagtailsettings_tags %}
{% block title %}{{ settings.utils.SystemMessagesSettings.title_403 }}{% endblock %}
{% block title %}{{ settings.core.SystemSettings.title_403 }}{% endblock %}
{% block body_class %}template-403{% endblock %}
{% block content %}
<div class="wrapper wrapper--small wrapper--inner-space-large">
<h1>{{ settings.utils.SystemMessagesSettings.title_403 }}</h1>
<div class="rich-text">{{ settings.utils.SystemMessagesSettings.body_403|richtext }}</div>
<h1>{{ settings.core.SystemSettings.title_403 }}</h1>
<div class="rich-text">{{ settings.core.SystemSettings.body_403|richtext }}</div>
</div>
{% endblock %}
{% extends "base.html" %}
{% extends "base-apply.html" %}
{% load wagtailcore_tags wagtailsettings_tags %}
{% block title %}{{ settings.utils.SystemMessagesSettings.title_404 }}{% endblock %}
{% block title %}{{ settings.core.SystemSettings.title_404 }}{% endblock %}
{% block body_class %}template-404{% endblock %}
{% block content %}
<div class="wrapper wrapper--small wrapper--inner-space-large">
<h1>{{ settings.utils.SystemMessagesSettings.title_404 }}</h1>
<div class="rich-text">{{ settings.utils.SystemMessagesSettings.body_404|richtext }}</div>
<h1>{{ settings.core.SystemSettings.title_404 }}</h1>
<div class="rich-text">{{ settings.core.SystemSettings.body_404|richtext }}</div>
</div>
{% endblock %}
......@@ -4,26 +4,26 @@
{% block header %}
<header class="header">
<div class="header__inner wrapper wrapper--large">
<a href="{{ settings.utils.SystemMessagesSettings.site_logo_link|default:"/" }}" aria-label="{% trans "Home link" %}">
{% if settings.utils.SystemMessagesSettings.site_logo_default %}
{% image settings.utils.SystemMessagesSettings.site_logo_default width-215 as logo_default %}
<a href="{{ settings.core.SystemSettings.site_logo_link|default:"/" }}" aria-label="{% trans "Home link" %}">
{% if settings.core.SystemSettings.site_logo_default %}
{% image settings.core.SystemSettings.site_logo_default width-215 as logo_default %}
<img class="header__logo header__logo--desktop"
width="215"
src="{{ logo_default.url }}"
alt="{{ settings.utils.SystemMessagesSettings.site_logo_default.alt }}"
alt="{{ settings.core.SystemSettings.site_logo_default.alt }}"
>
{% if settings.utils.SystemMessagesSettings.site_logo_mobile %}
{% image settings.utils.SystemMessagesSettings.site_logo_mobile width-60 as logo_mobile %}
{% if settings.core.SystemSettings.site_logo_mobile %}
{% image settings.core.SystemSettings.site_logo_mobile width-60 as logo_mobile %}
<img class="header__logo header__logo--mobile"
width="60"
src="{{ logo_mobile.url }}"
alt="{{ settings.utils.SystemMessagesSettings.site_logo_mobile.alt }}"
alt="{{ settings.core.SystemSettings.site_logo_mobile.alt }}"
>
{% else %}
<img class="header__logo header__logo--mobile"
width="60"
src="{{ logo_default.url }}"
alt="{{ settings.utils.SystemMessagesSettings.site_logo_default.alt }}"
alt="{{ settings.core.SystemSettings.site_logo_default.alt }}"
>
{% endif %}
{% else %}
......@@ -62,13 +62,13 @@
<section class="header__menus header__menus--mobile">
<div class="header__inner header__inner--menu-open">
<a href="{{ settings.utils.SystemMessagesSettings.site_logo_link|default:"/" }}" aria-label="Home link">
{% if settings.utils.SystemMessagesSettings.site_logo_mobile %}
{% image settings.utils.SystemMessagesSettings.site_logo_mobile width-60 as logo_mobile %}
<a href="{{ settings.core.SystemSettings.site_logo_link|default:"/" }}" aria-label="Home link">
{% if settings.core.SystemSettings.site_logo_mobile %}
{% image settings.core.SystemSettings.site_logo_mobile width-60 as logo_mobile %}
<img class="header__logo header__logo--mobile"
width="60"
src="{{ logo_mobile.url }}"
alt="{{ settings.utils.SystemMessagesSettings.site_logo_mobile.alt }}"
alt="{{ settings.core.SystemSettings.site_logo_mobile.alt }}"
>
{% else %}
<img class="header__logo header__logo--mobile"
......@@ -133,10 +133,10 @@
{% endblock header %}
{% block footer %}
{% if settings.utils.SystemMessagesSettings.footer_content %}
{% if settings.core.SystemSettings.footer_content %}
<footer class="footer px-4 py-10 shrink-0 bg-dark-blue">
<div class="wrapper wrapper--large prose prose-invert max-w-none text-white">
{{ settings.utils.SystemMessagesSettings.footer_content|safe }}
{{ settings.core.SystemSettings.footer_content|safe }}
</div>
</footer>
{% endif %}
......
......@@ -38,11 +38,11 @@
<div class="header__inner wrapper wrapper--large">
<a href="{% site_logo_link current_site %}" aria-label="Home link">
{% if settings.utils.SystemMessagesSettings.site_logo_default %}
{% image settings.utils.SystemMessagesSettings.site_logo_default width-215 as logo_default %}
{% if settings.core.SystemSettings.site_logo_default %}
{% image settings.core.SystemSettings.site_logo_default width-215 as logo_default %}
<img class="header__logo header__logo--desktop" src="{{ logo_default.url }}">
{% if settings.utils.SystemMessagesSettings.site_logo_mobile %}
{% image settings.utils.SystemMessagesSettings.site_logo_mobile width-60 as logo_mobile %}
{% if settings.core.SystemSettings.site_logo_mobile %}
{% image settings.core.SystemSettings.site_logo_mobile width-60 as logo_mobile %}
<img class="header__logo header__logo--mobile" src="{{ logo_mobile.url }}">
{% else %}
<img class="header__logo header__logo--mobile" src="{{ logo_default.url }}">
......
......@@ -17,9 +17,6 @@ from hypha.apply.users.urls import urlpatterns as user_urls
from hypha.apply.users.views import become
from hypha.apply.utils.views import custom_wagtail_page_delete
handler404 = "hypha.apply.utils.views.page_not_found"
handler403 = "hypha.apply.utils.views.permission_denied"
urlpatterns = [
path("apply/", include("hypha.apply.funds.urls", "apply")),
path("activity/", include("hypha.apply.activity.urls", "activity")),
......@@ -54,15 +51,31 @@ if settings.HIJACK_ENABLE:
if settings.DEBUG:
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.urls import get_callable
from django.views import defaults as dj_default_views
# Serve static and media files from development server
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += [
# Add views for testing 404 and 500 templates
path("test404/", TemplateView.as_view(template_name="404.html")),
path("test500/", TemplateView.as_view(template_name="500.html")),
path(
"test400/",
dj_default_views.bad_request,
kwargs={"exception": Exception("Bad Request!")},
),
path(
"test403/",
dj_default_views.permission_denied,
kwargs={"exception": Exception("Permission Denied!")},
),
path("test403_csrf/", get_callable(settings.CSRF_FAILURE_VIEW)),
path(
"test404/",
dj_default_views.page_not_found,
kwargs={"exception": Exception("Not Found!")},
),
path("test500/", dj_default_views.server_error),
]
if settings.DEBUG or settings.ENABLE_STYLEGUIDE:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment