Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def create_promocodes(code_count=1, code=None, code_length=7, **kwargs): # noqa: C901
- """
- Создание одного или нескольких промокодов.
- Если планируется создание одного промокода, то его код может быть введен с админки руками.
- В случае множественного создания используем генератор промокодов.
- При множественном создании промокода записываем версию генерации - заинкрименченную
- last_version из Discount.
- При создании одного промокода версии генерации увеличивать смысла нет, т.к.
- не должно быть такого, что на одну акцию будет несколько "ручных" промокодов,
- а даже если и будут, то пусть они будут одной версии.
- """
- if code_count == 1:
- if code:
- try:
- kwargs.update({'code': code})
- return Promocode.create(**kwargs)
- except peewee.IntegrityError:
- raise PromocodeExist('This promocode already exists')
- except peewee.InternalError as e:
- if 'duplicate promocode' in e.args[0]:
- raise PromocodeExist('This promocode already exists')
- else:
- try:
- code = generate_code(length=code_length)
- kwargs.update({'code': code})
- return Promocode.create(**kwargs)
- except peewee.IntegrityError:
- logger.error('Looks like non-unique promocode has been generated. Trying again...')
- return create_promocodes(code_count=code_count,
- code_length=code_length, **kwargs)
- except peewee.InternalError as e:
- if 'duplicate promocode' in e.args[0]:
- logger.error('Looks like non-unique promocode has been generated. Trying again...')
- return create_promocodes(code_count=code_count,
- code_length=code_length, **kwargs)
- else:
- try:
- discount_id = kwargs['discount']
- discount = Discount.get(id=discount_id)
- discount_current_version = discount.last_version + 1
- except Exception as e:
- logger.error(e)
- return False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement