34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
from django.shortcuts import render, redirect
|
|
from django.db.models import Avg
|
|
from .forms import MediaUploadForm
|
|
from .models import MediaUpload, Rating
|
|
|
|
def index(request):
|
|
if request.method == 'POST':
|
|
form = MediaUploadForm(request.POST, request.FILES)
|
|
if form.is_valid():
|
|
media_upload = form.save()
|
|
return redirect('media_detail', pk=media_upload.pk)
|
|
else:
|
|
form = MediaUploadForm()
|
|
return render(request, 'core/index.html', {'form': form})
|
|
|
|
def media_detail(request, pk):
|
|
media = MediaUpload.objects.get(pk=pk)
|
|
ratings = media.ratings.all()
|
|
average_rating = ratings.aggregate(Avg('score'))['score__avg']
|
|
return render(request, 'core/media_detail.html', {'media': media, 'ratings': ratings, 'average_rating': average_rating})
|
|
|
|
def rate_media(request, pk):
|
|
if request.method == 'POST':
|
|
media_upload = MediaUpload.objects.get(pk=pk)
|
|
score = request.POST.get('score')
|
|
comment = request.POST.get('comment', '')
|
|
if request.user.is_authenticated:
|
|
rater = request.user
|
|
else:
|
|
rater = None
|
|
|
|
if score:
|
|
Rating.objects.create(media_upload=media_upload, score=score, comment=comment, rater=rater)
|
|
return redirect('media_detail', pk=pk) |