from django.shortcuts import render, get_object_or_404, redirect from django.utils import timezone from django.contrib import messages from django.contrib.auth.decorators import login_required from django.http import HttpResponseForbidden from .forms import CreateOfferForm from .models import Offer, Wish from .upload import generate_unique_filename def index(request): return render(request, "app/index.html") def list_offers(request, filters=None): offers = Offer.objects.all() print(offers) return render(request, "offer/search.html", {"offers": offers}) @login_required def create_offer(request): if request.method == "POST": form = CreateOfferForm(request.POST, request.FILES) if form.is_valid(): offer = form.save(commit=False) offer.image.name = generate_unique_filename(form.cleaned_data['image'].name) offer.user = request.user offer.save() messages.success(request, "Offer uploaded successfully!") return redirect("offer_detail", offer.id) else: form = CreateOfferForm() return render(request, "basic_form.html", {"form": form, "button_label": "Create"}) @ login_required def offer_detail(request, offer_id): offer = get_object_or_404(Offer, id=offer_id) return render(request, "offer/detail.html", {"offer": offer, "wishes": ["Monstera", "Tradescantia"]}) @login_required def offer_delete(request, offer_id): offer = get_object_or_404(Offer, id=offer_id) if offer.user != request.user: return HttpResponseForbidden() offer.delete() messages.success(request, "Offer deleted successfully!") return redirect("list_offers") @login_required def offer_edit(request, offer_id): offer = get_object_or_404(Offer, id=offer_id) if offer.user != request.user: return HttpResponseForbidden() if request.method == "POST": form = CreateOfferForm(request.POST, request.FILES, instance=offer) if form.is_valid(): offer = form.save(commit=False) offer.image.name = generate_unique_filename(form.cleaned_data['image'].name) offer.user = request.user offer.save() messages.success(request, "Offer updated successfully!") return redirect("offer_detail", offer.id) else: form = CreateOfferForm(instance=offer) return render(request, "basic_form.html", {"form": form, "button_label": "Update"}) @ login_required def offer_trade(request, offer_id): return 0