ttoolly


Namettoolly JSON
Version 0.37.18 PyPI version JSON
download
home_page
SummaryDjango test tools
upload_time2023-03-24 07:09:20
maintainer
docs_urlNone
authorPolina Efremova
requires_python
license
keywords django testing test tool
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ttoolly
=======


.. image:: https://travis-ci.org/pefremova/ttoolly.svg?branch=django1.10
   :target: https://travis-ci.org/pefremova/ttoolly
   :alt: Build Status
 
.. image:: https://coveralls.io/repos/github/pefremova/ttoolly/badge.svg?branch=django1.10
   :target: https://coveralls.io/github/pefremova/ttoolly?branch=django1.10
   :alt: Coverage Status


Django test tools. Django >= 1.8

Наборы стандартных проверок для Django-форм

Пример теста `tests/tests_for_project.py <http://tests/tests_for_project.py>`_

Описание тестовых классов и их параметров для описания форм
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

**GlobalTestMixIn**

.. list-table::
   :header-rows: 1

   * - название поля
     - значение по умолчанию
     - описание
     - пример использования
   * - all_unique
     - None
     - не использовать
     - 
   * - choice_fields_values
     - {}
     - варианты значений для select, multiselect полей
     - choice_fields_values = {'field1': (value1, value2)}
   * - custom_error_messages
     - {}
     - Кастомные сообщения для определенных полей
     - custom_error_messages = {'field1': {message_type: u"Текст сообщения об ошибке."}}
   * - errors
     - []
     - не переопределять (хранит значения ошибок для текущего теста)
     - 
   * - files
     - []
     - список файлов в текущем тесте (используется для закрытия файлов в конце каждого теста)
     - f = open(filename); self.fields.append(f)
   * - maxDiff
     - None
     - unittest.TestCase.maxDiff
     - 
   * - non_field_error_key
     - '__all__'
     - поле, в котором возвращаются общие (не привязанные к конкретному полю) для формы ошибки
     - 
   * - unique_fields
     - None
     - список уникальных полей
     - unique_fields = ('field1', ('field2', 'field3'), 'field4')
   * - unique_with_case
     - ()
     - Список уникальных полей, для которых при проверке униклаьности учитывается регистр
     - unique_with_case = ('field1', )


**FormTestMixIn(GlobalTestMixIn)**

