Управление проверенными данными в Colander SchemaNode
У меня есть набор схем узлов Colander, используемых с API в Pyramid / Cornice. Для некоторых аргументов строки запроса передается диапазон (т.е. time=X-Y
означает диапазон времени от X до Y, где X и Y - целые числа, представляющие эпохи). В настоящее время я проверяю это с RegEx()
Валидатор, чтобы гарантировать, что эпоха или диапазон эпох передается в:
class TimeOrRange(SchemaNode):
schema_type = String
location = "querystring"
description = 'Time (or range) in epochs: ssssssssss(-ssssssssss)'
validator = Regex("^[0-9]{10}\-{0,1}[0-9]{0,10}$")
Затем я использую это в MappingSchema, которая затем привязывается к моему карнизу с помощью @view(schema=TimedThingGet)
:
class TimedThingGet(MappingSchema):
time = TimeOrRange(missing=drop)
Что я хотел бы сделать, это обновить возвращаемое значение в моем TimeOrRange
Код SchemaNode так time
в TimedThingGet
это кортеж временных диапазонов. Другими словами, если time=X-Y
передается в TimedThingGet
экземпляр, то time=(x, y)
возвращается в проверенных данных. Точно так же, если только X
затем я хочу Y
быть установленным в эпоху now()
,
Это выглядит как set_value()
это путь, и вот где проблема получить некоторый дополнительный кредит:
- Есть ли
set_value
Вам позвонили до или после проверки? - Есть ли
set_value
иметь доступ к валидатору, так чтоRegEx
валидатор, который создает группы регулярных выражений, может быть использован для установки моего кортежа:time=(validated.match.group[1], validated.match.group[2])
?
1 ответ
Я думаю, что вы должны посмотреть на:
Призыватель Preparer, который вы можете передать в SchemaNode:
http://docs.pylonsproject.org/projects/colander/en/latest/interfaces.html?highlight=preparer
Это позволит вам манипулировать данными до их передачи в валидаторы
И, возможно, по адресу:
http://docs.pylonsproject.org/projects/colander/en/latest/binding.html
Что позволяет вам устанавливать дополнительные свойства после создания экземпляра схемы.