kopia lustrzana https://github.com/wagtail/wagtail
Split save/publish/submit actions into their own methods
rodzic
4fd6410094
commit
6f8b2eaa99
|
@ -104,22 +104,43 @@ class CreateView(TemplateResponseMixin, ContextMixin, View):
|
||||||
return self.form_invalid(self.form)
|
return self.form_invalid(self.form)
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
|
if bool(self.request.POST.get('action-publish')) and self.parent_page_perms.can_publish_subpage():
|
||||||
|
return self.publish_action()
|
||||||
|
elif bool(self.request.POST.get('action-submit')) and self.parent_page.has_workflow:
|
||||||
|
return self.submit_action()
|
||||||
|
else:
|
||||||
|
return self.save_action()
|
||||||
|
|
||||||
|
def save_action(self):
|
||||||
self.page = self.form.save(commit=False)
|
self.page = self.form.save(commit=False)
|
||||||
|
|
||||||
is_publishing = bool(self.request.POST.get('action-publish')) and self.parent_page_perms.can_publish_subpage()
|
|
||||||
is_submitting = bool(self.request.POST.get('action-submit')) and self.parent_page.has_workflow
|
|
||||||
|
|
||||||
if not is_publishing:
|
|
||||||
self.page.live = False
|
self.page.live = False
|
||||||
|
|
||||||
# Save page
|
# Save page
|
||||||
self.parent_page.add_child(instance=self.page)
|
self.parent_page.add_child(instance=self.page)
|
||||||
|
|
||||||
|
# Save revision
|
||||||
|
self.page.save_revision(user=self.request.user, log_action=False)
|
||||||
|
|
||||||
|
# Notification
|
||||||
|
messages.success(self.request, _("Page '{0}' created.").format(self.page.get_admin_display_title()))
|
||||||
|
|
||||||
|
response = self.run_hook('after_create_page', self.request, self.page)
|
||||||
|
if response:
|
||||||
|
return response
|
||||||
|
|
||||||
|
# remain on edit page for further edits
|
||||||
|
return self.redirect_and_remain()
|
||||||
|
|
||||||
|
def publish_action(self):
|
||||||
|
self.page = self.form.save(commit=False)
|
||||||
|
|
||||||
|
# Save page
|
||||||
|
self.parent_page.add_child(instance=self.page)
|
||||||
|
|
||||||
# Save revision
|
# Save revision
|
||||||
revision = self.page.save_revision(user=self.request.user, log_action=False)
|
revision = self.page.save_revision(user=self.request.user, log_action=False)
|
||||||
|
|
||||||
# Publish
|
# Publish
|
||||||
if is_publishing:
|
|
||||||
response = self.run_hook('before_publish_page', self.request, self.page)
|
response = self.run_hook('before_publish_page', self.request, self.page)
|
||||||
if response:
|
if response:
|
||||||
return response
|
return response
|
||||||
|
@ -130,13 +151,7 @@ class CreateView(TemplateResponseMixin, ContextMixin, View):
|
||||||
if response:
|
if response:
|
||||||
return response
|
return response
|
||||||
|
|
||||||
# Submit
|
# Notification
|
||||||
if is_submitting:
|
|
||||||
workflow = self.page.get_workflow()
|
|
||||||
workflow.start(self.page, self.request.user)
|
|
||||||
|
|
||||||
# Notifications
|
|
||||||
if is_publishing:
|
|
||||||
if self.page.go_live_at and self.page.go_live_at > timezone.now():
|
if self.page.go_live_at and self.page.go_live_at > timezone.now():
|
||||||
messages.success(
|
messages.success(
|
||||||
self.request,
|
self.request,
|
||||||
|
@ -156,7 +171,27 @@ class CreateView(TemplateResponseMixin, ContextMixin, View):
|
||||||
buttons=buttons
|
buttons=buttons
|
||||||
)
|
)
|
||||||
|
|
||||||
elif is_submitting:
|
response = self.run_hook('after_create_page', self.request, self.page)
|
||||||
|
if response:
|
||||||
|
return response
|
||||||
|
|
||||||
|
return self.redirect_away()
|
||||||
|
|
||||||
|
def submit_action(self):
|
||||||
|
self.page = self.form.save(commit=False)
|
||||||
|
self.page.live = False
|
||||||
|
|
||||||
|
# Save page
|
||||||
|
self.parent_page.add_child(instance=self.page)
|
||||||
|
|
||||||
|
# Save revision
|
||||||
|
self.page.save_revision(user=self.request.user, log_action=False)
|
||||||
|
|
||||||
|
# Submit
|
||||||
|
workflow = self.page.get_workflow()
|
||||||
|
workflow.start(self.page, self.request.user)
|
||||||
|
|
||||||
|
# Notification
|
||||||
buttons = []
|
buttons = []
|
||||||
if self.page.is_previewable():
|
if self.page.is_previewable():
|
||||||
buttons.append(
|
buttons.append(
|
||||||
|
@ -179,19 +214,12 @@ class CreateView(TemplateResponseMixin, ContextMixin, View):
|
||||||
_("Page '{0}' created and submitted for moderation.").format(self.page.get_admin_display_title()),
|
_("Page '{0}' created and submitted for moderation.").format(self.page.get_admin_display_title()),
|
||||||
buttons=buttons
|
buttons=buttons
|
||||||
)
|
)
|
||||||
else:
|
|
||||||
messages.success(self.request, _("Page '{0}' created.").format(self.page.get_admin_display_title()))
|
|
||||||
|
|
||||||
response = self.run_hook('after_create_page', self.request, self.page)
|
response = self.run_hook('after_create_page', self.request, self.page)
|
||||||
if response:
|
if response:
|
||||||
return response
|
return response
|
||||||
|
|
||||||
if is_publishing or is_submitting:
|
|
||||||
# we're done here
|
|
||||||
return self.redirect_away()
|
return self.redirect_away()
|
||||||
else:
|
|
||||||
# Just saving - remain on edit page for further edits
|
|
||||||
return self.redirect_and_remain()
|
|
||||||
|
|
||||||
def redirect_away(self):
|
def redirect_away(self):
|
||||||
if self.next_url:
|
if self.next_url:
|
||||||
|
|
Ładowanie…
Reference in New Issue