kopia lustrzana https://github.com/wagtail/wagtail
Defer validation when saving snippets as draft
rodzic
0745ae53da
commit
f649856cf4
wagtail/admin/views/generic
|
@ -17,6 +17,7 @@ from django.utils.translation import gettext as _
|
|||
|
||||
from wagtail import hooks
|
||||
from wagtail.admin import messages
|
||||
from wagtail.admin.forms.models import WagtailAdminModelForm
|
||||
from wagtail.admin.models import EditingSession
|
||||
from wagtail.admin.templatetags.wagtailadmin_tags import user_display_name
|
||||
from wagtail.admin.ui.editing_sessions import EditingSessionsModule
|
||||
|
@ -254,6 +255,11 @@ class CreateEditViewOptionalFeaturesMixin:
|
|||
self.lock = self.get_lock()
|
||||
self.locked_for_user = self.lock and self.lock.for_user(request.user)
|
||||
super().setup(request, *args, **kwargs)
|
||||
self.saving_as_draft = (
|
||||
self.draftstate_enabled
|
||||
and request.method == "POST"
|
||||
and self.action in ("create", "edit")
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def workflow(self):
|
||||
|
@ -502,7 +508,9 @@ class CreateEditViewOptionalFeaturesMixin:
|
|||
# Save revision if the model inherits from RevisionMixin
|
||||
self.new_revision = None
|
||||
if self.revision_enabled:
|
||||
self.new_revision = instance.save_revision(user=self.request.user)
|
||||
self.new_revision = instance.save_revision(
|
||||
user=self.request.user, clean=not self.saving_as_draft
|
||||
)
|
||||
|
||||
log(
|
||||
instance=instance,
|
||||
|
@ -735,8 +743,16 @@ class CreateEditViewOptionalFeaturesMixin:
|
|||
|
||||
def post(self, request, *args, **kwargs):
|
||||
form = self.get_form()
|
||||
|
||||
# Make sure object is not locked
|
||||
if not self.locked_for_user and form.is_valid():
|
||||
if self.locked_for_user:
|
||||
return self.form_invalid(form)
|
||||
|
||||
# If saving as draft, do not enforce full validation
|
||||
if self.saving_as_draft and isinstance(form, WagtailAdminModelForm):
|
||||
form.defer_required_fields()
|
||||
|
||||
if form.is_valid():
|
||||
return self.form_valid(form)
|
||||
else:
|
||||
return self.form_invalid(form)
|
||||
|
|
Ładowanie…
Reference in New Issue