annotate user_photos/views.py @ 701:094492e66eb9

Implement rate limiting on user photo uploads.
author Brian Neal <bgneal@gmail.com>
date Sat, 14 Sep 2013 17:23:13 -0500
parents b2a8fde3173a
children 809d27b385f2
rev   line source
bgneal@695 1 """Views for the user_photos application."""
bgneal@695 2 from django.conf import settings
bgneal@695 3 from django.contrib.auth.decorators import login_required
bgneal@696 4 from django.shortcuts import render, redirect
bgneal@695 5
bgneal@695 6 from user_photos.forms import UploadForm
bgneal@695 7
bgneal@695 8
bgneal@695 9 @login_required
bgneal@695 10 def upload(request):
bgneal@695 11 """This view function receives an uploaded image file from a user.
bgneal@695 12 The photo will be resized if necessary and a thumbnail image will be
bgneal@695 13 created. The image and thumbnail will then be uploaded to the Amazon
bgneal@695 14 S3 service for storage.
bgneal@695 15
bgneal@695 16 TODO: rate limiting
bgneal@695 17 pass off the processing to a celery task
bgneal@695 18 ajax version of this view
bgneal@695 19
bgneal@695 20 """
bgneal@695 21 form = None
bgneal@696 22 uploads_enabled = settings.USER_PHOTOS_ENABLED
bgneal@695 23
bgneal@695 24 if uploads_enabled:
bgneal@695 25 if request.method == 'POST':
bgneal@696 26 form = UploadForm(request.POST, request.FILES, user=request.user)
bgneal@695 27 if form.is_valid():
bgneal@696 28 photo = form.save()
bgneal@696 29 return redirect(photo)
bgneal@695 30 else:
bgneal@696 31 form = UploadForm(user=request.user)
bgneal@695 32
bgneal@695 33 return render(request, 'user_photos/upload_form.html', {
bgneal@695 34 'enabled': uploads_enabled,
bgneal@695 35 'form': form,
bgneal@695 36 },
bgneal@695 37 status=200 if uploads_enabled else 503)