from django.contrib.auth.decorators import login_required from django.contrib.auth.models import User from django.shortcuts import redirect, render, get_object_or_404 from home.models import ChatMessage from purchase.models import PurchasableProduct from django.views.decorators.http import require_http_methods # Chat admin + user views (restored) @login_required def admin_chat_dashboard(request): chats = ChatMessage.get_all_user_senders() return render(request, "chat/admin/admin_chat_dashboard.html", {"chats": chats}) @login_required def admin_chat(request, user_id): chat_user = User.objects.filter(id=user_id, is_staff=False).first() chat_messages = ChatMessage.get_support_chat(chat_user) return render( request, "chat/admin/admin_chat.html", {"chat_user": chat_user, "chat_messages": chat_messages}, ) @login_required def user_chat(request): if request.user.is_staff: return redirect("admin_chat_dashboard") chat_messages = ChatMessage.get_support_chat(request.user) return render(request, "chat/user_chat.html", {"chat_messages": chat_messages}) @login_required def user_chat_send(request, user_id): if request.method == "POST": content = request.POST.get("content") content = content.strip() if content else "" if content: user = User.objects.filter(id=user_id).first() ChatMessage.objects.create(user=user, sender=request.user, content=content) if request.user.is_staff: return redirect("admin_chat", user_id=user_id) return redirect("user_chat") # PurchasableProduct admin views @login_required def admin_purchase_dashboard(request): products = PurchasableProduct.objects.all().order_by("-created_at") return render( request, "purchase/admin/admin_purchase_dashboard.html", {"products": products} ) @login_required @require_http_methods(["GET", "POST"]) def admin_purchase(request, product_id=None): product = None if product_id: product = get_object_or_404(PurchasableProduct, id=product_id) if request.method == "POST": # Handle create/update/delete actions action = request.POST.get("action") name = request.POST.get("name", "").strip() description = request.POST.get("description", "").strip() price = request.POST.get("price_cents") currency = request.POST.get("currency", "pln").strip() if action == "delete" and product: product.delete() return redirect("admin_purchase_dashboard") # Create or update if not name or not price: # Simple validation: require name and price error = "Name and price are required" return render( request, "purchase/admin/admin_purchase.html", {"product": product, "error": error}, ) price_cents = int(price) if product: product.name = name product.description = description product.price_cents = price_cents product.currency = currency product.save() else: PurchasableProduct.objects.create( name=name, description=description, price_cents=price_cents, currency=currency, ) return redirect("admin_purchase_dashboard") return render(request, "purchase/admin/admin_purchase.html", {"product": product})