clearml-server/apiserver/apimodels/__init__.py

48 lines
1.2 KiB
Python
Raw Normal View History

2019-06-10 21:24:35 +00:00
from __future__ import absolute_import
2021-01-05 16:11:22 +00:00
from textwrap import shorten
2019-06-10 21:24:35 +00:00
from luqum.exceptions import ParseError
from luqum.parser import parser
from validators import email as email_validator, domain as domain_validator
2019-06-10 21:24:35 +00:00
2021-01-05 14:28:49 +00:00
from apiserver.apierrors import errors
2021-01-05 16:11:22 +00:00
from .base import *
2019-06-10 21:24:35 +00:00
def validate_lucene_query(value):
if value == "":
2019-06-10 21:24:35 +00:00
return
try:
parser.parse(value)
except ParseError as e:
2021-01-05 16:11:22 +00:00
raise errors.bad_request.InvalidLuceneSyntax(
error=str(e), query=shorten(value, 50, placeholder="...")
)
2019-06-10 21:24:35 +00:00
class LuceneQueryField(fields.StringField):
def validate(self, value):
super(LuceneQueryField, self).validate(value)
if value is None:
return
validate_lucene_query(value)
class EmailField(fields.StringField):
def validate(self, value):
super().validate(value)
if value is None:
return
if email_validator(value) is not True:
2019-06-10 21:24:35 +00:00
raise errors.bad_request.InvalidEmailAddress()
class DomainField(fields.StringField):
def validate(self, value):
super().validate(value)
if value is None:
return
if domain_validator(value) is not True:
2019-06-10 21:24:35 +00:00
raise errors.bad_request.InvalidDomainName()