blob: b993e4d131b57cfec6fbd6d250d1af3fc5ba9516 [file] [log] [blame]
Dirk Vogt62ff7f22017-05-04 16:07:21 +02001from django.db import models
Dirk Vogt1accb672017-05-10 14:07:42 +02002from crashreports.models import *
Borjan Tchakaloff01e102c2018-02-19 17:47:45 +01003from django.db.models import F
Dirk Vogt1accb672017-05-10 14:07:42 +02004from django.db.models.signals import post_save
Dirk Vogt1accb672017-05-10 14:07:42 +02005import datetime
Dirk Vogt62ff7f22017-05-04 16:07:21 +02006
Dirk Vogt1accb672017-05-10 14:07:42 +02007
Borjan Tchakaloff01e102c2018-02-19 17:47:45 +01008class _VersionStats(models.Model):
Dirk Vogt1accb672017-05-10 14:07:42 +02009 is_official_release = models.BooleanField(default=False)
Borjan Tchakaloff01e102c2018-02-19 17:47:45 +010010 is_beta_release = models.BooleanField(default=False)
11 first_seen_on = models.DateField(auto_now_add=True)
12 released_on = models.DateField(auto_now_add=True)
13 heartbeats = models.IntegerField(default=0)
14 prob_crashes = models.IntegerField(default=0)
15 smpl = models.IntegerField(default=0)
16 other = models.IntegerField(default=0)
17
18 class Meta:
19 abstract = True
20
21class _DailyVersionStats(models.Model):
22 date = models.DateField(auto_now_add=True)
23 heartbeats = models.IntegerField(default=0)
24 prob_crashes = models.IntegerField(default=0)
25 smpl = models.IntegerField(default=0)
26 other = models.IntegerField(default=0)
27
28 class Meta:
29 abstract = True
30
31
32class Version(_VersionStats):
33 build_fingerprint = models.CharField(max_length=200, unique=True)
34
Dirk Vogt1accb672017-05-10 14:07:42 +020035 def __str__(self):
36 return self.build_fingerprint
Borjan Tchakaloff01e102c2018-02-19 17:47:45 +010037
38class VersionDaily(_DailyVersionStats):
39 version = models.ForeignKey(Version, db_index=True, related_name='daily_stats',
40 on_delete=models.CASCADE)
Borjan Tchakaloff08974d62018-02-19 16:02:20 +010041
42
43class RadioVersion(_VersionStats):
44 radio_version = models.CharField(max_length=200, unique=True)
45
46 def __str__(self):
47 return self.radio_version
48
49class RadioVersionDaily(_DailyVersionStats):
50 version = models.ForeignKey(RadioVersion, db_index=True, related_name='daily_stats',
51 on_delete=models.CASCADE)