Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.58 KB | None | 0 0
  1.  
  2. def create_promocodes(code_count=1, code=None, code_length=7, **kwargs):  # noqa: C901
  3.     """
  4.    Создание одного или нескольких промокодов.
  5.    Если планируется создание одного промокода, то его код может быть введен с админки руками.
  6.    В случае множественного создания используем генератор промокодов.
  7.    При множественном создании промокода записываем версию генерации - заинкрименченную
  8.    last_version из Discount.
  9.    При создании одного промокода версии генерации увеличивать смысла нет, т.к.
  10.    не должно быть такого, что на одну акцию будет несколько "ручных" промокодов,
  11.    а даже если и будут, то пусть они будут одной версии.
  12.    """
  13.     if code_count == 1:
  14.         if code:
  15.             try:
  16.                 kwargs.update({'code': code})
  17.                 return Promocode.create(**kwargs)
  18.             except peewee.IntegrityError:
  19.                 raise PromocodeExist('This promocode already exists')
  20.             except peewee.InternalError as e:
  21.                 if 'duplicate promocode' in e.args[0]:
  22.                     raise PromocodeExist('This promocode already exists')
  23.         else:
  24.             try:
  25.                 code = generate_code(length=code_length)
  26.                 kwargs.update({'code': code})
  27.                 return Promocode.create(**kwargs)
  28.             except peewee.IntegrityError:
  29.                 logger.error('Looks like non-unique promocode has been generated. Trying again...')
  30.                 return create_promocodes(code_count=code_count,
  31.                                          code_length=code_length, **kwargs)
  32.             except peewee.InternalError as e:
  33.                 if 'duplicate promocode' in e.args[0]:
  34.                     logger.error('Looks like non-unique promocode has been generated. Trying again...')
  35.                     return create_promocodes(code_count=code_count,
  36.                                              code_length=code_length, **kwargs)
  37.     else:
  38.         try:
  39.             discount_id = kwargs['discount']
  40.             discount = Discount.get(id=discount_id)
  41.             discount_current_version = discount.last_version + 1
  42.         except Exception as e:
  43.             logger.error(e)
  44.             return False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement