~widelands-dev/widelands-website/trunk

« back to all changes in this revision

Viewing changes to wlimages/views.py

  • Committer: kaputtnik
  • Date: 2019-05-30 18:20:02 UTC
  • mto: This revision was merged to the branch mainline in revision 540.
  • Revision ID: kaputtnik-20190530182002-g7l91m1xo28clghv
adjusted README; first commit on the new server

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
4
3
from django.http import HttpResponse, HttpResponseRedirect
5
 
from django.shortcuts import get_object_or_404, render_to_response
6
 
from django.template import RequestContext
7
 
 
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
 
 
13
 
from forms import UploadImageForm
14
 
 
15
 
 
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 ):
 
4
from django.shortcuts import get_object_or_404, render
 
5
 
 
6
from .models import Image
 
7
from .forms import UploadImageForm
 
8
 
 
9
 
 
10
def display(request, image, revision):
26
11
    revision = int(revision)
27
12
 
28
 
    img = get_object_or_404( Image, name = image, revision = revision )
 
13
    img = get_object_or_404(Image, name=image, revision=revision)
29
14
 
30
15
    extension = img.image.path[-3:].lower()
31
 
    if extension not in ("png","gif","jpg","bmp"):
32
 
        extension = "png"
 
16
    if extension not in ('png', 'gif', 'jpg', 'bmp'):
 
17
        extension = 'png'
33
18
 
34
19
    r = HttpResponse()
35
20
    r['Content-Type'] = 'image/%s' % extension
37
22
 
38
23
    return r
39
24
 
 
25
 
40
26
@login_required
41
 
def upload(request,content_type,object_id, next="/"):
 
27
def upload(request, content_type, object_id, next='/'):
42
28
    if request.method == '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
 
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
49
35
    else:
50
 
        form = UploadImageForm() # An unbound form
51
 
 
52
 
    return render_to_response('wlimages/upload.html', {
53
 
        'upload_form': form, 
54
 
    }, context_instance=RequestContext(request))
55
 
 
 
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 __str__()) from this model
 
41
    name = app.get_object_for_this_type(id=object_id)
 
42
 
 
43
    return render(request, 'wlimages/upload.html', {
 
44
        'upload_form': form,
 
45
        'referer': name,}
 
46
                  )