Refactor redirects create view to use generic CreateView and template

pull/12619/head
Sage Abdullah 2024-11-21 09:59:00 +00:00 zatwierdzone przez Matt Westcott
rodzic f9e4e10fce
commit 3f6b919c7b
3 zmienionych plików z 21 dodań i 65 usunięć

Wyświetl plik

@ -1,24 +1 @@
{% extends "wagtailadmin/generic/form.html" %}
{% load i18n wagtailadmin_tags %}
{% block titletag %}{% trans "Add redirect" %}{% endblock %}
{% block content %}
{% trans "Add redirect" as add_red_str %}
{% include "wagtailadmin/shared/header.html" with title=add_red_str icon="redirect" %}
{% include "wagtailadmin/shared/non_field_errors.html" %}
<form action="{% url 'wagtailredirects:add' %}" method="POST" class="nice-padding" novalidate>
{% csrf_token %}
<ul class="fields">
{% for field in form.visible_fields %}
<li>{% formattedfield field %}</li>
{% endfor %}
</ul>
{% block footer %}
{{ block.super }}
{% endblock %}
</form>
{% endblock %}
{% extends "wagtailadmin/generic/create.html" %}

Wyświetl plik

@ -6,7 +6,7 @@ app_name = "wagtailredirects"
urlpatterns = [
path("", views.IndexView.as_view(), name="index"),
path("results/", views.IndexView.as_view(results_only=True), name="index_results"),
path("add/", views.add, name="add"),
path("add/", views.CreateView.as_view(), name="add"),
path("<int:redirect_id>/", views.EditView.as_view(), name="edit"),
path("<int:redirect_id>/delete/", views.delete, name="delete"),
path("import/", views.start_import, name="start_import"),

Wyświetl plik

@ -201,48 +201,27 @@ def delete(request, redirect_id):
)
@permission_checker.require("add")
def add(request):
if request.method == "POST":
form = RedirectForm(request.POST, request.FILES)
if form.is_valid():
with transaction.atomic():
theredirect = form.save()
log(instance=theredirect, action="wagtail.create")
class CreateView(generic.CreateView):
model = Redirect
form_class = RedirectForm
permission_policy = permission_policy
template_name = "wagtailredirects/add.html"
add_url_name = "wagtailredirects:add"
index_url_name = "wagtailredirects:index"
edit_url_name = "wagtailredirects:edit"
error_message = gettext_lazy("The redirect could not be created due to errors.")
header_icon = "redirect"
_show_breadcrumbs = True
purge_urls_from_cache(theredirect.old_links())
def get_success_message(self, instance):
return _("Redirect '%(redirect_title)s' added.") % {
"redirect_title": instance.title
}
messages.success(
request,
_("Redirect '%(redirect_title)s' added.")
% {"redirect_title": theredirect.title},
buttons=[
messages.button(
reverse("wagtailredirects:edit", args=(theredirect.id,)),
_("Edit"),
)
],
)
return redirect("wagtailredirects:index")
else:
messages.error(
request, _("The redirect could not be created due to errors.")
)
else:
form = RedirectForm()
return TemplateResponse(
request,
"wagtailredirects/add.html",
{
"form": form,
# Remove these when this view is refactored to a generic.CreateView subclass.
# Avoid defining new translatable strings.
"submit_button_label": generic.CreateView.submit_button_label,
"submit_button_active_label": generic.CreateView.submit_button_active_label,
"media": form.media,
},
)
def save_instance(self):
instance = super().save_instance()
purge_urls_from_cache(instance.old_links())
return instance
@permission_checker.require_any("add")