Files
kursy-mirror/home/views.py

103 lines
3.4 KiB
Python

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})