1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
#!/usr/bin/env python -tt
# encoding: utf-8
#
from .forms import UploadMapForm, EditCommentForm
from django.shortcuts import render, get_object_or_404
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseRedirect, HttpResponseNotAllowed, HttpResponse, HttpResponseBadRequest
from django.urls import reverse
from django.conf import settings
from . import models
from mainpage.wl_utils import get_real_ip
import os
#########
# Views #
#########
def index(request):
maps = models.Map.objects.all()
return render(request, 'wlmaps/index.html',
{'maps': maps,
'maps_per_page': settings.MAPS_PER_PAGE,
})
def download(request, map_slug):
"""Very simple view that just returns the binary data of this map and
increases the download count."""
m = get_object_or_404(models.Map, slug=map_slug)
file = open(m.file.path, 'rb')
data = file.read()
filename = os.path.basename('%s.wmf' % m.name)
# Remember that this has been downloaded
m.nr_downloads += 1
m.save(update_fields=['nr_downloads'])
response = HttpResponse(data, content_type='application/octet-stream')
response['Content-Disposition'] = 'attachment; filename="%s"' % filename
return response
def view(request, map_slug):
map = get_object_or_404(models.Map, slug=map_slug)
context = {
'map': map,
}
return render(request, 'wlmaps/map_detail.html',
context)
@login_required
def edit_comment(request, map_slug):
map = get_object_or_404(models.Map, slug=map_slug)
if request.method == 'POST':
form = EditCommentForm(request.POST)
if form.is_valid():
map.uploader_comment = form.cleaned_data['uploader_comment']
map.save(update_fields=['uploader_comment'])
return HttpResponseRedirect(map.get_absolute_url())
else:
form = EditCommentForm(instance=map)
context = {'form': form, 'map': map}
return render(request, 'wlmaps/edit_comment.html',
context)
@login_required
def upload(request):
if request.method == 'POST':
form = UploadMapForm(request.POST, request.FILES)
if form.is_valid():
map = form.save(commit=False)
map.uploader = request.user
map.save()
return HttpResponseRedirect(map.get_absolute_url())
else:
form = UploadMapForm()
context = {'form': form, }
return render(request, 'wlmaps/upload.html',
context)
|