From b4897b29e3e4ee69419681078edbc420f49c0123 Mon Sep 17 00:00:00 2001 From: sandeepsajan0 <sandeepsajan0@gmail.com> Date: Wed, 23 Mar 2022 12:45:34 +0530 Subject: [PATCH] Add custom error msg to review and determination forms --- hypha/apply/determinations/admin.py | 4 ++++ hypha/apply/determinations/admin_views.py | 17 +++++++++++++++++ hypha/apply/funds/admin_views.py | 16 ++++------------ hypha/apply/review/admin.py | 3 +++ hypha/apply/review/admin_views.py | 17 +++++++++++++++++ hypha/apply/utils/blocks.py | 10 ++++++++++ 6 files changed, 55 insertions(+), 12 deletions(-) create mode 100644 hypha/apply/determinations/admin_views.py create mode 100644 hypha/apply/review/admin_views.py diff --git a/hypha/apply/determinations/admin.py b/hypha/apply/determinations/admin.py index c5f92b9a4..baaa4b810 100644 --- a/hypha/apply/determinations/admin.py +++ b/hypha/apply/determinations/admin.py @@ -6,6 +6,8 @@ from hypha.apply.determinations.models import DeterminationForm from hypha.apply.review.admin_helpers import ButtonsWithClone from hypha.apply.utils.admin import ListRelatedMixin +from .admin_views import CreateDeterminationFormViewClass, EditDeterminationFormViewClass + class CloneView(CreateView, InstanceSpecificView): def __init__(self, *args, **kwargs): @@ -19,6 +21,8 @@ class DeterminationFormAdmin(ListRelatedMixin, ModelAdmin): list_display = ('name', 'used_by') button_helper_class = ButtonsWithClone clone_view_class = CloneView + create_view_class = CreateDeterminationFormViewClass + edit_view_class = EditDeterminationFormViewClass related_models = [ ('applicationbasedeterminationform', 'application'), diff --git a/hypha/apply/determinations/admin_views.py b/hypha/apply/determinations/admin_views.py new file mode 100644 index 000000000..345845c56 --- /dev/null +++ b/hypha/apply/determinations/admin_views.py @@ -0,0 +1,17 @@ +from wagtail.contrib.modeladmin.views import CreateView, EditView + +from hypha.apply.utils.blocks import show_admin_form_error_messages + + +class CreateDeterminationFormViewClass(CreateView): + + def form_invalid(self, form): + show_admin_form_error_messages(self.request, form) + return self.render_to_response(self.get_context_data(form=form)) + + +class EditDeterminationFormViewClass(EditView): + + def form_invalid(self, form): + show_admin_form_error_messages(self.request, form) + return self.render_to_response(self.get_context_data(form=form)) diff --git a/hypha/apply/funds/admin_views.py b/hypha/apply/funds/admin_views.py index 3500756dc..2c1ccc026 100644 --- a/hypha/apply/funds/admin_views.py +++ b/hypha/apply/funds/admin_views.py @@ -9,6 +9,8 @@ from wagtail.contrib.modeladmin.views import CreateView, EditView from wagtail.core import hooks from wagtail.core.models import Page +from hypha.apply.utils.blocks import show_admin_form_error_messages + def custom_admin_round_copy_view(request, page): # Custom view to handle copied Round pages. @@ -100,22 +102,12 @@ class CopyApplicationFormViewClass(CreateView): class CreateApplicationFormViewClass(CreateView): def form_invalid(self, form): - for err in form.errors.values(): - if isinstance(err, list): - for form_field_error in err: - messages.error(self.request, form_field_error) - else: - messages.error(self.request, err.as_text()) + show_admin_form_error_messages(self.request, form) return self.render_to_response(self.get_context_data(form=form)) class EditApplicationFormViewClass(EditView): def form_invalid(self, form): - for err in form.errors.values(): - if isinstance(err, list): - for form_field_error in err: - messages.error(self.request, form_field_error) - else: - messages.error(self.request, err.as_text()) + show_admin_form_error_messages(self.request, form) return self.render_to_response(self.get_context_data(form=form)) diff --git a/hypha/apply/review/admin.py b/hypha/apply/review/admin.py index 101ab8a62..4de1d4eea 100644 --- a/hypha/apply/review/admin.py +++ b/hypha/apply/review/admin.py @@ -6,6 +6,7 @@ from hypha.apply.review.models import ReviewForm from hypha.apply.utils.admin import ListRelatedMixin from .admin_helpers import ButtonsWithClone +from .admin_views import CreateReviewFormViewClass, EditReviewFormViewClass class CloneView(CreateView, InstanceSpecificView): @@ -20,6 +21,8 @@ class ReviewFormAdmin(ListRelatedMixin, ModelAdmin): list_display = ('name', 'used_by') button_helper_class = ButtonsWithClone clone_view_class = CloneView + create_view_class = CreateReviewFormViewClass + edit_view_class = EditReviewFormViewClass related_models = [ ('applicationbasereviewform', 'application'), diff --git a/hypha/apply/review/admin_views.py b/hypha/apply/review/admin_views.py new file mode 100644 index 000000000..4589e69e8 --- /dev/null +++ b/hypha/apply/review/admin_views.py @@ -0,0 +1,17 @@ +from wagtail.contrib.modeladmin.views import CreateView, EditView + +from hypha.apply.utils.blocks import show_admin_form_error_messages + + +class CreateReviewFormViewClass(CreateView): + + def form_invalid(self, form): + show_admin_form_error_messages(self.request, form) + return self.render_to_response(self.get_context_data(form=form)) + + +class EditReviewFormViewClass(EditView): + + def form_invalid(self, form): + show_admin_form_error_messages(self.request, form) + return self.render_to_response(self.get_context_data(form=form)) diff --git a/hypha/apply/utils/blocks.py b/hypha/apply/utils/blocks.py index f25676a32..eae4114eb 100644 --- a/hypha/apply/utils/blocks.py +++ b/hypha/apply/utils/blocks.py @@ -6,6 +6,7 @@ from django.forms.utils import ErrorList from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ from pagedown.widgets import PagedownWidget +from wagtail.admin import messages from wagtail.core.blocks import StaticBlock, StreamBlock, StreamValue from hypha.apply.stream_forms.blocks import ( @@ -32,6 +33,15 @@ def nice_field_name(name): return name.title().replace('_', ' ') +def show_admin_form_error_messages(request, form): + for err in form.errors.values(): + if isinstance(err, list): + for form_field_error in err: + messages.error(request, form_field_error) + else: + messages.error(request, err.as_text()) + + class RichTextFieldBlock(TextFieldBlock): widget = RICH_TEXT_WIDGET -- GitLab