from django.shortcuts import render, get_object_or_404, redirect from django.contrib.auth.decorators import login_required from django.db.models import Q from django.contrib.auth.forms import UserCreationForm from django.contrib.auth import login from .models import Course, Instructor, WishlistItem def course_list(request): query = request.GET.get('q', '') level = request.GET.get('level', '') courses = Course.objects.all() if query: courses = courses.filter( Q(title__icontains=query) | Q(description__icontains=query) ) if level: courses = courses.filter(level=level) context = { 'courses': courses, 'query': query, 'level': level, 'levels': ['Beginner', 'Intermediate', 'Advanced'] } return render(request, 'core/index.html', context) def course_detail(request, slug): course = get_object_or_404(Course, slug=slug) is_in_wishlist = False if request.user.is_authenticated: is_in_wishlist = WishlistItem.objects.filter(user=request.user, course=course).exists() context = { 'course': course, 'is_in_wishlist': is_in_wishlist } return render(request, 'core/course_detail.html', context) def instructor_detail(request, pk): instructor = get_object_or_404(Instructor, pk=pk) return render(request, 'core/instructor_detail.html', {'instructor': instructor}) @login_required def wishlist(request): items = WishlistItem.objects.filter(user=request.user) return render(request, 'core/wishlist.html', {'items': items}) @login_required def toggle_wishlist(request, course_id): course = get_object_or_404(Course, id=course_id) wishlist_item, created = WishlistItem.objects.get_or_create(user=request.user, course=course) if not created: wishlist_item.delete() return redirect(request.META.get('HTTP_REFERER', 'home')) def checkout_placeholder(request, course_id): course = get_object_or_404(Course, id=course_id) return render(request, 'core/checkout_placeholder.html', {'course': course}) def signup(request): if request.method == 'POST': form = UserCreationForm(request.POST) if form.is_valid(): user = form.save() login(request, user) return redirect('home') else: form = UserCreationForm() return render(request, 'registration/signup.html', {'form': form})