Добавление тегов в портфолио, добавление вадилатора почты, добавление параметров телеофн и почта в создание заказа
This commit is contained in:
@@ -288,3 +288,45 @@ class ApiParamVerifyCode(ApiParamInt):
|
||||
description="Код верификации (требуется если клиенту будет отправлена "
|
||||
"одна из ошибок <i>верификации</i>)", **kwargs):
|
||||
super().__init__(name=name, required=False, value_min=0, value_max=9999, description=description, **kwargs)
|
||||
|
||||
|
||||
class ApiParamEmail(ApiParamStr):
|
||||
def __init__(self, name="email",
|
||||
description="Почта", **kwargs):
|
||||
super().__init__(name=name, description=description,
|
||||
regex="^[\\w\\-.]+@([\\w\\-]+\\.)+[\\w\\-]{2,4}$", **kwargs)
|
||||
|
||||
|
||||
class ApiParamTags(ApiParamStr):
|
||||
def __init__(self, tags: list[list[str, str] | tuple[str, str]], name="tags", default=None,
|
||||
description="Один или несколько тегов из списка: {tags}"
|
||||
" Теги перечисляются через запятую, без кавычек", **kwargs):
|
||||
super().__init__(name=name, description=description,
|
||||
regex="^[\\w\\_]+(,[\\w\\_]+)*$", default=None, **kwargs)
|
||||
self.tags = tags
|
||||
self.__tags_names = [i[0] for i in tags]
|
||||
self.__default_tags = default
|
||||
|
||||
def validate(self, value):
|
||||
items = super(ApiParamTags, self).validate(value)
|
||||
if items is not None:
|
||||
items = value.split(',')
|
||||
# проверка того, что параметры входят в список
|
||||
for i in items:
|
||||
if i not in self.__tags_names:
|
||||
_make_invalid_argument_value_error(self.name, value, "unexpected",
|
||||
f"expected items in {self.__tags_names}")
|
||||
else:
|
||||
items = self.__default_tags
|
||||
|
||||
return items
|
||||
|
||||
def get_doc(self):
|
||||
doc = super().get_doc()
|
||||
ch = "<ul>"
|
||||
for c in self.tags:
|
||||
if c[0] != '':
|
||||
ch += f"<li>{c[0]} - {c[1]}</li>"
|
||||
ch += "</ul>"
|
||||
return doc.replace('{tags}', ch)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user