| 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)) |