Prechádzať zdrojové kódy

Refactor redirects create view to use generic CreateView and template

Sage Abdullah 4 mesiacov pred
rodič
commit
3f6b919c7b

+ 1 - 24
wagtail/contrib/redirects/templates/wagtailredirects/add.html

@@ -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" %}

+ 1 - 1
wagtail/contrib/redirects/urls.py

@@ -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"),

+ 20 - 41
wagtail/contrib/redirects/views.py

@@ -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")
-
-            purge_urls_from_cache(theredirect.old_links())
-
-            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()
+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
 
-    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 get_success_message(self, instance):
+        return _("Redirect '%(redirect_title)s' added.") % {
+            "redirect_title": instance.title
+        }
+
+    def save_instance(self):
+        instance = super().save_instance()
+        purge_urls_from_cache(instance.old_links())
+        return instance
 
 
 @permission_checker.require_any("add")