Python · 25 строк
Пользователь покупает услугу продвижения: поднятие за 49 ₽, выделение за 99 ₽ или XL за 199 ₽ на 7 дней. Деньги списываются с внутреннего кошелька Авито. В проекте USE_TZ = True.
Отметьте строки с ошибками.
В работе: Платные услуги — основной доход классифайда, ошибки здесь сразу видны в выручке и в поддержке.
Как проверяем
Нажмите на строку с ошибкой и коротко напишите, что не так. Баг засчитан, если отмечена хотя бы одна его строка. Зачёт — найдено не меньше 60 % багов с учётом серьёзности (критичный весит 3, обычный 2, мелкий 1), а лишних отметок не больше, чем багов в коде. Пустые строки, скобки и комментарии лишними не считаем. Ответ один на подход: после него показываем разбор.
Источник: на задачах Авито: платные услуги продвижения. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
import loggingfrom datetime import datetime, timedeltafrom django.db import transactionfrom django.http import JsonResponsefrom .models import Ad, Promotion, Walletlog = logging.getLogger(__name__)PRICES = {"bump": 49, "highlight": 99, "xl": 199}def promote(request, ad_id):ad = Ad.objects.get(id=ad_id)service = request.POST["service"]price = PRICES[service]wallet = Wallet.objects.get(user=request.user)if wallet.balance < price:return JsonResponse({"error": "Недостаточно средств"}, status=200)wallet.balance -= pricewallet.save()until = datetime.now() + timedelta(days=7)Promotion.objects.create(ad=ad, service=service, until=until)log.info("promotion %s for ad %s, phone %s", service, ad_id, request.user.phone)return JsonResponse({"ok": True, "balance": wallet.balance})