diff --git a/topfails/topfails/viewer/models.py~ b/topfails/topfails/viewer/models.py~ deleted file mode 100644 index d302b6d..0000000 --- a/topfails/topfails/viewer/models.py~ +++ /dev/null @@ -1,129 +0,0 @@ -import re -from django.db import models, connection -from datetime import datetime -from time import ctime, sleep, time - -class OS(): - Windows = 0 - Mac = 1 - Linux = 2 - Unknown = 3 - -OS_CHOICES = ( - (OS.Windows, 'Windows'), - (OS.Mac, 'Mac'), - (OS.Linux, 'Linux'), - (OS.Unknown, 'Unknown') -) - -class BuildStatus(): - Success = 0 - TestFailed = 1 - Burning = 2 - Exception = 3 - Unknown = 4 - -BUILDSTATUS_CHOICES = ( - (BuildStatus.Success, 'Success'), - (BuildStatus.TestFailed, 'Test Failed'), - (BuildStatus.Burning, 'Burning'), - (BuildStatus.Exception, 'Exception'), - (BuildStatus.Unknown, 'Unknown') -) - - -class Tree(models.Model): - id = models.AutoField(primary_key=True) - name = models.CharField(max_length=45, blank=True) - - def __unicode__(self): - return self.name - -class Build(models.Model): - id = models.AutoField(primary_key=True) - os = models.IntegerField(choices=OS_CHOICES) - tree = models.ForeignKey(Tree) - starttime = models.IntegerField(null=True, blank=True) - status = models.IntegerField(choices=BUILDSTATUS_CHOICES) - changeset = models.CharField(max_length=80,blank=True) - logfile = models.CharField(max_length=300,blank=True) - - def startdate(self): - return datetime.fromtimestamp(self.starttime) - - def changesetlink(self): - if str(self.tree) == 'Firefox': - return '%s' % ("http://hg.mozilla.org/mozilla-central", self.changeset, self.changeset) - elif str(self.tree) == 'Firefox3.6': - return '%s' % ("http://hg.mozilla.org/releases/mozilla-1.9.2", self.changeset, self.changeset) - elif str(self.tree) == 'Thunderbird' or str(self.tree) == 'SeaMonkey': - return '%s' % ("http://hg.mozilla.org/comm-central", self.changeset, self.changeset) - else : - return '%s' % ("http://hg.mozilla.org/mozilla-central", self.changeset, self.changeset) - - def jsonchangesetlink(self): - return "%s/rev/%s" % ("http://hg.mozilla.org/mozilla-central", self.changeset) - - def tinderboxlink(self): - if self.logfile: - return "http://tinderbox.mozilla.org/showlog.cgi?log=%s/%s" % (self.tree.name, self.logfile) - return "http://tinderbox.mozilla.org/showbuilds.cgi?tree=%s&maxdate=%d&hours=3" % (self.tree.name, self.starttime) - - -class Test(models.Model): - id = models.AutoField(primary_key=True) - name = models.CharField(max_length=300, blank=True) - - def __unicode__(self): - return self.name - -class TestFailure(models.Model): - id = models.AutoField(primary_key=True) - build = models.ForeignKey(Build) - test = models.ForeignKey(Test) - failtext = models.CharField(max_length=400, blank=True) - - - -def get_most_failing_tests(tree): - return TestFailure.objects.filter(build__tree__name=tree).values('test__name').annotate(count=models.Count('test__name')).order_by('-count')[:25] - -def get_time_failing_tests(tree): - return TestFailure.objects.filter(build__tree__name=tree).values('test__name').annotate(count=models.Count('test__name')).order_by('-count') - -def get_latest_fails(tree): - cursor = connection.cursor() - statement="""SELECT viewer_testfailure.id, viewer_testfailure.build_id, viewer_test.name, viewer_testfailure.failtext - FROM viewer_testfailure, viewer_test, viewer_build, viewer_tree - WHERE (viewer_testfailure.build_id = viewer_build.id) - AND (viewer_build.tree_id = viewer_tree.id) - AND ( viewer_testfailure.test_id = viewer_test.id) - AND viewer_tree.name ='"""+tree+"""' ORDER BY viewer_build.starttime DESC LIMIT 20""" - cursor.execute(statement) - for row in cursor: - yield row - - -def get_fails_in_timerange(self,tree): - - # Get current time, in seconds. - endtime = int(time()) - - #print endtime - m = re.match("(\d+)([ymwdh])", self) - #print m.group(1), m.group(2) - if m is None: - print >>sys.stderr, "ERROR: bad timespan = '%s'!" % options.timespan - sys.exit(1) - - timespan = int(m.group(1)) * {'y': 365 * 24 * 3600, - 'm': 30 * 24 * 3600, - 'w': 7 * 24 * 3600, - 'd': 24 * 3600, - 'h': 3600}[m.group(2)] - # Set current time to beginning of requested timespan ending now. - curtime = endtime - timespan - qs = get_time_failing_tests(tree) - return qs.filter(build__starttime__gt=curtime) - -