В администраторе фляги добавьте запрос подтверждения при сохранении новой записи - PullRequest
0 голосов
/ 07 ноября 2019

У наших пользователей есть обычные действия CRUD на различных страницах фляги.

Для одного сценария действие Создать может быть интенсивным процессом с выполнением большого количества логики домена, а иногда элементы создавались случайно.

Теперь наши пользователи хотели бы добавить простую подсказку « Вы уверены, что хотите создать эту учетную запись? », когда они нажимают кнопку « Сохранить ». Следующий ответ будет просто Да и Нет кнопки.

Не понятно, как добавить это - мы упускаем что-то очевидное?

1 Ответ

0 голосов
/ 08 ноября 2019

Переопределите шаблон создания Flask-Admin для конкретного представления и добавьте подтверждение JavaScript в событие onSubmit формы. Добавление подтверждения к событию отправки обрабатывает три кнопки отправки;«Сохранить», «Сохранить и добавить еще» и «Сохранить и продолжить».

Например:

class UserView(ModelView):
    create_template = 'create_user.html'
    # ...

В папке / templates / admin добавьте html-файл 'create_user.html':

{% extends 'admin/model/create.html' %}

{% block tail %}
    {{ super() }}
    <script src="{{ admin_static.url(filename='admin/js/helpers.js', v='1.0.0') }}" type="text/javascript"></script>
    <script>
        (function ($) {
            $('form:first').on('submit', function() {
                return faHelpers.safeConfirm('{{ _gettext('Are you sure you want to save this record?') }}');
            });
        })(jQuery);
    </script>
{% endblock %}

Обратите внимание, что во Flask-Admin 1.5.3 есть ошибка , файл helpers.js отсутствует в дистрибутиве, и вам нужно будет добавить функцию safeConfirm.

{% extends 'admin/model/create.html' %}

{% block tail %}
    {{ super() }}
    <script>
        (function ($) {

            function safeConfirm(msg) {
                try {
                    var isconfirmed = confirm(msg);
                    if (isconfirmed == true) {
                        return true;
                    }
                    else {
                        return false;
                    }
                }
                catch (err) {
                    return false;
                }
            }

            $('form:first').on('submit', function () {    
                return safeConfirm('{{ _gettext('Are you sure you want to save this record?') }}');
            });

        })(jQuery);

    </script>
{% endblock %}
...