blob: ebf9c4b23a9df77deb9f058bd14fa8e58d3a70f5 [file] [log] [blame]
Dirk Vogtf130c752016-08-23 14:45:01 +02001 # -*- coding: utf-8 -*-
2from django.db import models
3import datetime
Dirk Vogtf2a33422016-10-11 17:17:26 +02004from django.contrib.auth.models import User
5from taggit.managers import TaggableManager
6import uuid
7
8class 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 Vogtf130c752016-08-23 14:45:01 +020018
19def crashreport_file_name(instance, filename):
Dirk Vogtf2a33422016-10-11 17:17:26 +020020 return '/'.join([
21 "crashreport_uploads",
22 instance.device.uuid,
23 instance.crashreport.id,
24 str(instance.crashreport.date),
25 filename])
Dirk Vogtf130c752016-08-23 14:45:01 +020026
27class Crashreport(models.Model):
Dirk Vogtf2a33422016-10-11 17:17:26 +020028 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
44class 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
50class HeartBeat(models.Model):
51 device = models.ForeignKey(Device, on_delete=models.CASCADE)
Dirk Vogt1433f7c2016-09-20 15:30:56 +020052 app_version = models.IntegerField()
Dirk Vogtf130c752016-08-23 14:45:01 +020053 uptime = models.CharField(max_length=200)
54 build_fingerprint = models.CharField(max_length=200)
Dirk Vogtf130c752016-08-23 14:45:01 +020055 date = models.DateTimeField()