Source code for monitor.models

from django.db import models

[docs]class Group(models.Model): """ Group sites by type """ title = models.CharField(max_length=50) def __unicode__(self): return self.title
PRIORITY_CHOICES = ((3,'Low'), (2,'Normal'), (1,'High'), (0,'Critical'))
[docs]class Site(models.Model): """ Core information about a site """ title = models.CharField(max_length=40) url = models.URLField() is_active = models.BooleanField(default = True) down_message = models.CharField(max_length = 140, default="There is a problem with the website.") last_seen = models.DateTimeField(null=True, blank=True, default=None) down_count = models.IntegerField(default = 0) group = models.ForeignKey(Group) priority = models.IntegerField(choices=PRIORITY_CHOICES, default=2) def __unicode__(self): return self.title
[docs]class SiteView(models.Model): """ Records when it has been accessed and the code returned This will get big very quickly, so there will need to be a database purge script written. This shouldn't be done on save because the normal monitoring system should do no extra work. Using a UUID rather than an auto-increment for the pk """ uuid = models.CharField(max_length=48, primary_key=True) site = models.ForeignKey(Site) attempt_time = models.DateTimeField(auto_now_add = True) status_code = models.IntegerField() def __unicode__(self): return self.site.title + ' - ' + str(self.attempt_time)
[docs]class Outage(models.Model): """ Records when an outage has taken place, including all the things that have gone down and the dates when it was resolved etc """ start_time = models.DateTimeField() content = models.TextField() end_time = models.DateTimeField(blank=True, null=True, default=None) seconds_down = models.IntegerField(blank=True, null=True, default=None) extra_information = models.TextField(blank=True, null=True, default=None) sites = models.ManyToManyField(Site, through='OutageSites') notification_sent = models.BooleanField(default = False) code = models.CharField(max_length=8) def __unicode__(self): return str(self.start_time)
[docs]class OutageSites(models.Model): """ Records which sites are effected by the outage """ site = models.ForeignKey(Site) outage = models.ForeignKey(Outage) primary = models.BooleanField(default = False) start_time = models.DateTimeField() def __unicode__(self): return self.site.title

Project Versions