Dirk Vogt | f130c75 | 2016-08-23 14:45:01 +0200 | [diff] [blame] | 1 | # -*- coding: utf-8 -*- |
| 2 | from django.db import models |
| 3 | import datetime |
Dirk Vogt | f2a3342 | 2016-10-11 17:17:26 +0200 | [diff] [blame^] | 4 | from django.contrib.auth.models import User |
| 5 | from taggit.managers import TaggableManager |
| 6 | import uuid |
| 7 | |
| 8 | class Device(models.Model): |
| 9 | # for every device there is a django user |
| 10 | uuid = models.CharField(max_length=64, unique=True, default=uuid.uuid4, editable=False) |
| 11 | user = models.OneToOneField(User, related_name='Hiccup_Device', on_delete=models.CASCADE, unique=True) |
| 12 | imei = models.CharField(max_length=32, null=True, blank=True) |
| 13 | board_date = models.DateTimeField(null=True, blank= True) |
| 14 | chipset = models.CharField(max_length=200, null=True, blank= True) |
| 15 | tags = TaggableManager(blank=True) |
| 16 | last_heartbeat = models.DateTimeField(null=True, blank=True) |
| 17 | token = models.CharField(max_length=200, null=True, blank=True) |
Dirk Vogt | f130c75 | 2016-08-23 14:45:01 +0200 | [diff] [blame] | 18 | |
| 19 | def crashreport_file_name(instance, filename): |
Dirk Vogt | f2a3342 | 2016-10-11 17:17:26 +0200 | [diff] [blame^] | 20 | return '/'.join([ |
| 21 | "crashreport_uploads", |
| 22 | instance.device.uuid, |
| 23 | instance.crashreport.id, |
| 24 | str(instance.crashreport.date), |
| 25 | filename]) |
Dirk Vogt | f130c75 | 2016-08-23 14:45:01 +0200 | [diff] [blame] | 26 | |
| 27 | class Crashreport(models.Model): |
Dirk Vogt | f2a3342 | 2016-10-11 17:17:26 +0200 | [diff] [blame^] | 28 | device = models.ForeignKey(Device, on_delete=models.CASCADE) |
| 29 | is_fake_report = models.BooleanField(default=False) |
| 30 | app_version = models.IntegerField() |
| 31 | uptime = models.CharField(max_length=200) |
| 32 | build_fingerprint = models.CharField(max_length=200) |
| 33 | boot_reason = models.CharField(max_length=200) |
| 34 | power_on_reason = models.CharField(max_length=200) |
| 35 | power_off_reason = models.CharField(max_length=200) |
| 36 | date = models.DateTimeField() |
| 37 | tags = TaggableManager(blank=True) |
| 38 | def _get_uuid(self): |
| 39 | "Returns the person's full name." |
| 40 | return self.device.uuid |
| 41 | uuid = property(_get_uuid) |
| 42 | |
| 43 | |
| 44 | class LogFile(models.Model): |
| 45 | logfile_type = models.TextField(max_length=36) |
| 46 | device = models.ForeignKey(Device, on_delete=models.CASCADE) |
| 47 | crashreport = models.ForeignKey(Crashreport, on_delete=models.CASCADE) |
| 48 | crashreport_file = models.FileField(upload_to=crashreport_file_name) |
| 49 | |
| 50 | class HeartBeat(models.Model): |
| 51 | device = models.ForeignKey(Device, on_delete=models.CASCADE) |
Dirk Vogt | 1433f7c | 2016-09-20 15:30:56 +0200 | [diff] [blame] | 52 | app_version = models.IntegerField() |
Dirk Vogt | f130c75 | 2016-08-23 14:45:01 +0200 | [diff] [blame] | 53 | uptime = models.CharField(max_length=200) |
| 54 | build_fingerprint = models.CharField(max_length=200) |
Dirk Vogt | f130c75 | 2016-08-23 14:45:01 +0200 | [diff] [blame] | 55 | date = models.DateTimeField() |