Add proper permission checks for crashreports and heartbeats
diff --git a/crashreports/models.py b/crashreports/models.py
index ebf9c4b..8ac1222 100644
--- a/crashreports/models.py
+++ b/crashreports/models.py
@@ -1,20 +1,26 @@
- # -*- coding: utf-8 -*-
+# -*- 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)
+ 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)
+ token = models.CharField(max_length=200, null=True, blank=True)
+
def crashreport_file_name(instance, filename):
return '/'.join([
@@ -24,32 +30,40 @@
str(instance.crashreport.date),
filename])
+
class Crashreport(models.Model):
- 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)
+ 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()
+ 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)
+ 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):
+
+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)
date = models.DateTimeField()
+
+ def _get_uuid(self):
+ "Returns the person's full name."
+ return self.device.uuid
+ uuid = property(_get_uuid)