blob: 54a67e79707b7f38260c1eb588b67cdbb5dc4361 [file] [log] [blame]
from crashreports.models import *
from django.http import HttpResponse, Http404, HttpResponseRedirect
from django.shortcuts import render
from django.shortcuts import render_to_response
from django.template import loader
from itertools import chain
from django.db import connection
from crashreport_stats import raw_querys
from django.contrib.auth.decorators import user_passes_test
from django import forms
from django.contrib import messages
from django.urls import reverse
def is_fairphone_staff(user):
return user.groups.filter(name="FairphoneSoftwareTeam").exists()
class DeviceUUIDForm(forms.Form):
uuid = forms.CharField(label="Device UUID:", max_length=100)
@user_passes_test(is_fairphone_staff)
def device_stats(request):
template = loader.get_template("crashreport_stats/device.html")
uuid = request.GET.get("uuid", "NO_UUID")
if not Device.objects.filter(uuid=uuid).exists():
raise Http404("Device doesn't exist.")
return HttpResponse(template.render({"uuid": uuid}, request))
@user_passes_test(is_fairphone_staff)
def versions_all_overview(request):
template = loader.get_template("crashreport_stats/versions.html")
return HttpResponse(template.render({"is_official_release": "1"}, request))
@user_passes_test(is_fairphone_staff)
def versions_overview(request):
template = loader.get_template("crashreport_stats/versions.html")
return HttpResponse(template.render({"is_official_release": "2"}, request))
@user_passes_test(is_fairphone_staff)
def home(request):
""" The home view allows to search for devices. """
devices = None
if request.method == "POST":
# create a form instance and populate it with data from the request:
form = DeviceUUIDForm(request.POST)
if form.is_valid():
uuid = form.cleaned_data["uuid"]
if not Device.objects.filter(uuid=uuid).exists():
devices = Device.objects.filter(uuid__startswith=uuid)
if len(devices) == 1:
return HttpResponseRedirect(
reverse("hiccup_stats_device")
+ "?uuid="
+ devices[0].uuid
)
elif len(devices) == 0:
messages.warning(request, "No devices found.")
else:
return HttpResponseRedirect(
reverse("hiccup_stats_device") + "?uuid=" + uuid
)
else:
form = DeviceUUIDForm()
template = loader.get_template("crashreport_stats/home.html")
return HttpResponse(
template.render({"form": form, "devices": devices}, request)
)