Добавление тегов в портфолио, добавление вадилатора почты, добавление параметров телеофн и почта в создание заказа

This commit is contained in:
2023-04-26 00:30:29 +03:00
parent 451a8b9bc3
commit 82a957f659
5 changed files with 102 additions and 27 deletions

View File

@@ -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)