The latter doesn't take a Request object, and as a result doesn't run things like context processors. It's also deprecated.
47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
import urllib.parse
|
|
|
|
from django.conf import settings
|
|
from django.contrib.auth import logout
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.http import HttpResponseServerError, HttpResponseForbidden
|
|
from django.shortcuts import render, redirect
|
|
from web.exceptions import ServiceUnavailable
|
|
from web.models import Benchmark
|
|
from web.blender_opendata import opendata_delete_benchmark
|
|
|
|
|
|
@login_required
|
|
def index(request):
|
|
items = Benchmark.get_all_by_blender_id(request.user.blender_id).order_by('-date_created')
|
|
|
|
return render(request, 'index.html', {
|
|
'user': request.user,
|
|
'items': items,
|
|
'show_url': urllib.parse.urljoin(settings.BLENDER_OPENDATA['BASE_URL'], 'api/benchmarks'),
|
|
})
|
|
|
|
|
|
@login_required
|
|
def benchmark_delete(request, id):
|
|
benchmark = Benchmark.objects.get(pk=id)
|
|
|
|
if benchmark is None:
|
|
return redirect('index')
|
|
|
|
if not benchmark.belongs_to_blender_id(request.user.blender_id):
|
|
raise HttpResponseForbidden()
|
|
|
|
try:
|
|
opendata_delete_benchmark(benchmark.manage_id)
|
|
benchmark.delete()
|
|
|
|
except ServiceUnavailable:
|
|
return HttpResponseServerError('Service Unavailable, please try again later')
|
|
|
|
return redirect('index')
|
|
|
|
|
|
def logout_view(request):
|
|
logout(request)
|
|
return redirect('index')
|