75 lines
2.4 KiB
Python
75 lines
2.4 KiB
Python
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})
|