Джанго Оскар автоматически опустошает корзину при погашении просроченного ваучера - PullRequest
2 голосов
/ 19 мая 2019

Когда клиент применяет ваучер к товару в корзине, и срок действия ваучера истекает во время оформления заказа или внутри самой корзины. В процессе оформления заказа при нажатии на place order корзина автоматически очищается, и клиенту отправляется эта ошибка You need to add some items to your basket to checkout, это происходит во время check_basket_is_not_empty method.

Может кто-нибудь помочь мне понять, какая часть Джанго-Оскара могла так радикально модифицировать телегу. Сначала я думал, что корзина опустошается, потому что какой-то компонент Оскар пытался удалить ваучер, а также убирал товар из корзины. Но во время еще нескольких проверок я обнаружил, что ваучер успешно удален, но элемент корзины удаляется только внутри PaymentDetailsView, вероятно.

У меня нет кода для PaymentDetailsView. Я начал работу в качестве разработчика Django пару дней назад, и меня бросили в эту огромную базу кода django-oscar, с которой я совершенно незнаком. Мне не разрешено размещать любой код в Интернете. Я не знаю, что делать, и не хочу, чтобы меня уволили. Любая помощь будет высоко оценен.

1 Ответ

3 голосов
/ 25 мая 2019

Я до сих пор не знаю, что является причиной этой ошибки, но я нашел это решение. Когда вы нажимаете «разместить заказ», запускается класс PaymentDetailsView, и первой функцией, которая обрабатывает все данные, является submit. Таким образом, вы можете вручную проверить ваучеры в request и удалить ваучеры вручную.

# removing expired vouchers:
for voucher in self.request.basket.vouchers.all():
     if voucher.is_expired() or not voucher.is_available_to_user(user=self.request.basket.owner)[0]:
        self.request.basket.vouchers.remove(voucher)
        messages.error(self.request,_("The '%(code)s' voucher has expired") % {'code': voucher.code})
...