~widelands-dev/widelands-website/django_staticfiles

« back to all changes in this revision

Viewing changes to wlimages/views.py

  • Committer: Holger Rapp
  • Date: 2016-08-08 10:06:42 UTC
  • mto: This revision was merged to the branch mainline in revision 419.
  • Revision ID: sirver@gmx.de-20160808100642-z62vwqitxoyl5fh4
Added the apt-get update script I run every 30 days.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
from django.contrib.auth.decorators import login_required
2
2
from django.contrib.contenttypes.models import ContentType
 
3
from django.core.urlresolvers import reverse
3
4
from django.http import HttpResponse, HttpResponseRedirect
4
 
from django.shortcuts import get_object_or_404, render
 
5
from django.shortcuts import get_object_or_404, render_to_response
 
6
from django.template import RequestContext
5
7
 
6
8
from models import Image
 
9
from settings import MEDIA_ROOT
 
10
from django.core.files.uploadedfile import SimpleUploadedFile
 
11
from django.conf import settings
 
12
 
7
13
from forms import UploadImageForm
8
14
 
9
15
 
10
 
def display(request, image, revision):
 
16
def get_real_ip(request):
 
17
    """ Returns the real user IP, even if behind a proxy.
 
18
    Set BEHIND_PROXY to True in your settings if Django is
 
19
    running behind a proxy.
 
20
    """
 
21
    if getattr(settings, 'BEHIND_PROXY', False):
 
22
        return request.META['HTTP_X_FORWARDED_FOR']
 
23
    return request.META['REMOTE_ADDR']
 
24
 
 
25
def display( request, image, revision ):
11
26
    revision = int(revision)
12
27
 
13
 
    img = get_object_or_404(Image, name=image, revision=revision)
 
28
    img = get_object_or_404( Image, name = image, revision = revision )
14
29
 
15
30
    extension = img.image.path[-3:].lower()
16
 
    if extension not in ('png', 'gif', 'jpg', 'bmp'):
17
 
        extension = 'png'
 
31
    if extension not in ("png","gif","jpg","bmp"):
 
32
        extension = "png"
18
33
 
19
34
    r = HttpResponse()
20
35
    r['Content-Type'] = 'image/%s' % extension
22
37
 
23
38
    return r
24
39
 
25
 
 
26
40
@login_required
27
 
def upload(request, content_type, object_id, next='/'):
 
41
def upload(request,content_type,object_id, next="/"):
28
42
    if request.method == 'POST':
29
 
        # A form bound to the POST data
30
 
        form = UploadImageForm(request.POST, request.FILES)
31
 
        if form.is_valid():  # All validation rules pass
32
 
            Image.objects.create_and_save_image(user=request.user, image=request.FILES['imagename'],
33
 
                                                content_type=ContentType.objects.get(pk=content_type), object_id=object_id)
34
 
            return HttpResponseRedirect(next)  # Redirect after POST
 
43
        form = UploadImageForm(request.POST, request.FILES) # A form bound to the POST data
 
44
        if form.is_valid(): # All validation rules pass
 
45
            Image.objects.create_and_save_image(user=request.user,image=request.FILES["imagename"],
 
46
                        content_type=ContentType.objects.get(pk=content_type),object_id=object_id, ip=get_real_ip(request))
 
47
 
 
48
            return HttpResponseRedirect(next) # Redirect after POST
35
49
    else:
36
 
        form = UploadImageForm()  # An unbound form
37
 
 
38
 
    # Get the App (model) to which this image belongs to:
39
 
    app = ContentType.objects.get(id=content_type)
40
 
    # Get the current object's name (provided by __unicode__()) from this model
41
 
    name = app.get_object_for_this_type(id=object_id)
42
 
 
43
 
    return render(request, 'wlimages/upload.html', {
 
50
        form = UploadImageForm() # An unbound form
 
51
 
 
52
    return render_to_response('wlimages/upload.html', {
44
53
        'upload_form': form,
45
 
        'referer': name,}
46
 
                  )
 
54
    }, context_instance=RequestContext(request))
 
55