Dirk Vogt | 62ff7f2 | 2017-05-04 16:07:21 +0200 | [diff] [blame] | 1 | from crashreports.models import * |
Dirk Vogt | 57a615d | 2017-05-04 22:29:54 +0200 | [diff] [blame] | 2 | from django.http import HttpResponse,Http404,HttpResponseRedirect |
Dirk Vogt | 62ff7f2 | 2017-05-04 16:07:21 +0200 | [diff] [blame] | 3 | from django.shortcuts import render |
| 4 | from django.shortcuts import render_to_response |
| 5 | from django.template import loader |
| 6 | from itertools import chain |
| 7 | from django.db import connection |
Dirk Vogt | b0b8b51 | 2017-12-05 14:46:03 +0100 | [diff] [blame] | 8 | from crashreport_stats import raw_querys |
Dirk Vogt | 62ff7f2 | 2017-05-04 16:07:21 +0200 | [diff] [blame] | 9 | from django.contrib.auth.decorators import user_passes_test |
Dirk Vogt | 57a615d | 2017-05-04 22:29:54 +0200 | [diff] [blame] | 10 | from django import forms |
| 11 | from django.contrib import messages |
| 12 | from django.urls import reverse |
Dirk Vogt | 62ff7f2 | 2017-05-04 16:07:21 +0200 | [diff] [blame] | 13 | |
| 14 | def is_fairphone_staff(user): |
| 15 | return user.groups.filter(name='FairphoneSoftwareTeam').exists() |
| 16 | |
Dirk Vogt | 57a615d | 2017-05-04 22:29:54 +0200 | [diff] [blame] | 17 | |
| 18 | class DeviceUUIDForm(forms.Form): |
| 19 | uuid = forms.CharField(label='Device UUID:', max_length=100) |
| 20 | |
Dirk Vogt | 62ff7f2 | 2017-05-04 16:07:21 +0200 | [diff] [blame] | 21 | @user_passes_test(is_fairphone_staff) |
| 22 | def device_stats(request): |
| 23 | template = loader.get_template('crashreport_stats/device.html') |
| 24 | uuid = request.GET.get('uuid', "NO_UUID") |
Dirk Vogt | 57a615d | 2017-05-04 22:29:54 +0200 | [diff] [blame] | 25 | if not Device.objects.filter(uuid=uuid).exists(): |
| 26 | raise Http404("Device doesn't exist.") |
Dirk Vogt | 62ff7f2 | 2017-05-04 16:07:21 +0200 | [diff] [blame] | 27 | return HttpResponse(template.render({'uuid':uuid}, request)) |
Dirk Vogt | 1accb67 | 2017-05-10 14:07:42 +0200 | [diff] [blame] | 28 | |
| 29 | @user_passes_test(is_fairphone_staff) |
| 30 | def versions_all_overview(request): |
| 31 | template = loader.get_template('crashreport_stats/versions.html') |
| 32 | return HttpResponse(template.render({"is_official_release":"1"}, request)) |
| 33 | |
| 34 | @user_passes_test(is_fairphone_staff) |
| 35 | def versions_overview(request): |
| 36 | template = loader.get_template('crashreport_stats/versions.html') |
| 37 | return HttpResponse(template.render({"is_official_release":"2"}, request)) |
| 38 | |
Dirk Vogt | 57a615d | 2017-05-04 22:29:54 +0200 | [diff] [blame] | 39 | @user_passes_test(is_fairphone_staff) |
| 40 | def home(request): |
Dirk Vogt | b0b8b51 | 2017-12-05 14:46:03 +0100 | [diff] [blame] | 41 | """ The home view allows to search for devices. """ |
| 42 | devices = None |
Dirk Vogt | 57a615d | 2017-05-04 22:29:54 +0200 | [diff] [blame] | 43 | if request.method == 'POST': |
| 44 | # create a form instance and populate it with data from the request: |
| 45 | form = DeviceUUIDForm(request.POST) |
| 46 | if form.is_valid(): |
| 47 | uuid = form.cleaned_data['uuid'] |
| 48 | if not Device.objects.filter(uuid=uuid).exists(): |
Dirk Vogt | b0b8b51 | 2017-12-05 14:46:03 +0100 | [diff] [blame] | 49 | devices = Device.objects.filter(uuid__startswith=uuid) |
| 50 | if len(devices)==1: |
| 51 | return HttpResponseRedirect( |
| 52 | reverse("hiccup_stats_device")+'?uuid='+devices[0].uuid) |
| 53 | elif len(devices)==0: |
| 54 | messages.warning(request, "No devices found.") |
Dirk Vogt | 57a615d | 2017-05-04 22:29:54 +0200 | [diff] [blame] | 55 | else: |
Dirk Vogt | b0b8b51 | 2017-12-05 14:46:03 +0100 | [diff] [blame] | 56 | return HttpResponseRedirect( |
| 57 | reverse("hiccup_stats_device")+'?uuid='+uuid) |
Dirk Vogt | 57a615d | 2017-05-04 22:29:54 +0200 | [diff] [blame] | 58 | else: |
| 59 | form = DeviceUUIDForm() |
| 60 | template = loader.get_template('crashreport_stats/home.html') |
Dirk Vogt | b0b8b51 | 2017-12-05 14:46:03 +0100 | [diff] [blame] | 61 | return HttpResponse(template.render( |
| 62 | {'form':form, 'devices':devices} |
| 63 | , request)) |