Мне нужно определить новый валидатор для дат в моем расширении для CKAN 2.2. Интерфейс IValidators не работает. Не могли бы вы мне помочь?Как определить пользовательский валидатор в CKAN 2.2
2
A
ответ
2
В настоящее время three different function prototypes доступен для специальных валидаторов. Ниже приведен пример шаблона проверки правильности даты, использующего прототип, который принимает два параметра (вариант 5 в ссылке на документацию). Этот тип должен вернуть конечное значение поля (наоборот, он имеет возможность изменить значение, прежде чем она хранится):
import ckan.plugins as plugins
import ckan.plugins.toolkit as tk
from ckan.plugins.toolkit import Invalid
def date_str_validator(value, context):
valid_date = tk.get_validator('isodate')(value, context)
if not valid_date or not isinstance(valid_date, datetime.datetime):
raise Invalid("Invalid date")
return value
class MyPlugin(plugins.SingletonPlugin, tk.DefaultDatasetForm):
plugins.implements(plugins.IDatasetForm, inherit=False)
def _modify_package_schema(self, schema):
schema.update({
# Custom extras
'origination_date':[tk.get_validator('ignore_missing'),
date_str_validator,
tk.get_converter('convert_to_extras')]
})
return schema
def create_package_schema(self):
schema = super(MyPlugin, self).create_package_schema()
schema = self._modify_package_schema(schema)
return schema
def update_package_schema(self):
schema = super(MyPlugin, self).update_package_schema()
schema = self._modify_package_schema(schema)
return schema
def show_package_schema(self):
schema = super(MyPlugin, self).show_package_schema()
schema.update({
# Custom extras
'origination_date':[tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_missing'),
date_str_validator]
})
return schema
Обратите внимание, что валидаторы и конвертеры называются в порядке, так что порядок показать здесь важно как в _modify_package_schema
, так и в show_package_schema
.
Смежные вопросы
- 1. Перезаписать валидатор URL в CKAN
- 2. Как написать пользовательский валидатор?
- 3. Сравнить Валидатор? Или пользовательский валидатор?
- 4. Пользовательский валидатор в client_side_validations
- 5. Как определить, какой пользовательский валидатор будет срабатывать первым
- 6. Laravel Как сделать пользовательский валидатор?
- 7. Петрушка: Пользовательский валидатор Scope
- 8. Пользовательский валидатор не стреляет
- 9. Пользовательский валидатор asp.net
- 10. Пользовательский валидатор обратился дважды
- 11. Пользовательский валидатор для сравнения
- 12. Календарь Пользовательский валидатор
- 13. Rails 3 - Пользовательский валидатор
- 14. Пользовательский Угловой валидатор в TypeScript
- 15. Пользовательский валидатор не набирается
- 16. Yii2. Пользовательский класс валидатор
- 17. Пользовательский валидатор модели SailsJS
- 18. Пользовательский валидатор не стреляет
- 19. Пользовательский валидатор не срабатывает
- 20. Как сделать пользовательский валидатор в Angular2
- 21. Как добавить что-то в пользовательский валидатор?
- 22. Как использовать пользовательский валидатор в Grails
- 23. Как добавить пользовательский валидатор в свой FormRequest?
- 24. Предоставить пользовательский валидатор для @Size
- 25. Пользовательский валидатор Angular2 с зависимостью
- 26. Пользовательский диапазон валидатор на mvc3
- 27. Пользовательский YII2 валидатор не работает
- 28. ASP.NET MVC 3 - Пользовательский валидатор
- 29. ASP.NET пользовательский валидатор не работает
- 30. пользовательский валидатор на стороне клиента
Оправдывает ли порядок валидаторов порядок, при котором ошибки проверки отображаются в форме submit? По моему опыту, похоже, нет. Я пытаюсь выяснить, как заставить ошибки проверки отображаться в том же порядке, что и поля, отображаемые на странице (которые представляют собой сочетание пользовательских и по умолчанию полей). – littleK