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. 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'] # server_address = 'http://localhost:8000/spoiler' 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 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)) return HttpResponseRedirect("/") else: form = ServerAddressForm() return render(request, "tracker/index.html", {"form": form})