Unify API model classes

This commit is contained in:
allegroai
2021-01-05 18:11:22 +02:00
parent e5b92f4a80
commit 1cc6a8f787
3 changed files with 226 additions and 195 deletions

View File

@@ -14,7 +14,7 @@ from mongoengine import (
DictField,
DynamicField,
)
from mongoengine.fields import key_not_string, key_starts_with_dollar
from mongoengine.fields import key_not_string, key_starts_with_dollar, EmailField
NoneType = type(None)
@@ -93,6 +93,24 @@ class CustomFloatField(FloatField):
self.error("Float value must be greater than %s" % str(self.greater_than))
class CanonicEmailField(EmailField):
"""email field that is always lower cased"""
def __set__(self, instance, value: str):
if value is not None:
try:
value = value.lower()
except AttributeError:
pass
super().__set__(instance, value)
def prepare_query_value(self, op, value):
if not isinstance(op, six.string_types):
return value
if value is not None:
value = value.lower()
return super().prepare_query_value(op, value)
class StrippedStringField(StringField):
def __init__(
self, regex=None, max_length=None, min_length=None, strip_chars=None, **kwargs