value_from_raw
(raw
)This method needs to be implemented to perform the type conversion from the raw value from the content file into a value that Lektor can process in the database layer. This can be any Python type for as long as it makes sense. It must either return a valid value or a special value that indicates a bad value. For more information see the raw value information below and the example provided.
from lektor.types import Type class LocationType(Type): widget = 'singleline-text' def value_from_raw(self, raw): if raw.value is None: return raw.missing_value('Location was not supplied') try: lng, lat = [float(x.strip()) for x in raw.value.split(';')] except (TypeError, ValueError): return raw.bad_value('Location was malformed') return (lng, lat) def setup_env(self, **extra): self.env.add_type(LocationType)
The value passed is a raw
value type. It has a few properties and methods:
Attribute | Description |
---|---|
name |
The name of the field |
value |
The raw value as unicode string or None if missing |
pad |
A reference to the pad |
bad_value(rsn) |
Creates a value that indicates a bad value with a reason. |
missing_value(rsn) |
Similar to bad_value but indicates an absent value. |
Comments