tunic-tracker-redux/tunictracker/tracker/views.py

115 lines
4.1 KiB
Python

from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from django.template import loader
from json import loads, dumps
from math import floor
import requests
from .forms import ServerAddressForm
# Create your views here.
default_address = 'http://localhost:8000/spoiler'
def index(request):
request_data = None
# with open('tracker/static/tracker/data/listen_address.json', 'r') as address:
# read_address = loads(address.read())
# if (read_address['address']['user'] != ''):
# server_address = read_address['address']['user']
# else:
# server_address = read_address['address']['default']
if 'listen_address' in request.session.keys():
server_address = request.session['listen_address']
print(request.session['listen_address'])
else:
request.session['listen_address'] = default_address
print(request.session['listen_address'])
server_address = default_address
is_hidden = True
try:
request_data = requests.get(
server_address, timeout=5, verify=True).text
except:
with open('empty_spoiler.json', 'r') as t:
try:
tracker_output = loads(t.read())
is_hidden = False
except:
return
try:
tracker_output = loads(request_data)
except:
with open('empty_spoiler.json', 'r') as t:
try:
tracker_output = loads(t.read())
is_hidden = False
except:
return
with open('tracker/static/tracker/data/holy_cross_codes.json', 'r') as t:
try:
cross_codes = loads(t.read())
except:
return
tracker_debug = tracker_output['Debug']
tracker_totals = tracker_output['Totals']
tracker_current_scene = tracker_output['Current']['Scene']
tracker_current_scene_data = tracker_output['Scenes'][tracker_current_scene]
tracker_scenes = tracker_output['Scenes']
entered_codes = tracker_output['Codes']
try:
tracker_codes = cross_codes
for scene in entered_codes:
for k, v in cross_codes[scene].items():
tracker_codes[scene][k] = (
v, entered_codes[scene][k])
except Exception as e:
current_cross_codes = {}
# print(e)
template = loader.get_template('tracker/index.html')
form = ServerAddressForm()
form.fields['server_address_form'].initial = server_address
context = {
'server_address': server_address,
'is_hidden': is_hidden,
'debug': tracker_debug,
'default_codes': cross_codes['Default'],
'tracked_codes': tracker_codes,
'totals': tracker_totals,
'scenes': tracker_scenes,
'current_scene': {
'title': tracker_current_scene,
'data': tracker_current_scene_data
},
'form': form
}
return HttpResponse(template.render(context, request))
def get_address(request):
if request.method == 'GET':
return HttpResponse(dumps(request.session['listen_address']), content_type="application/json")
else:
return render(request, 'tracker/index.html')
def set_address(request):
if request.method == 'POST':
form = ServerAddressForm(request.POST)
form.label_classes = ('p-2')
if form.is_valid():
# with open('tracker/static/tracker/data/listen_address.json', 'r') as la:
# listen_address = loads(la.read())
# listen_address['address']['user'] = form.cleaned_data['server_address_form']
# with open('tracker/static/tracker/data/listen_address.json', 'w') as la:
# la.write(dumps(listen_address))
server_address = form.cleaned_data['server_address_form']
request.session['listen_address'] = form.cleaned_data['server_address_form']
print(request.session['listen_address'])
return HttpResponseRedirect('/')
else:
form = ServerAddressForm()
return render(request, 'tracker/index.html', {'form': form})