-
Notifications
You must be signed in to change notification settings - Fork 0
/
views.py
42 lines (35 loc) · 1.46 KB
/
views.py
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
#In Halos
from django.shortcuts import render
from legacyhalos_web.models import Centrals
from .filters import CentralsFilter
from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
from django.core.serializers.json import DjangoJSONEncoder
from django.core.serializers import serialize
import json
from django.http import HttpResponse
def list(req):
cen_filter = CentralsFilter(req.GET, queryset=Centrals.objects.all().order_by('mem_match_id'))
cen_filtered = cen_filter.qs
req.session['results_list'] = serialize('json', cen_filtered, cls=LazyEncoder)
paginator = Paginator(cen_filtered, 50)
page_num = req.GET.get('page')
page = paginator.get_page(page_num)
return render(req, 'list.html', {'page': page, 'paginator': paginator})
def index(req):
return render(req, 'index.html')
def centrals(req):
index = int(req.GET.get('index'))
cen_list = json.loads(req.session['results_list'])
cen = cen_list[index - 1]['fields']
prev_index = index - 1
if (prev_index <= 0):
prev_index = len(cen_list)
next_index = index + 1
if (next_index >= len(cen_list)):
next_index = 1
return render(req, 'centrals.html', {'cen_list': cen_list, 'index': index, 'cen': cen, 'next_index': next_index, 'prev_index': prev_index})
class LazyEncoder(DjangoJSONEncoder):
def default(self, obj):
if instance(obj, Centrals):
return str(obj)
return super().default(obj)