.. list-table::
   :header-rows: 1

   * - название поля
     - значение по умолчанию
     - описание
     - пример использования
     - включает проверки
   * - obj
     - None
     - модель, для котороый выполняются все проверки. Является необходимым для запуска любого теста
     - 
     - 
   * - additional_params
     - {}
     - Дополнительные параметры для всех выполняющихся в тестах запросов
     - additional_params = {'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'}
     - 
   * - all_fields
     - default_params.keys()
     - Список всех полей, которые должны присутствовать на форме.
     - all_fields = ('field1', 'field2')
     - Проверка наличия полей на форме. Все поля заполнены (исключаются указанные в one_of_fields)
   * - all_fields_add
     - all_fields or default_params_add.keys()
     - Список всех полей, которые должны присутствовать на форме создания
     - all_fields_add = ('field1', 'field2')
     - 
   * - all_fields_edit
     - all_fields or default_params_edit.keys()
     - Список всех полей, которые должны присутствовать на форме редактирования
     - all_fields_edit = ('field1', 'field2')
     - 
   * - check_null
     - None
     - Включать ли проверки на NULL байт?
     - check_null = True
     - NULL байт в строковых полях и именах файлов
   * - check_null_file_positive
     - False, если установлено check_null
     -
     - check_null_file_positive = True
     - NULL байт вырезается из имен файлов при сохранении
   * - check_null_file_negative
     - True, если установлено check_null
     -
     - check_null_file_negative = True
     - NULL байт в именах файлов. Ожидается сообщение об ошибке
   * - check_null_str_positive
     - False, если установлено check_null
     -
     - check_null_str_positive = True
     - NULL байт вырезается из строковых полей при сохранении
   * - check_null_str_negative
     - True, если установлено check_null
     -
     - check_null_str_negative = True
     - NULL байт в строковых полях. Ожидается сообщение об ошибке
   * - choice_fields
     - []
     - Список select полей
     - choice_fields = ('field1', 'field2')
     - Невалидные значения в полях (строка, число)
   * - choice_fields_add
     - choice_fields
     - Список select полей на форме создания
     - choice_fields_add = ('field1', 'field2')
     - 
   * - choice_fields_edit
     - choice_fields
     - Список select полей на форме редактирования
     - choice_fields_edit = ('field1', 'field2')
     - 
   * - choice_fields_with_value_in_error
     - []
     - Список select полей, при вводе невалидного значения в которых сообщение об ошибке содержит введенное значение
     - choice_fields_with_value_in_error = ('field1', 'field2')
     - Невалидные значения в полях (строка, число)
   * - choice_fields_add_with_value_in_error
     - choice_fields_with_value_in_error
     - Список select полей на странице создания, при вводе невалидного значения в которых сообщение об ошибке содержит введенное значение
     - choice_fields_add_with_value_in_error = ('field1', 'field2')
     - 
   * - choice_fields_edit_with_value_in_error
     - choice_fields_with_value_in_error
     - Список select полей на странице создания, при вводе невалидного значения в которых сообщение об ошибке содержит введенное значение
     - choice_fields_edit_with_value_in_error = ('field1', 'field2')
     - 
   * - default_params
     - {}
     - Параметры по умолчанию, которые используются при создании/редактировании объекта
     - default_params = {'field1': value1, 'field2: value2}
     - 
   * - default_params_add
     - default_params
     - Параметры по умолчанию, которые используются при создании объекта
     - default_params_add = {'field1': value1, 'field2: value2}
     - 
   * - default_params_edit
     - default_params
     - Параметры по умолчанию, которые используются при редактировании объекта
     - default_params_edit = {'field1': value1, 'field2: value2}
     -
   * - date_fields
     - Ключи из default_params_add, default_params_edit, значения из all_fields_add, all_fields_edit, содержащие в названии 'date'
     - Названия полей, содержащих даты
     - date_fields = ('field1', 'field2')
     -
   * - datetime_fields
     - ()
     - Названия полей, содержащих datetime
     - datetime_fields = ('field1', 'field2')
     -
   * - digital_fields
     - None
     - Названия полей, содержащих числа
     - digital_fields = ('field1', 'field2')
     - Позитивные: Максимальные, минимальные числовые значения. Негативные: Значения больше максимального, меньше минимального, строки
   * - digital_fields_add
     - digital_fields или default_params_add.keys(), для которых значения являются числами и не указаны в choice_fields_add, choice_fields_add_with_value_in_error
     - Названия полей на форме создания, содержащих числа
     - digital_fields_add = ('field1', 'field2')
     - 
   * - digital_fields_edit
     - digital_fields или default_params_edit.keys(), для которых значения являются числами и не указаны в choice_fields_edit, choice_fields_edit_with_value_in_error
     - Названия полей на форме редактирования, содержащих числа
     - digital_fields_edit = ('field1', 'field2')
     - 
   * - disabled_fields
     - None
     - Названия полей, выводящихся на форме, но недоступных для редактирования
     - disabled_fields = ('field1', 'field2')
     - Наличие полей на форме. Попытка передать значения в недоступных полях при сохранении
   * - disabled_fields_add
     - disabled_fields
     - Названия полей, выводящихся на форме создания, но недоступных для редактирования
     - disabled_fields_add = ('field1', 'field2')
     - 
   * - disabled_fields_edit
     - disabled_fields
     - Названия полей, выводящихся на форме редактирования, но недоступных для редактирования
     - disabled_fields_edit = ('field1', 'field2')
     - 
   * - email_fields
     - None
     - Названия полей для ввода email
     - email_fields = ('field1', 'field2')
     - Невалидные (строка, не являющаяся email'ом) значения в полях
   * - email_fields_add
     - email_fields или ключи из default_params_add, содержащие в названии 'email'
     - Названия полей для ввода email на форме создания
     - email_fields_add = ('field1', 'field2')
     - 
   * - email_fields_edit
     - email_fields или ключи из default_params_edit, содержащие в названии 'email'
     - Названия полей для ввода email на форме редактирования
     - email_fields_edit = ('field1', 'field2')
     - 
   * - exclude_from_check
     - []
     - Названия полей, которые нужно исключить из проверки значений во всех тестах. Актуально, например, для полей, содержащих дату обновления объекта
     - exclude_from_check = ('field1', 'field2')
     - 
   * - exclude_from_check_add
     - exclude_from_check
     - Названия полей, которые нужно исключить из проверки значений в тестах создания объекта
     - exclude_from_check_add = ('field1', 'field2')
     - 
   * - exclude_from_check_edit
     - exclude_from_check
     - Названия полей, которые нужно исключить из проверки значений в тестах редактирования объекта
     - exclude_from_check_edit = ('field1', 'field2')
     - 
   * - fields_helptext
     - None
     - Хелптекст в полях формы
     - ``fields_helptext = {'url': 'For example "http://example.com/test"'}``
     - Проверка наличия хелптекста в соответствующих полях формы
   * - fields_helptext_add
     - fields_helptext
     - Хелптекст в полях формы
     - ``fields_helptext_add = {'url': 'For example "http://example.com/test"'}``
     - Проверка наличия хелптекста в соответствующих полях формы создания
   * - fields_helptext_edit
     - fields_helptext
     - Хелптекст в полях формы
     - ``fields_helptext_edit = {'url': 'For example "http://example.com/test"'}``
     - Проверка наличия хелптекста в соответствующих полях формы редактирования
   * - file_fields_params
     - {}
     - Параметры файловых полей
     - ``file_fields_params = {'field_name': {'extensions': ('jpg', 'txt'), 'max_count': 3, 'one_max_size': '3Mb', 'wrong_extensions': ('rar', 'zip'), 'min_width': 200, 'min_height': 100, 'max_width': 300, 'max_height': 200}}``
     - 
   * - file_fields_params_add
     - file_fields_params
     - Параметры файловых полей на форме создания
     - 
     -
   * - file_fields_params_edit
     - file_fields_params
     - Параметры файловых полей на форме редактирования
     -
     - 
   * - filter_params
     - None
     - Названия параметров для фильтрации списка объектов
     - filter_params = ('filter_name1', ('filter_name2', 'any_valid_value'), )
     - Для тестов должен быть задан также url_list. Проверка с пустым, либо указанным в параметрах значением. Проверка со случайными значениями. В любом случае ожидается ответ 200
   * - hidden_fields
     - None
     - Названия полей, выводящихся на форме в скрытом виде
     - hidden_fields = ('field1', 'field2')
     - Проверка наличия полей на форме
   * - hidden_fields_add
     - hidden_fields
     - Названия полей, выводящихся на форме создания в скрытом виде
     - hidden_fields_add = ('field1', 'field2')
     - 
   * - hidden_fields_edit
     - hidden_fields
     - Названия полей, выводящихся на форме редактирования в скрытом виде
     - hidden_fields_edit = ('field1', 'field2')
     - 
   * - int_fields
     - None
     - Названия полей, содержащих целые числа
     - int_fields = ('field1', 'field2')
     - см. digital_fields
   * - int_fields_add
     - int_fields или поля из digital_fields_add, для которых значения полей в default_params_add целочисленные
     - Названия полей на форме создания, содержащих целые числа
     - int_fields_add = ('field1', 'field2')
     - 
   * - int_fields_edit
     - int_fields или поля из digital_fields_edit, для которых значения полей в default_params_edit целочисленные
     - Названия полей на форме редактирования, содержащих целые числа
     - int_fields_edit = ('field1', 'field2')
     - 
   * - intervals
     - None
     - Существующие на форме временные интервалы
     - ``intervals = (('field1', field2'), ('field3, 'field4', '>='))``
     - Окончание интервала больше, меньше, равно началу интервала
   * - max_blocks
     - None
     - Словарь количества строка в инлайн блоках
     - max_blocks = {'inline_block_1': 10}
     - Максимальное число строк, число строк больше максимального
   * - max_fields_length
     - {}
     - Словарь максимальной допустимой длины значений (для текстовых) или максимального допустимого значения (для числовых) в полях
     - max_fields_length = {'string_field_name': 100, 'digital_field_name': 99999}
     - Максимальные значения (для файловых полей в тестах редактирования сохранение и проверка выполняется дважды). Значения больше максимальных.
   * - min_fields_length
     - {}
     - Словарь минимальной допустимой длины значений (для текстовых) или минимального допустимого значения (для числовых) в полях
     - min_fields_length = {'string_field_name': 5, 'digital_field_name': -1}
     - Минимальные значения. Значения меньше минимальных
   * - multiselect_fields
     - None
     - Список multiselect полей
     - multiselect_fields = ('field1', 'field2')
     - Невалидные значения (число)
   * - multiselect_fields_add
     - multiselect_fields или default_params_add.keys() если значения для них являются списками
     - Список multiselect полей на форме создания
     - multiselect_fields_add = ('field1', 'field2')
     - 
   * - multiselect_fields_edit
     - multiselect_fields или default_params_edit.keys() если значения для них являются списками
     - Список multiselect полей на форме редактирования
     - multiselect_fields_edit = ('field1', 'field2')
     - 
   * - not_empty_fields
     - None
     - Обязательные для заполнения поля
     - not_empty_fields = ('field1', ('field2', 'field3'))
     - Заполнены только обязательные поля. Одно из обязательных полей (выполняется для всех) не заполнено.
   * - not_empty_fields_add
     - not_empty_fields или required_fields_add или default_params_add.keys()
     - Обязательные для заполнения поля на форме создания
     - not_empty_fields_add = ('field1', ('field2', 'field3'))
     - 
   * - not_empty_fields_edit
     - not_empty_fields или required_fields_edit или default_params_edit.keys()
     - Обязательные для заполнения поля на форме редактирования
     - not_empty_fields_edit = ('field1', ('field2', 'field3'))
     - 
   * - only_if_value
     - None
     - Поля, доступные для в зависимости от значения в другом поле
     - only_if_value = {'field1': {'field2': 'value1'}}
     - Указано значение, включающее поле. Указано другое значение, поле заполнено.
   * - one_of_fields
     - None
     - Список наборов полей, которые могут быть заполнены только отдельно друг от друга
     - one_of_fields = (('field1', 'field2'), ('field1', 'field3', 'field4'))
     - Заполнено одно из группы. Одновременно заполненные поля (если связанных полей больше трех, разбиваются также попарно)
   * - one_of_fields_add
     - one_of_fields
     - Список наборов полей, которые могут быть заполнены только отдельно друг от друга на форме создания
     - one_of_fields_add = (('field1', 'field2'), ('field1', 'field3', 'field4'))
     - 
   * - one_of_fields_edit
     - one_of_fields
     - Список наборов полей, которые могут быть заполнены только отдельно друг от друга на форме редактирования
     - one_of_fields_edit = (('field1', 'field2'), ('field1', 'field3', 'field4'))
     - 
   * - required_fields
     - None
     - Поля, которые должны присутствовать в запросе.
     - required_fields = ('field1', ('field2', 'field3'))
     - Заполнены только обязательные поля. Одно из обязательных полей (выполняется для всех) отсутствует
   * - required_fields_add
     - required_fields или default_params_add.keys()
     - Обязательные для заполнения поля на форме создания
     - required_fields_add = ('field1', ('field2', 'field3'))
     - 
   * - required_fields_edit
     - required_fields или default_params_edit.keys()
     - Обязательные для заполнения поля на форме редактирования
     - required_fields_edit = ('field1', ('field2', 'field3'))
     - 
   * - required_if
     - None
     - Поля, обязательные для заполнения, если заполнено другое поле
     - ``required_if = {'field1': 'field2', 'field2': ('field1', 'field3')}``
     - Заполнено основное, но не заполнено зависимое. Не заполнены основное и зависимое. Заполнено и основное, и зависимое.
   * - required_if_value
     - None
     - Поля, обязательные для заполнения в зависимости от значения в другом поле
     - required_if_value = {'field1': {'field2': 'value1'}}
     - Указано значение, включающее обязательность: поле заполнено, поле не заполнено. Указано другое значение: поле заполнено, поле не заполнено. 
   * - required_if_add
     - required_if или {}
     - Поля, обязательные для заполнения, если заполнено другое поле на форме создания
     - ``required_if_add = {'field1': 'field2', 'field2': ('field1', 'field3')}``
     - 
   * - required_if_edit
     - required_if или {}
     - Поля, обязательные для заполнения, если заполнено другое поле на форме редактирования
     - ``required_if_edit = {'field1': 'field2', 'field2': ('field1', 'field3')}``
     - 
   * - status_code_error
     - 200
     - Статус ответа при наличии ошибок
     -
     -
   * - status_code_not_exist
     - 404
     - Статус ответа при манипуляциях с несуществующим объектом
     -
     -
   * - status_code_success_add
     - 200
     - Статус ответа при успешном создании объекта
     -
     -
   * - status_code_success_edit
     - 200
     - Статус ответа при успешном редактировании объекта
     -
     -
   * - unique_fields
     - None
     - список уникальных полей
     - unique_fields = ('field1', ('field2', 'field3'), 'field4')
     - Объект с такими полями уже существует. Для текстовых полей проверяется также в uppercase
   * - unique_fields_add
     - unique_fields (учитывается наличие в all_fields_add)
     - Cписок уникальных полей на форме создания
     - unique_fields_add = ('field1', ('field2', 'field3'), 'field4')
     - 
   * - unique_fields_edit
     - unique_fields (учитывается наличие в all_fields_edit)
     - Cписок уникальных полей на форме редактирования
     - unique_fields_edit = ('field1', ('field2', 'field3'), 'field4')
     - 
   * - url_list
     - 
     - URL, на котором находится список объектов, например, в админке. Включает все тесты, связанные со списком
     - url_list = 'modelname:url_name' или url_list = '/path/to/list/'
     - 
   * - with_captcha
     - Наличие поля 'captcha' в all_fields или в all_fields_add или в all_fields_edit
     - Используется ли капча на форме. Если True, во всех тестах отправляемые параметры дополняются полями капчи
     - 
     -


*file_fields_params*

.. list-table::
   :header-rows: 1

   * - название поля
     - описание
     - включает проверки
   * - extensions
     - разрешенные расширения
     - Все валидные расширения. Невалидные расширения.
   * - wrong_extensions
     - дополнительные невалидные расширения
     - Добавляет значения для проверки в тесте невалидных расширений
   * - max_count
     - максимальное количество файлов (для полей с множественным выбором файлов)
     - Максимальное число файлов. Число файлов больше максимального
   * - one_max_size
     - максимальный размер файла (одного файла для полей с множественным выбором файлов)
     - Максимальный размер файла. Размер файла больше максимального
   * - min_width
     - минимальная ширина изображения
     - Изображение с минимальной шириной. Изображение с шириной меньше минимальной
   * - min_height
     - минимальная высота изображения
     - Изображение с минимальной высотой. Изображение с высотой меньше минимальной
   * - max_width
     - максимальная ширина изображения
     - Изображение с максимальной шириной. Изображение с шириной меньше максимальной
   * - max_height
     - максимальная высота изображения
     - Изображение с максимальной высотой. Изображение с высотой меньше максимальной


*custom_error_messages*
(То же используется в settings.ERROR_MESSAGES)

.. list-table::
   :header-rows: 1

   * - название
     - описание
   * - required
     - * Не заполнено обязательное поле 
       * Отсутствует обязательное поле
   * - without_required
     - Отсутствует обязательное поле
   * - empty_required
     - Не заполнено обязательное поле
   * - max_length
     - * Превышена максимальная длина текста в поле 
       * Превышено максимальное значение в числовом поле 
       * Превышена максимальная длина имени файла
   * - max_length_digital
     - Превышено максимальное значение в числовом поле
   * - max_length_file
     - Превышена максимальная длина имени файла
   * - min_length
     - * Длина текста в поле меньше минимальной
       * Числовое значение меньше минимального
   * - min_length_digital
     - Числовое значение меньше минимального
   * - wrong_value
     - В селект/мультиселект поле указано невалидное значение
   * - wrong_value_int
     - В целочисленном поле указано не целое число
   * - wrong_value_digital
     - В числовом поле указано не число
   * - wrong_value_email
     - В поле адреса электронной почты указано невалидное значение
   * - unique
     - Объект с указанными уникальными параметрами уже существует
   * - delete_not_exists
     - Удаляемый объект не существует
   * - recovery_not_exists
     - Восстанавливаемый из корзины объект не существует
   * - empty_file
     - Пустой файл
   * - max_count_file
     - В поле со множественной загрузкой загружено больше допустимого количества файлов
   * - max_size_file
     - Превышен максимальный размер файла
   * - max_sum_size_file
     - В поле со множественной загрузкой файлов превышен допустимый суммарный размер файлов
   * - wrong_extension
     - Загружен файл с недопустимым расширением
   * - min_dimensions
     - Размеры загруженного изображения меньше, чем минимальные допустимые
   * - one_of
     - Поля, которые могут быть заполнены только по отдельности, заполнены вместе
   * - max_block_count
     - Превышено максимальное число инлайн-полей в блоке
   * - not_exist
     - Объект не существует (используется для проверки message в тестах редактирования и удаления)


**FormAddTestMixIn(FormTestMixIn)**

.. list-table::
   :header-rows: 1

   * - название поля
     - значение по умолчанию
     - описание
     - пример использования
   * - url_add
     - ''
     - URL, по которому добавляются объекты. Включает все тесты на добавление
     - url_add = 'modelname:url_name_add' или url_add = '/path/to/add/'


**FormEditTestMixIn(FormTestMixIn)**

.. list-table::
   :header-rows: 1

   * - название поля
     - значение по умолчанию
     - описание
     - пример использования
   * - second_save_available
     - True
     - Доступно ли повторное сохранение объекта при редактировании. Позволяет выключить проверки повторного сохранения, если после редактирования объект меняет статус или по другим причинам становится нередактируемым
     - second_save_available = False
   * - url_edit
     - ''
     - URL, по которому редактируются объекты. Включает все тесты на редактирование
     - url_edit = 'modelname:url_name_change' или url_edit = '/path/to/edit/1/' (в этом случае по умолчанию для редактирования будет браться объект с pk=1)


**FormDeleteTestMixIn(FormTestMixIn)**

.. list-table::
   :header-rows: 1

   * - название поля
     - значение по умолчанию
     - описание
     - пример использования
   * - url_delete
     - ''
     - URL, по которому удаляются объекты
     - url_delete = 'modelname:url_name_delete' или url_delete = '/path/to/delete/1/'


**FormRemoveTestMixIn(FormTestMixIn)**

Тесты для объектов, удаление которых происходит в корзину

.. list-table::
   :header-rows: 1

   * - название поля
     - значение по умолчанию
     - описание
     - пример использования
   * - url_delete
     - ''
     - URL, по которому удаляются объекты
     - url_delete = 'modelname:url_name_remove' или url_delete = '/path/to/remove/1/'
   * - url_recovery
     - ''
     - URL, по которому выполняется восстановление объекта
     - url_recovery = 'modelname:url_name_recovery' или url_recovery = '/path/to/recovery/1/'
   * - url_edit_in_trash
     - ''
     - URL, по которому открывается страница редактирования объекта в корзине
     - url_edit_in_trash = 'modelname:url_name_trash_edit' или url_edit_in_trash = '/path/to/trash/edit/1/'


**ChangePasswordMixIn(GlobalTestMixIn, LoginMixIn)**

Тесты смены пароля пользователя

.. list-table::
   :header-rows: 1

   * - название поля
     - значение по умолчанию
     - описание
     - пример использования
   * - current_password
     - 'qwerty'
     - Пароль редактируемого пользователя
     - current_password = 'qwerty'
   * - field_old_password
     - None
     - Поле для ввода старого пароля
     - field_old_password = 'old_password'
   * - field_password
     - None
     - Поле для ввода нового пароля
     - field_password = 'password1'
   * - field_password_repeat
     - None
     - Поле для ввода подтверждения нового пароля
     - field_password_repeat = 'password2'
   * - password_max_length
     - 128
     - Максимальная допустимая длина пароля
     - password_max_length = 128
   * - password_min_length
     - 6
     - Минимальная допустимая длина пароля
     - password_min_length = 6
   * - password_params
     - default_params или {field_old_password: current_password, field_password: some_new_value, field_password_repeat: some_new_value}
     - Параметры по умолчанию, которые используются для смены пароля
     - password_params = {'password1': 'qwe123', 'password2': 'qwe123'}
   * - obj
     - None
     - Модель пользователя
     - obj = User
   * - password_positive_values
     - [get_randname(10, 'w') + str(randint(0, 9)), str(randint(0, 9)) + get_randname(10, 'w'), get_randname(10, 'w').upper() + str(randint(0, 9)), ]
     - Допустимые значения для пароля
     - password_positive_values = ['qwe+', 'qwe*', 'QwE1']
   * - password_similar_fields
     - None
     - Поля в модели пользователя, на значения которых не должен быть похож новый пароль
     - password_similar_fields = ('email', 'first_name')
   * - password_wrong_values
     - ['йцукенг', ]
     - Недопустимые значения для пароля (с допустимой длиной)
     - password_wrong_values = ['qwerty', 'йцукен', '123456']
   * - url_change_password
     - ''
     - URL, по которому выполняется смена пароля. Если не содержит pk пользователя, задавать как /url/, иначе - можно задавать через urlname
     - url_change_password = 'admin:auth_user_password_change'


**LoginTestMixIn**

Тесты логина пользователя

.. list-table::
   :header-rows: 1

   * - название поля
     - значение по умолчанию
     - описание
     - пример использования
   * - blacklist_model
     - None
     - Модель объекта, в котором хранится информация о некорректных логинах с ip
     - blacklist_model = BlackList
   * - default_params
     - {self.field_username: self.username, self.field_password: self.password}
     - Параметры по умолчанию, которые используются для логина пользователя
     - default_params = {'username': 'test@test.test', 'password': 'qwerty'}
   * - field_password
     - 'password'
     - Поле для ввода пароля
     - field_password = 'password'
   * - field_username
     - 'username'
     - Поле для ввода юзернейма
     - field_username = 'username'
   * - password
     - 'qwerty'
     - Пароль тестируемого пользователя
     - password = 'qwerty'
   * - passwords_for_check
     - []
     - Пароли для проверки (будут проверены все)
     - passwords_for_check = ['qwerty', 'йцукен', '123456']
   * - obj
     - None
     - Модель пользователя
     - obj = User
   * - username
     - None
     - Юзернейм тестируемого пользователя
     - username = 'test@test.test'
   * - url_login
     - ''
     - URL для логина
     - url_login = 'admin:login'
   * - url_redirect_to
     - ''
     - URL на который выполняется редирект после логина
     - url_redirect_to = 'accounts:cabinet'
   * - urls_for_redirect
     - ['/', ]
     - Урлы, доступные пользователю (будет выбран один для проверки редиректа)
     - urls_for_redirect = ['accounts:profile',]


**Дополнительные настройки**

Могут быть переопределены в django settings

.. list-table::
   :header-rows: 1

   * - Название
     - Значение по умолчанию
     - Описание
   * - CAPTCHA_TYPE
     - 'simplecaptcha'
     - тип используемой в проекте капчи. 'supercaptcha' или 'simplecaptcha'
   * - COLORIZE_TESTS
     - False
     - раскраска вывода результатов тестов
   * - LOGIN_URL_NAME
     - 'login'
     - url, по которому выполняется логин
   * - LOGOUT_URL_NAME
     - 'auth_logout'
     - url, по которому выполняется логаут
   * - ERROR_MESSAGES
     - {}
     - переопределение сообщений об ошибках для всего проекта
   * - SIMPLE_TEST_EMAIL
     - False
     - генерация случайных значений адресов электронной почты исключая спецсимволы
   * - TEST_DATE_INPUT_FORMAT
     - settings.DATE_INPUT_FORMATS[0]
     - формат входных значений дат
   * - TEST_DATETIME_INPUT_FORMAT
     - settings.DATETIME_INPUT_FORMATS[0]
     - формат входных значений в datetime-полях
   * - TEST_TIME_INPUT_FORMAT
     - settings.TIME_INPUT_FORMATS[0]
     - формат входных значений времени
   * - TEST_GENERATE_REAL_SIZE_FILE
     - True
     - генерация файлов с указанным размером. При False для обработки файлов используется FakeSizeMemoryFileUploadHandler
   * - TEST_REAL_FORM_FIELDS
     - False
     - получение полей из ответа сервера из content, а не context
   * - TEST_SPEEDUP_EXPERIMENTAL
     - False
     - ускоряет выполнение тестов путем ранней обработки декораторов
   * - TEST_TRACEBACK_LIMIT
     - None
     - глубина трейсбека в результатах тестов
   * - TEST_USE_REAL_SETTINGS
     - False
     - если True, не переопределяются номера баз редиса, используются реальные пути для сохранения файлов

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "ttoolly",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "django,testing,test tool",
    "author": "Polina Efremova",
    "author_email": "pefremova@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/38/e0/e968e3a028532b0a24f7cebf3a8f8de1abaedf79a654e471cc5ddc126cd3/ttoolly-0.37.18.tar.gz",
    "platform": null,
    "description": "ttoolly\n=======\n\n\n.. image:: https://travis-ci.org/pefremova/ttoolly.svg?branch=django1.10\n   :target: https://travis-ci.org/pefremova/ttoolly\n   :alt: Build Status\n \n.. image:: https://coveralls.io/repos/github/pefremova/ttoolly/badge.svg?branch=django1.10\n   :target: https://coveralls.io/github/pefremova/ttoolly?branch=django1.10\n   :alt: Coverage Status\n\n\nDjango test tools. Django >= 1.8\n\n\u041d\u0430\u0431\u043e\u0440\u044b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0434\u043b\u044f Django-\u0444\u043e\u0440\u043c\n\n\u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u0435\u0441\u0442\u0430 `tests/tests_for_project.py <http://tests/tests_for_project.py>`_\n\n\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0438 \u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0444\u043e\u0440\u043c\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n**GlobalTestMixIn**\n\n.. list-table::\n   :header-rows: 1\n\n   * - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044f\n     - \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\n     - \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\n     - \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\n   * - all_unique\n     - None\n     - \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\n     - \n   * - choice_fields_values\n     - {}\n     - \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u043b\u044f select, multiselect \u043f\u043e\u043b\u0435\u0439\n     - choice_fields_values = {'field1': (value1, value2)}\n   * - custom_error_messages\n     - {}\n     - \u041a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439\n     - custom_error_messages = {'field1': {message_type: u\"\u0422\u0435\u043a\u0441\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435.\"}}\n   * - errors\n     - []\n     - \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c (\u0445\u0440\u0430\u043d\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0442\u0435\u0441\u0442\u0430)\n     - \n   * - files\n     - []\n     - \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0442\u0435\u0441\u0442\u0435 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430)\n     - f = open(filename); self.fields.append(f)\n   * - maxDiff\n     - None\n     - unittest.TestCase.maxDiff\n     - \n   * - non_field_error_key\n     - '__all__'\n     - \u043f\u043e\u043b\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u0449\u0438\u0435 (\u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 \u043f\u043e\u043b\u044e) \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u044b \u043e\u0448\u0438\u0431\u043a\u0438\n     - \n   * - unique_fields\n     - None\n     - \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439\n     - unique_fields = ('field1', ('field2', 'field3'), 'field4')\n   * - unique_with_case\n     - ()\n     - \u0421\u043f\u0438\u0441\u043e\u043a \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0443\u043d\u0438\u043a\u043b\u0430\u044c\u043d\u043e\u0441\u0442\u0438 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\n     - unique_with_case = ('field1', )\n\n\n**FormTestMixIn(GlobalTestMixIn)**\n\n.. list-table::\n   :header-rows: 1\n\n   * - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044f\n     - \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\n     - \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\n     - \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\n     - \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438\n   * - obj\n     - None\n     - \u043c\u043e\u0434\u0435\u043b\u044c, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043b\u044e\u0431\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430\n     - \n     - \n   * - additional_params\n     - {}\n     - \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0432 \u0442\u0435\u0441\u0442\u0430\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432\n     - additional_params = {'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'}\n     - \n   * - all_fields\n     - default_params.keys()\n     - \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0444\u043e\u0440\u043c\u0435.\n     - all_fields = ('field1', 'field2')\n     - \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435. \u0412\u0441\u0435 \u043f\u043e\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b (\u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0432 one_of_fields)\n   * - all_fields_add\n     - all_fields or default_params_add.keys()\n     - \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\n     - all_fields_add = ('field1', 'field2')\n     - \n   * - all_fields_edit\n     - all_fields or default_params_edit.keys()\n     - \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\n     - all_fields_edit = ('field1', 'field2')\n     - \n   * - check_null\n     - None\n     - \u0412\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 NULL \u0431\u0430\u0439\u0442?\n     - check_null = True\n     - NULL \u0431\u0430\u0439\u0442 \u0432 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u044f\u0445 \u0438 \u0438\u043c\u0435\u043d\u0430\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\n   * - check_null_file_positive\n     - False, \u0435\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e check_null\n     -\n     - check_null_file_positive = True\n     - NULL \u0431\u0430\u0439\u0442 \u0432\u044b\u0440\u0435\u0437\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0438\u043c\u0435\u043d \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438\n   * - check_null_file_negative\n     - True, \u0435\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e check_null\n     -\n     - check_null_file_negative = True\n     - NULL \u0431\u0430\u0439\u0442 \u0432 \u0438\u043c\u0435\u043d\u0430\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u041e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435\n   * - check_null_str_positive\n     - False, \u0435\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e check_null\n     -\n     - check_null_str_positive = True\n     - NULL \u0431\u0430\u0439\u0442 \u0432\u044b\u0440\u0435\u0437\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438\n   * - check_null_str_negative\n     - True, \u0435\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e check_null\n     -\n     - check_null_str_negative = True\n     - NULL \u0431\u0430\u0439\u0442 \u0432 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u044f\u0445. \u041e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435\n   * - choice_fields\n     - []\n     - \u0421\u043f\u0438\u0441\u043e\u043a select \u043f\u043e\u043b\u0435\u0439\n     - choice_fields = ('field1', 'field2')\n     - \u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043f\u043e\u043b\u044f\u0445 (\u0441\u0442\u0440\u043e\u043a\u0430, \u0447\u0438\u0441\u043b\u043e)\n   * - choice_fields_add\n     - choice_fields\n     - \u0421\u043f\u0438\u0441\u043e\u043a select \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\n     - choice_fields_add = ('field1', 'field2')\n     - \n   * - choice_fields_edit\n     - choice_fields\n     - \u0421\u043f\u0438\u0441\u043e\u043a select \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\n     - choice_fields_edit = ('field1', 'field2')\n     - \n   * - choice_fields_with_value_in_error\n     - []\n     - \u0421\u043f\u0438\u0441\u043e\u043a select \u043f\u043e\u043b\u0435\u0439, \u043f\u0440\u0438 \u0432\u0432\u043e\u0434\u0435 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\n     - choice_fields_with_value_in_error = ('field1', 'field2')\n     - \u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043f\u043e\u043b\u044f\u0445 (\u0441\u0442\u0440\u043e\u043a\u0430, \u0447\u0438\u0441\u043b\u043e)\n   * - choice_fields_add_with_value_in_error\n     - choice_fields_with_value_in_error\n     - \u0421\u043f\u0438\u0441\u043e\u043a select \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f, \u043f\u0440\u0438 \u0432\u0432\u043e\u0434\u0435 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\n     - choice_fields_add_with_value_in_error = ('field1', 'field2')\n     - \n   * - choice_fields_edit_with_value_in_error\n     - choice_fields_with_value_in_error\n     - \u0421\u043f\u0438\u0441\u043e\u043a select \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f, \u043f\u0440\u0438 \u0432\u0432\u043e\u0434\u0435 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\n     - choice_fields_edit_with_value_in_error = ('field1', 'field2')\n     - \n   * - default_params\n     - {}\n     - \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\n     - default_params = {'field1': value1, 'field2: value2}\n     - \n   * - default_params_add\n     - default_params\n     - \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\n     - default_params_add = {'field1': value1, 'field2: value2}\n     - \n   * - default_params_edit\n     - default_params\n     - \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\n     - default_params_edit = {'field1': value1, 'field2: value2}\n     -\n   * - date_fields\n     - \u041a\u043b\u044e\u0447\u0438 \u0438\u0437 default_params_add, default_params_edit, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 all_fields_add, all_fields_edit, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 'date'\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u0434\u0430\u0442\u044b\n     - date_fields = ('field1', 'field2')\n     -\n   * - datetime_fields\n     - ()\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 datetime\n     - datetime_fields = ('field1', 'field2')\n     -\n   * - digital_fields\n     - None\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u0447\u0438\u0441\u043b\u0430\n     - digital_fields = ('field1', 'field2')\n     - \u041f\u043e\u0437\u0438\u0442\u0438\u0432\u043d\u044b\u0435: \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435, \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u044b\u0435: \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e, \u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e, \u0441\u0442\u0440\u043e\u043a\u0438\n   * - digital_fields_add\n     - digital_fields \u0438\u043b\u0438 default_params_add.keys(), \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u0430\u043c\u0438 \u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0432 choice_fields_add, choice_fields_add_with_value_in_error\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u0447\u0438\u0441\u043b\u0430\n     - digital_fields_add = ('field1', 'field2')\n     - \n   * - digital_fields_edit\n     - digital_fields \u0438\u043b\u0438 default_params_edit.keys(), \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u0430\u043c\u0438 \u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0432 choice_fields_edit, choice_fields_edit_with_value_in_error\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u0447\u0438\u0441\u043b\u0430\n     - digital_fields_edit = ('field1', 'field2')\n     - \n   * - disabled_fields\n     - None\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439, \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0438\u0445\u0441\u044f \u043d\u0430 \u0444\u043e\u0440\u043c\u0435, \u043d\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\n     - disabled_fields = ('field1', 'field2')\n     - \u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435. \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043f\u043e\u043b\u044f\u0445 \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438\n   * - disabled_fields_add\n     - disabled_fields\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439, \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0438\u0445\u0441\u044f \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f, \u043d\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\n     - disabled_fields_add = ('field1', 'field2')\n     - \n   * - disabled_fields_edit\n     - disabled_fields\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439, \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0438\u0445\u0441\u044f \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\n     - disabled_fields_edit = ('field1', 'field2')\n     - \n   * - email_fields\n     - None\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 email\n     - email_fields = ('field1', 'field2')\n     - \u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0435 (\u0441\u0442\u0440\u043e\u043a\u0430, \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0449\u0430\u044f\u0441\u044f email'\u043e\u043c) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043f\u043e\u043b\u044f\u0445\n   * - email_fields_add\n     - email_fields \u0438\u043b\u0438 \u043a\u043b\u044e\u0447\u0438 \u0438\u0437 default_params_add, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 'email'\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 email \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\n     - email_fields_add = ('field1', 'field2')\n     - \n   * - email_fields_edit\n     - email_fields \u0438\u043b\u0438 \u043a\u043b\u044e\u0447\u0438 \u0438\u0437 default_params_edit, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 'email'\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 email \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\n     - email_fields_edit = ('field1', 'field2')\n     - \n   * - exclude_from_check\n     - []\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432\u043e \u0432\u0441\u0435\u0445 \u0442\u0435\u0441\u0442\u0430\u0445. \u0410\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043f\u043e\u043b\u0435\u0439, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u0434\u0430\u0442\u0443 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430\n     - exclude_from_check = ('field1', 'field2')\n     - \n   * - exclude_from_check_add\n     - exclude_from_check\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u0442\u0435\u0441\u0442\u0430\u0445 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430\n     - exclude_from_check_add = ('field1', 'field2')\n     - \n   * - exclude_from_check_edit\n     - exclude_from_check\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u0442\u0435\u0441\u0442\u0430\u0445 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430\n     - exclude_from_check_edit = ('field1', 'field2')\n     - \n   * - fields_helptext\n     - None\n     - \u0425\u0435\u043b\u043f\u0442\u0435\u043a\u0441\u0442 \u0432 \u043f\u043e\u043b\u044f\u0445 \u0444\u043e\u0440\u043c\u044b\n     - ``fields_helptext = {'url': 'For example \"http://example.com/test\"'}``\n     - \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0445\u0435\u043b\u043f\u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u043b\u044f\u0445 \u0444\u043e\u0440\u043c\u044b\n   * - fields_helptext_add\n     - fields_helptext\n     - \u0425\u0435\u043b\u043f\u0442\u0435\u043a\u0441\u0442 \u0432 \u043f\u043e\u043b\u044f\u0445 \u0444\u043e\u0440\u043c\u044b\n     - ``fields_helptext_add = {'url': 'For example \"http://example.com/test\"'}``\n     - \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0445\u0435\u043b\u043f\u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u043b\u044f\u0445 \u0444\u043e\u0440\u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\n   * - fields_helptext_edit\n     - fields_helptext\n     - \u0425\u0435\u043b\u043f\u0442\u0435\u043a\u0441\u0442 \u0432 \u043f\u043e\u043b\u044f\u0445 \u0444\u043e\u0440\u043c\u044b\n     - ``fields_helptext_edit = {'url': 'For example \"http://example.com/test\"'}``\n     - \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0445\u0435\u043b\u043f\u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u043b\u044f\u0445 \u0444\u043e\u0440\u043c\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\n   * - file_fields_params\n     - {}\n     - \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u0435\u0439\n     - ``file_fields_params = {'field_name': {'extensions': ('jpg', 'txt'), 'max_count': 3, 'one_max_size': '3Mb', 'wrong_extensions': ('rar', 'zip'), 'min_width': 200, 'min_height': 100, 'max_width': 300, 'max_height': 200}}``\n     - \n   * - file_fields_params_add\n     - file_fields_params\n     - \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\n     - \n     -\n   * - file_fields_params_edit\n     - file_fields_params\n     - \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\n     -\n     - \n   * - filter_params\n     - None\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432\n     - filter_params = ('filter_name1', ('filter_name2', 'any_valid_value'), )\n     - \u0414\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u0434\u0430\u043d \u0442\u0430\u043a\u0436\u0435 url_list. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441 \u043f\u0443\u0441\u0442\u044b\u043c, \u043b\u0438\u0431\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438. \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0432\u0435\u0442 200\n   * - hidden_fields\n     - None\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439, \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0438\u0445\u0441\u044f \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0432 \u0441\u043a\u0440\u044b\u0442\u043e\u043c \u0432\u0438\u0434\u0435\n     - hidden_fields = ('field1', 'field2')\n     - \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435\n   * - hidden_fields_add\n     - hidden_fields\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439, \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0438\u0445\u0441\u044f \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432 \u0441\u043a\u0440\u044b\u0442\u043e\u043c \u0432\u0438\u0434\u0435\n     - hidden_fields_add = ('field1', 'field2')\n     - \n   * - hidden_fields_edit\n     - hidden_fields\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439, \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0438\u0445\u0441\u044f \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u043a\u0440\u044b\u0442\u043e\u043c \u0432\u0438\u0434\u0435\n     - hidden_fields_edit = ('field1', 'field2')\n     - \n   * - int_fields\n     - None\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u0446\u0435\u043b\u044b\u0435 \u0447\u0438\u0441\u043b\u0430\n     - int_fields = ('field1', 'field2')\n     - \u0441\u043c. digital_fields\n   * - int_fields_add\n     - int_fields \u0438\u043b\u0438 \u043f\u043e\u043b\u044f \u0438\u0437 digital_fields_add, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u0432 default_params_add \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u0446\u0435\u043b\u044b\u0435 \u0447\u0438\u0441\u043b\u0430\n     - int_fields_add = ('field1', 'field2')\n     - \n   * - int_fields_edit\n     - int_fields \u0438\u043b\u0438 \u043f\u043e\u043b\u044f \u0438\u0437 digital_fields_edit, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u0432 default_params_edit \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435\n     - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u0446\u0435\u043b\u044b\u0435 \u0447\u0438\u0441\u043b\u0430\n     - int_fields_edit = ('field1', 'field2')\n     - \n   * - intervals\n     - None\n     - \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b\n     - ``intervals = (('field1', field2'), ('field3, 'field4', '>='))``\n     - \u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u0431\u043e\u043b\u044c\u0448\u0435, \u043c\u0435\u043d\u044c\u0448\u0435, \u0440\u0430\u0432\u043d\u043e \u043d\u0430\u0447\u0430\u043b\u0443 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430\n   * - max_blocks\n     - None\n     - \u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0432 \u0438\u043d\u043b\u0430\u0439\u043d \u0431\u043b\u043e\u043a\u0430\u0445\n     - max_blocks = {'inline_block_1': 10}\n     - \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0441\u0442\u0440\u043e\u043a, \u0447\u0438\u0441\u043b\u043e \u0441\u0442\u0440\u043e\u043a \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e\n   * - max_fields_length\n     - {}\n     - \u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 (\u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445) \u0438\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (\u0434\u043b\u044f \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0445) \u0432 \u043f\u043e\u043b\u044f\u0445\n     - max_fields_length = {'string_field_name': 100, 'digital_field_name': 99999}\n     - \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (\u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u0432 \u0442\u0435\u0441\u0442\u0430\u0445 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u0432\u0430\u0436\u0434\u044b). \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445.\n   * - min_fields_length\n     - {}\n     - \u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 (\u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445) \u0438\u043b\u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (\u0434\u043b\u044f \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0445) \u0432 \u043f\u043e\u043b\u044f\u0445\n     - min_fields_length = {'string_field_name': 5, 'digital_field_name': -1}\n     - \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445\n   * - multiselect_fields\n     - None\n     - \u0421\u043f\u0438\u0441\u043e\u043a multiselect \u043f\u043e\u043b\u0435\u0439\n     - multiselect_fields = ('field1', 'field2')\n     - \u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (\u0447\u0438\u0441\u043b\u043e)\n   * - multiselect_fields_add\n     - multiselect_fields \u0438\u043b\u0438 default_params_add.keys() \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u0438\u0445 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438\n     - \u0421\u043f\u0438\u0441\u043e\u043a multiselect \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\n     - multiselect_fields_add = ('field1', 'field2')\n     - \n   * - multiselect_fields_edit\n     - multiselect_fields \u0438\u043b\u0438 default_params_edit.keys() \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u0438\u0445 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438\n     - \u0421\u043f\u0438\u0441\u043e\u043a multiselect \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\n     - multiselect_fields_edit = ('field1', 'field2')\n     - \n   * - not_empty_fields\n     - None\n     - \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f\n     - not_empty_fields = ('field1', ('field2', 'field3'))\n     - \u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044f. \u041e\u0434\u043d\u043e \u0438\u0437 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 (\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0445) \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e.\n   * - not_empty_fields_add\n     - not_empty_fields \u0438\u043b\u0438 required_fields_add \u0438\u043b\u0438 default_params_add.keys()\n     - \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\n     - not_empty_fields_add = ('field1', ('field2', 'field3'))\n     - \n   * - not_empty_fields_edit\n     - not_empty_fields \u0438\u043b\u0438 required_fields_edit \u0438\u043b\u0438 default_params_edit.keys()\n     - \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\n     - not_empty_fields_edit = ('field1', ('field2', 'field3'))\n     - \n   * - only_if_value\n     - None\n     - \u041f\u043e\u043b\u044f, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0434\u043b\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u043b\u0435\n     - only_if_value = {'field1': {'field2': 'value1'}}\n     - \u0423\u043a\u0430\u0437\u0430\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0435 \u043f\u043e\u043b\u0435. \u0423\u043a\u0430\u0437\u0430\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043f\u043e\u043b\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e.\n   * - one_of_fields\n     - None\n     - \u0421\u043f\u0438\u0441\u043e\u043a \u043d\u0430\u0431\u043e\u0440\u043e\u0432 \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430\n     - one_of_fields = (('field1', 'field2'), ('field1', 'field3', 'field4'))\n     - \u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u043e\u0434\u043d\u043e \u0438\u0437 \u0433\u0440\u0443\u043f\u043f\u044b. \u041e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044f (\u0435\u0441\u043b\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0440\u0435\u0445, \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043f\u0430\u0440\u043d\u043e)\n   * - one_of_fields_add\n     - one_of_fields\n     - \u0421\u043f\u0438\u0441\u043e\u043a \u043d\u0430\u0431\u043e\u0440\u043e\u0432 \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\n     - one_of_fields_add = (('field1', 'field2'), ('field1', 'field3', 'field4'))\n     - \n   * - one_of_fields_edit\n     - one_of_fields\n     - \u0421\u043f\u0438\u0441\u043e\u043a \u043d\u0430\u0431\u043e\u0440\u043e\u0432 \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\n     - one_of_fields_edit = (('field1', 'field2'), ('field1', 'field3', 'field4'))\n     - \n   * - required_fields\n     - None\n     - \u041f\u043e\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435.\n     - required_fields = ('field1', ('field2', 'field3'))\n     - \u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044f. \u041e\u0434\u043d\u043e \u0438\u0437 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 (\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0445) \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442\n   * - required_fields_add\n     - required_fields \u0438\u043b\u0438 default_params_add.keys()\n     - \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\n     - required_fields_add = ('field1', ('field2', 'field3'))\n     - \n   * - required_fields_edit\n     - required_fields \u0438\u043b\u0438 default_params_edit.keys()\n     - \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\n     - required_fields_edit = ('field1', ('field2', 'field3'))\n     - \n   * - required_if\n     - None\n     - \u041f\u043e\u043b\u044f, \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u043e\u043b\u0435\n     - ``required_if = {'field1': 'field2', 'field2': ('field1', 'field3')}``\n     - \u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435, \u043d\u043e \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0435. \u041d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0435. \u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435, \u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0435.\n   * - required_if_value\n     - None\n     - \u041f\u043e\u043b\u044f, \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u043b\u0435\n     - required_if_value = {'field1': {'field2': 'value1'}}\n     - \u0423\u043a\u0430\u0437\u0430\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c: \u043f\u043e\u043b\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e, \u043f\u043e\u043b\u0435 \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e. \u0423\u043a\u0430\u0437\u0430\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435: \u043f\u043e\u043b\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e, \u043f\u043e\u043b\u0435 \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e. \n   * - required_if_add\n     - required_if \u0438\u043b\u0438 {}\n     - \u041f\u043e\u043b\u044f, \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u043e\u043b\u0435 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\n     - ``required_if_add = {'field1': 'field2', 'field2': ('field1', 'field3')}``\n     - \n   * - required_if_edit\n     - required_if \u0438\u043b\u0438 {}\n     - \u041f\u043e\u043b\u044f, \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u043e\u043b\u0435 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\n     - ``required_if_edit = {'field1': 'field2', 'field2': ('field1', 'field3')}``\n     - \n   * - status_code_error\n     - 200\n     - \u0421\u0442\u0430\u0442\u0443\u0441 \u043e\u0442\u0432\u0435\u0442\u0430 \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043e\u0448\u0438\u0431\u043e\u043a\n     -\n     -\n   * - status_code_not_exist\n     - 404\n     - \u0421\u0442\u0430\u0442\u0443\u0441 \u043e\u0442\u0432\u0435\u0442\u0430 \u043f\u0440\u0438 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u044f\u0445 \u0441 \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c\n     -\n     -\n   * - status_code_success_add\n     - 200\n     - \u0421\u0442\u0430\u0442\u0443\u0441 \u043e\u0442\u0432\u0435\u0442\u0430 \u043f\u0440\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\n     -\n     -\n   * - status_code_success_edit\n     - 200\n     - \u0421\u0442\u0430\u0442\u0443\u0441 \u043e\u0442\u0432\u0435\u0442\u0430 \u043f\u0440\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\n     -\n     -\n   * - unique_fields\n     - None\n     - \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439\n     - unique_fields = ('field1', ('field2', 'field3'), 'field4')\n     - \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u0414\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u0432 uppercase\n   * - unique_fields_add\n     - unique_fields (\u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432 all_fields_add)\n     - C\u043f\u0438\u0441\u043e\u043a \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\n     - unique_fields_add = ('field1', ('field2', 'field3'), 'field4')\n     - \n   * - unique_fields_edit\n     - unique_fields (\u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432 all_fields_edit)\n     - C\u043f\u0438\u0441\u043e\u043a \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\n     - unique_fields_edit = ('field1', ('field2', 'field3'), 'field4')\n     - \n   * - url_list\n     - \n     - URL, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435. \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u0441\u0435 \u0442\u0435\u0441\u0442\u044b, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c\n     - url_list = 'modelname:url_name' \u0438\u043b\u0438 url_list = '/path/to/list/'\n     - \n   * - with_captcha\n     - \u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u043f\u043e\u043b\u044f 'captcha' \u0432 all_fields \u0438\u043b\u0438 \u0432 all_fields_add \u0438\u043b\u0438 \u0432 all_fields_edit\n     - \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043b\u0438 \u043a\u0430\u043f\u0447\u0430 \u043d\u0430 \u0444\u043e\u0440\u043c\u0435. \u0415\u0441\u043b\u0438 True, \u0432\u043e \u0432\u0441\u0435\u0445 \u0442\u0435\u0441\u0442\u0430\u0445 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u044f\u043c\u0438 \u043a\u0430\u043f\u0447\u0438\n     - \n     -\n\n\n*file_fields_params*\n\n.. list-table::\n   :header-rows: 1\n\n   * - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044f\n     - \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\n     - \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438\n   * - extensions\n     - \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\n     - \u0412\u0441\u0435 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f. \u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f.\n   * - wrong_extensions\n     - \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\n     - \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432 \u0442\u0435\u0441\u0442\u0435 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439\n   * - max_count\n     - \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0444\u0430\u0439\u043b\u043e\u0432 (\u0434\u043b\u044f \u043f\u043e\u043b\u0435\u0439 \u0441 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u0444\u0430\u0439\u043b\u043e\u0432)\n     - \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0444\u0430\u0439\u043b\u043e\u0432. \u0427\u0438\u0441\u043b\u043e \u0444\u0430\u0439\u043b\u043e\u0432 \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e\n   * - one_max_size\n     - \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 (\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u0435\u0439 \u0441 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u0444\u0430\u0439\u043b\u043e\u0432)\n     - \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430. \u0420\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e\n   * - min_width\n     - \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0448\u0438\u0440\u0438\u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\n     - \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0448\u0438\u0440\u0438\u043d\u043e\u0439. \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u0448\u0438\u0440\u0438\u043d\u043e\u0439 \u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439\n   * - min_height\n     - \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u044b\u0441\u043e\u0442\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\n     - \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u044b\u0441\u043e\u0442\u043e\u0439. \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u0432\u044b\u0441\u043e\u0442\u043e\u0439 \u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439\n   * - max_width\n     - \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0448\u0438\u0440\u0438\u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\n     - \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0448\u0438\u0440\u0438\u043d\u043e\u0439. \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u0448\u0438\u0440\u0438\u043d\u043e\u0439 \u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439\n   * - max_height\n     - \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u044b\u0441\u043e\u0442\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\n     - \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u044b\u0441\u043e\u0442\u043e\u0439. \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u0432\u044b\u0441\u043e\u0442\u043e\u0439 \u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439\n\n\n*custom_error_messages*\n(\u0422\u043e \u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 settings.ERROR_MESSAGES)\n\n.. list-table::\n   :header-rows: 1\n\n   * - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\n     - \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\n   * - required\n     - * \u041d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 \n       * \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435\n   * - without_required\n     - \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435\n   * - empty_required\n     - \u041d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435\n   * - max_length\n     - * \u041f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043f\u043e\u043b\u0435 \n       * \u041f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u043c \u043f\u043e\u043b\u0435 \n       * \u041f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430\n   * - max_length_digital\n     - \u041f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u043c \u043f\u043e\u043b\u0435\n   * - max_length_file\n     - \u041f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430\n   * - min_length\n     - * \u0414\u043b\u0438\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043f\u043e\u043b\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439\n       * \u0427\u0438\u0441\u043b\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e\n   * - min_length_digital\n     - \u0427\u0438\u0441\u043b\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e\n   * - wrong_value\n     - \u0412 \u0441\u0435\u043b\u0435\u043a\u0442/\u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043b\u0435\u043a\u0442 \u043f\u043e\u043b\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\n   * - wrong_value_int\n     - \u0412 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u043c \u043f\u043e\u043b\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0435 \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e\n   * - wrong_value_digital\n     - \u0412 \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u043c \u043f\u043e\u043b\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0435 \u0447\u0438\u0441\u043b\u043e\n   * - wrong_value_email\n     - \u0412 \u043f\u043e\u043b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\n   * - unique\n     - \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442\n   * - delete_not_exists\n     - \u0423\u0434\u0430\u043b\u044f\u0435\u043c\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442\n   * - recovery_not_exists\n     - \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u0438\u0437 \u043a\u043e\u0440\u0437\u0438\u043d\u044b \u043e\u0431\u044a\u0435\u043a\u0442 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442\n   * - empty_file\n     - \u041f\u0443\u0441\u0442\u043e\u0439 \u0444\u0430\u0439\u043b\n   * - max_count_file\n     - \u0412 \u043f\u043e\u043b\u0435 \u0441\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0444\u0430\u0439\u043b\u043e\u0432\n   * - max_size_file\n     - \u041f\u0440\u0435\u0432\u044b\u0448\u0435\u043d \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430\n   * - max_sum_size_file\n     - \u0412 \u043f\u043e\u043b\u0435 \u0441\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u043e\u0432\n   * - wrong_extension\n     - \u0417\u0430\u0433\u0440\u0443\u0436\u0435\u043d \u0444\u0430\u0439\u043b \u0441 \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c\n   * - min_dimensions\n     - \u0420\u0430\u0437\u043c\u0435\u0440\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435\n   * - one_of\n     - \u041f\u043e\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0432\u043c\u0435\u0441\u0442\u0435\n   * - max_block_count\n     - \u041f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0438\u043d\u043b\u0430\u0439\u043d-\u043f\u043e\u043b\u0435\u0439 \u0432 \u0431\u043b\u043e\u043a\u0435\n   * - not_exist\n     - \u041e\u0431\u044a\u0435\u043a\u0442 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 message \u0432 \u0442\u0435\u0441\u0442\u0430\u0445 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f)\n\n\n**FormAddTestMixIn(FormTestMixIn)**\n\n.. list-table::\n   :header-rows: 1\n\n   * - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044f\n     - \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\n     - \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\n     - \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\n   * - url_add\n     - ''\n     - URL, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u044b. \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u0441\u0435 \u0442\u0435\u0441\u0442\u044b \u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\n     - url_add = 'modelname:url_name_add' \u0438\u043b\u0438 url_add = '/path/to/add/'\n\n\n**FormEditTestMixIn(FormTestMixIn)**\n\n.. list-table::\n   :header-rows: 1\n\n   * - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044f\n     - \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\n     - \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\n     - \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\n   * - second_save_available\n     - True\n     - \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043b\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442 \u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 \u0438\u043b\u0438 \u043f\u043e \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u043c\n     - second_save_available = False\n   * - url_edit\n     - ''\n     - URL, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u044b. \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u0441\u0435 \u0442\u0435\u0441\u0442\u044b \u043d\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\n     - url_edit = 'modelname:url_name_change' \u0438\u043b\u0438 url_edit = '/path/to/edit/1/' (\u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 pk=1)\n\n\n**FormDeleteTestMixIn(FormTestMixIn)**\n\n.. list-table::\n   :header-rows: 1\n\n   * - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044f\n     - \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\n     - \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\n     - \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\n   * - url_delete\n     - ''\n     - URL, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u044b\n     - url_delete = 'modelname:url_name_delete' \u0438\u043b\u0438 url_delete = '/path/to/delete/1/'\n\n\n**FormRemoveTestMixIn(FormTestMixIn)**\n\n\u0422\u0435\u0441\u0442\u044b \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u043a\u043e\u0440\u0437\u0438\u043d\u0443\n\n.. list-table::\n   :header-rows: 1\n\n   * - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044f\n     - \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\n     - \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\n     - \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\n   * - url_delete\n     - ''\n     - URL, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u044b\n     - url_delete = 'modelname:url_name_remove' \u0438\u043b\u0438 url_delete = '/path/to/remove/1/'\n   * - url_recovery\n     - ''\n     - URL, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\n     - url_recovery = 'modelname:url_name_recovery' \u0438\u043b\u0438 url_recovery = '/path/to/recovery/1/'\n   * - url_edit_in_trash\n     - ''\n     - URL, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u043a\u043e\u0440\u0437\u0438\u043d\u0435\n     - url_edit_in_trash = 'modelname:url_name_trash_edit' \u0438\u043b\u0438 url_edit_in_trash = '/path/to/trash/edit/1/'\n\n\n**ChangePasswordMixIn(GlobalTestMixIn, LoginMixIn)**\n\n\u0422\u0435\u0441\u0442\u044b \u0441\u043c\u0435\u043d\u044b \u043f\u0430\u0440\u043e\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n\n.. list-table::\n   :header-rows: 1\n\n   * - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044f\n     - \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\n     - \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\n     - \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\n   * - current_password\n     - 'qwerty'\n     - \u041f\u0430\u0440\u043e\u043b\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n     - current_password = 'qwerty'\n   * - field_old_password\n     - None\n     - \u041f\u043e\u043b\u0435 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f\n     - field_old_password = 'old_password'\n   * - field_password\n     - None\n     - \u041f\u043e\u043b\u0435 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f\n     - field_password = 'password1'\n   * - field_password_repeat\n     - None\n     - \u041f\u043e\u043b\u0435 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f\n     - field_password_repeat = 'password2'\n   * - password_max_length\n     - 128\n     - \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u043f\u0430\u0440\u043e\u043b\u044f\n     - password_max_length = 128\n   * - password_min_length\n     - 6\n     - \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u043f\u0430\u0440\u043e\u043b\u044f\n     - password_min_length = 6\n   * - password_params\n     - default_params \u0438\u043b\u0438 {field_old_password: current_password, field_password: some_new_value, field_password_repeat: some_new_value}\n     - \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043c\u0435\u043d\u044b \u043f\u0430\u0440\u043e\u043b\u044f\n     - password_params = {'password1': 'qwe123', 'password2': 'qwe123'}\n   * - obj\n     - None\n     - \u041c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n     - obj = User\n   * - password_positive_values\n     - [get_randname(10, 'w') + str(randint(0, 9)), str(randint(0, 9)) + get_randname(10, 'w'), get_randname(10, 'w').upper() + str(randint(0, 9)), ]\n     - \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0430\u0440\u043e\u043b\u044f\n     - password_positive_values = ['qwe+', 'qwe*', 'QwE1']\n   * - password_similar_fields\n     - None\n     - \u041f\u043e\u043b\u044f \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u043e\u0445\u043e\u0436 \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\n     - password_similar_fields = ('email', 'first_name')\n   * - password_wrong_values\n     - ['\u0439\u0446\u0443\u043a\u0435\u043d\u0433', ]\n     - \u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0430\u0440\u043e\u043b\u044f (\u0441 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0439 \u0434\u043b\u0438\u043d\u043e\u0439)\n     - password_wrong_values = ['qwerty', '\u0439\u0446\u0443\u043a\u0435\u043d', '123456']\n   * - url_change_password\n     - ''\n     - URL, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043c\u0435\u043d\u0430 \u043f\u0430\u0440\u043e\u043b\u044f. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 pk \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u0430\u043a /url/, \u0438\u043d\u0430\u0447\u0435 - \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 urlname\n     - url_change_password = 'admin:auth_user_password_change'\n\n\n**LoginTestMixIn**\n\n\u0422\u0435\u0441\u0442\u044b \u043b\u043e\u0433\u0438\u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n\n.. list-table::\n   :header-rows: 1\n\n   * - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044f\n     - \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\n     - \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\n     - \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\n   * - blacklist_model\n     - None\n     - \u041c\u043e\u0434\u0435\u043b\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 \u043b\u043e\u0433\u0438\u043d\u0430\u0445 \u0441 ip\n     - blacklist_model = BlackList\n   * - default_params\n     - {self.field_username: self.username, self.field_password: self.password}\n     - \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043b\u043e\u0433\u0438\u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n     - default_params = {'username': 'test@test.test', 'password': 'qwerty'}\n   * - field_password\n     - 'password'\n     - \u041f\u043e\u043b\u0435 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u043f\u0430\u0440\u043e\u043b\u044f\n     - field_password = 'password'\n   * - field_username\n     - 'username'\n     - \u041f\u043e\u043b\u0435 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u044e\u0437\u0435\u0440\u043d\u0435\u0439\u043c\u0430\n     - field_username = 'username'\n   * - password\n     - 'qwerty'\n     - \u041f\u0430\u0440\u043e\u043b\u044c \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n     - password = 'qwerty'\n   * - passwords_for_check\n     - []\n     - \u041f\u0430\u0440\u043e\u043b\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 (\u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u044b \u0432\u0441\u0435)\n     - passwords_for_check = ['qwerty', '\u0439\u0446\u0443\u043a\u0435\u043d', '123456']\n   * - obj\n     - None\n     - \u041c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n     - obj = User\n   * - username\n     - None\n     - \u042e\u0437\u0435\u0440\u043d\u0435\u0439\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n     - username = 'test@test.test'\n   * - url_login\n     - ''\n     - URL \u0434\u043b\u044f \u043b\u043e\u0433\u0438\u043d\u0430\n     - url_login = 'admin:login'\n   * - url_redirect_to\n     - ''\n     - URL \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442 \u043f\u043e\u0441\u043b\u0435 \u043b\u043e\u0433\u0438\u043d\u0430\n     - url_redirect_to = 'accounts:cabinet'\n   * - urls_for_redirect\n     - ['/', ]\n     - \u0423\u0440\u043b\u044b, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e (\u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u043d \u043e\u0434\u0438\u043d \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u0430)\n     - urls_for_redirect = ['accounts:profile',]\n\n\n**\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438**\n\n\u041c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0432 django settings\n\n.. list-table::\n   :header-rows: 1\n\n   * - \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\n     - \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\n     - \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\n   * - CAPTCHA_TYPE\n     - 'simplecaptcha'\n     - \u0442\u0438\u043f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043a\u0430\u043f\u0447\u0438. 'supercaptcha' \u0438\u043b\u0438 'simplecaptcha'\n   * - COLORIZE_TESTS\n     - False\n     - \u0440\u0430\u0441\u043a\u0440\u0430\u0441\u043a\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0442\u0435\u0441\u0442\u043e\u0432\n   * - LOGIN_URL_NAME\n     - 'login'\n     - url, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043b\u043e\u0433\u0438\u043d\n   * - LOGOUT_URL_NAME\n     - 'auth_logout'\n     - url, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043b\u043e\u0433\u0430\u0443\u0442\n   * - ERROR_MESSAGES\n     - {}\n     - \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430\n   * - SIMPLE_TEST_EMAIL\n     - False\n     - \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u043f\u0435\u0446\u0441\u0438\u043c\u0432\u043e\u043b\u044b\n   * - TEST_DATE_INPUT_FORMAT\n     - settings.DATE_INPUT_FORMATS[0]\n     - \u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u0430\u0442\n   * - TEST_DATETIME_INPUT_FORMAT\n     - settings.DATETIME_INPUT_FORMATS[0]\n     - \u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 datetime-\u043f\u043e\u043b\u044f\u0445\n   * - TEST_TIME_INPUT_FORMAT\n     - settings.TIME_INPUT_FORMATS[0]\n     - \u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u0438\n   * - TEST_GENERATE_REAL_SIZE_FILE\n     - True\n     - \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c. \u041f\u0440\u0438 False \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f FakeSizeMemoryFileUploadHandler\n   * - TEST_REAL_FORM_FIELDS\n     - False\n     - \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0435\u0439 \u0438\u0437 \u043e\u0442\u0432\u0435\u0442\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438\u0437 content, \u0430 \u043d\u0435 context\n   * - TEST_SPEEDUP_EXPERIMENTAL\n     - False\n     - \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432 \u043f\u0443\u0442\u0435\u043c \u0440\u0430\u043d\u043d\u0435\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440\u043e\u0432\n   * - TEST_TRACEBACK_LIMIT\n     - None\n     - \u0433\u043b\u0443\u0431\u0438\u043d\u0430 \u0442\u0440\u0435\u0439\u0441\u0431\u0435\u043a\u0430 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445 \u0442\u0435\u0441\u0442\u043e\u0432\n   * - TEST_USE_REAL_SETTINGS\n     - False\n     - \u0435\u0441\u043b\u0438 True, \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u043e\u043c\u0435\u0440\u0430 \u0431\u0430\u0437 \u0440\u0435\u0434\u0438\u0441\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Django test tools",
    "version": "0.37.18",
    "split_keywords": [
        "django",
        "testing",
        "test tool"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a10c783835bedc05d7faa1b2e99cdae60c2e2ee24956dcc5e32f2d603d7e981d",
                "md5": "11f50f3e702236658c9df2ebdaaad8e5",
                "sha256": "af4e78a54308e82dfbf4fa33e631186e64ab265a5b2aed20b577caa76091d163"
            },
            "downloads": -1,
            "filename": "ttoolly-0.37.18-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "11f50f3e702236658c9df2ebdaaad8e5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 95370,
            "upload_time": "2023-03-24T07:09:17",
            "upload_time_iso_8601": "2023-03-24T07:09:17.134992Z",
            "url": "https://files.pythonhosted.org/packages/a1/0c/783835bedc05d7faa1b2e99cdae60c2e2ee24956dcc5e32f2d603d7e981d/ttoolly-0.37.18-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "38e0e968e3a028532b0a24f7cebf3a8f8de1abaedf79a654e471cc5ddc126cd3",
                "md5": "06411572cd9064f448d074493c19f2f6",
                "sha256": "c8b6d1cbd1af3b0b67e386b1a93a6bbc991809fbeff5d1af8e477385232f8816"
            },
            "downloads": -1,
            "filename": "ttoolly-0.37.18.tar.gz",
            "has_sig": false,
            "md5_digest": "06411572cd9064f448d074493c19f2f6",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 119035,
            "upload_time": "2023-03-24T07:09:20",
            "upload_time_iso_8601": "2023-03-24T07:09:20.975460Z",
            "url": "https://files.pythonhosted.org/packages/38/e0/e968e3a028532b0a24f7cebf3a8f8de1abaedf79a654e471cc5ddc126cd3/ttoolly-0.37.18.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-03-24 07:09:20",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "lcname": "ttoolly"
}
        
Elapsed time: 0.15150s