diff --git a/hypha/apply/determinations/admin.py b/hypha/apply/determinations/admin.py index c5f92b9a406a4e4630716f39a588d18eb24eba86..baaa4b8105381f952ee83dc9892f55a84b38d3ec 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 0000000000000000000000000000000000000000..345845c56c902f31387bd6d301ee66944d3de7b0 --- /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 3500756dc12ab7b4c9d86de3e94411e5e6910673..2c1ccc026fb7d78727f64fd64d4a85e1da2858d0 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 101ab8a624d027b88b1510a51352dbe1b97e4dcd..4de1d4eea307fcfdddaaf730ec6a16c74e2d0eee 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 0000000000000000000000000000000000000000..4589e69e8ce9fa06f075950baddc074aa879303c --- /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 f25676a321621081a724ab1073f2d4e984e096f0..eae4114eb78e7d99b3c65c99641b62f4894183dc 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