towards version 0.2
diff --git a/crashreports/models.py b/crashreports/models.py
index 38d86ff..ebf9c4b 100644
--- a/crashreports/models.py
+++ b/crashreports/models.py
@@ -1,29 +1,55 @@
# -*- coding: utf-8 -*-
from django.db import models
import datetime
+from django.contrib.auth.models import User
+from taggit.managers import TaggableManager
+import uuid
+
+class Device(models.Model):
+ # for every device there is a django user
+ uuid = models.CharField(max_length=64, unique=True, default=uuid.uuid4, editable=False)
+ user = models.OneToOneField(User, related_name='Hiccup_Device', on_delete=models.CASCADE, unique=True)
+ imei = models.CharField(max_length=32, null=True, blank=True)
+ board_date = models.DateTimeField(null=True, blank= True)
+ chipset = models.CharField(max_length=200, null=True, blank= True)
+ tags = TaggableManager(blank=True)
+ last_heartbeat = models.DateTimeField(null=True, blank=True)
+ token = models.CharField(max_length=200, null=True, blank=True)
def crashreport_file_name(instance, filename):
- return '/'.join(["crashreport_uploads", instance.uuid, str(datetime.date.today().year), str(datetime.date.today().month), str(datetime.date.today().day), filename])
-
+ return '/'.join([
+ "crashreport_uploads",
+ instance.device.uuid,
+ instance.crashreport.id,
+ str(instance.crashreport.date),
+ filename])
class Crashreport(models.Model):
- uuid = models.CharField(max_length=200)
- report_type = models.CharField(max_length=200)
+ device = models.ForeignKey(Device, on_delete=models.CASCADE)
+ is_fake_report = models.BooleanField(default=False)
+ app_version = models.IntegerField()
+ uptime = models.CharField(max_length=200)
+ build_fingerprint = models.CharField(max_length=200)
+ boot_reason = models.CharField(max_length=200)
+ power_on_reason = models.CharField(max_length=200)
+ power_off_reason = models.CharField(max_length=200)
+ date = models.DateTimeField()
+ tags = TaggableManager(blank=True)
+ def _get_uuid(self):
+ "Returns the person's full name."
+ return self.device.uuid
+ uuid = property(_get_uuid)
+
+
+class LogFile(models.Model):
+ logfile_type = models.TextField(max_length=36)
+ device = models.ForeignKey(Device, on_delete=models.CASCADE)
+ crashreport = models.ForeignKey(Crashreport, on_delete=models.CASCADE)
+ crashreport_file = models.FileField(upload_to=crashreport_file_name)
+
+class HeartBeat(models.Model):
+ device = models.ForeignKey(Device, on_delete=models.CASCADE)
app_version = models.IntegerField()
uptime = models.CharField(max_length=200)
build_fingerprint = models.CharField(max_length=200)
- boot_reason = models.CharField(max_length=200)
- power_on_reason = models.CharField(max_length=200)
- power_off_reason = models.CharField(max_length=200)
- aux_data = models.CharField(max_length=200)
date = models.DateTimeField()
- crashreport_file = models.FileField(upload_to=crashreport_file_name, null=True, blank=True)
-
- def crashreport_file_link(self):
- if self.crashreport_file:
- return '<a href="/hiccup/' + str(self.crashreport_file.url) + '">' + 'Logfile' + '</a>'
- else:
- return '<a href="''"></a>'
-
- crashreport_file_link.allow_tags = True
- crashreport_file_link.short_description = "File Link"