Dirk Vogt | d134521 | 2016-09-14 14:31:45 +0200 | [diff] [blame] | 1 | from rest_framework import serializers |
Dirk Vogt | c9e10ab | 2016-10-12 13:58:15 +0200 | [diff] [blame] | 2 | |
Dirk Vogt | f2a3342 | 2016-10-11 17:17:26 +0200 | [diff] [blame] | 3 | from rest_framework.exceptions import NotFound |
| 4 | from crashreports.models import Crashreport |
| 5 | from crashreports.models import Device |
Dirk Vogt | c9e10ab | 2016-10-12 13:58:15 +0200 | [diff] [blame] | 6 | from crashreports.models import HeartBeat |
Dirk Vogt | d134521 | 2016-09-14 14:31:45 +0200 | [diff] [blame] | 7 | from rest_framework import permissions |
| 8 | |
Dirk Vogt | f2a3342 | 2016-10-11 17:17:26 +0200 | [diff] [blame] | 9 | |
Dirk Vogt | d134521 | 2016-09-14 14:31:45 +0200 | [diff] [blame] | 10 | class CrashReportSerializer(serializers.ModelSerializer): |
Dirk Vogt | f2a3342 | 2016-10-11 17:17:26 +0200 | [diff] [blame] | 11 | permission_classes = (permissions.AllowAny,) |
| 12 | uuid = serializers.CharField(max_length=64) |
Dirk Vogt | c9e10ab | 2016-10-12 13:58:15 +0200 | [diff] [blame] | 13 | |
Dirk Vogt | d134521 | 2016-09-14 14:31:45 +0200 | [diff] [blame] | 14 | class Meta: |
| 15 | model = Crashreport |
Dirk Vogt | f2a3342 | 2016-10-11 17:17:26 +0200 | [diff] [blame] | 16 | exclude = ('device',) |
| 17 | |
| 18 | def create(self, validated_data): |
| 19 | try: |
| 20 | device = Device.objects.get(uuid=validated_data['uuid']) |
| 21 | except: |
| 22 | raise NotFound(detail="uuid does not exist") |
| 23 | validated_data.pop('uuid', None) |
| 24 | report = Crashreport(**validated_data) |
Dirk Vogt | c9e10ab | 2016-10-12 13:58:15 +0200 | [diff] [blame] | 25 | report.device = device |
Dirk Vogt | f2a3342 | 2016-10-11 17:17:26 +0200 | [diff] [blame] | 26 | report.save() |
| 27 | return report |
Dirk Vogt | c9e10ab | 2016-10-12 13:58:15 +0200 | [diff] [blame] | 28 | |
| 29 | |
| 30 | class HeartBeatSerializer(serializers.ModelSerializer): |
| 31 | permission_classes = (permissions.AllowAny,) |
| 32 | uuid = serializers.CharField(max_length=64) |
| 33 | |
| 34 | class Meta: |
| 35 | model = HeartBeat |
| 36 | exclude = ('device',) |
| 37 | |
| 38 | def create(self, validated_data): |
| 39 | try: |
| 40 | device = Device.objects.get(uuid=validated_data['uuid']) |
| 41 | except: |
| 42 | raise NotFound(detail="uuid does not exist") |
| 43 | validated_data.pop('uuid', None) |
| 44 | heartbeat = HeartBeat(**validated_data) |
| 45 | heartbeat.device = device |
| 46 | heartbeat.save() |
| 47 | return heartbeat |
| 48 | |
Dirk Vogt | f2a3342 | 2016-10-11 17:17:26 +0200 | [diff] [blame] | 49 | |
| 50 | class DeviceSerializer(serializers.ModelSerializer): |
| 51 | permission_classes = (permissions.IsAdminUser,) |
Dirk Vogt | c9e10ab | 2016-10-12 13:58:15 +0200 | [diff] [blame] | 52 | |
Dirk Vogt | f2a3342 | 2016-10-11 17:17:26 +0200 | [diff] [blame] | 53 | class Meta: |
| 54 | model = Device |