models.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from django.db import models
  2. from django.conf import settings
  3. from django.utils.translation import ugettext_lazy as _
  4. try:
  5. from idmapper.models import SharedMemoryModel as Model
  6. except ImportError:
  7. Model = models.Model
  8. import datetime
  9. from manager import DBLogManager
  10. __all__ = ('Error', 'ErrorBatch')
  11. class ErrorBatch(Model):
  12. class_name = models.CharField(_('Type'), max_length=128)
  13. message = models.TextField()
  14. traceback = models.TextField()
  15. is_resolved = models.BooleanField(default=False)
  16. times_seen = models.PositiveIntegerField(default=1)
  17. last_seen = models.DateTimeField(default=datetime.datetime.now)
  18. first_seen = models.DateTimeField(default=datetime.datetime.now)
  19. url = models.URLField(verify_exists=False, null=True, blank=True)
  20. server_name = models.CharField(max_length=128, db_index=True)
  21. checksum = models.CharField(max_length=32, db_index=True)
  22. objects = DBLogManager()
  23. class Meta:
  24. unique_together = (('class_name', 'server_name', 'checksum'),)
  25. verbose_name_plural = 'Error batches'
  26. def __unicode__(self):
  27. return "(%s) %s: %s" % (self.times_seen, self.class_name, self.message)
  28. class Error(Model):
  29. class_name = models.CharField(_('type'), max_length=128)
  30. message = models.TextField()
  31. traceback = models.TextField()
  32. datetime = models.DateTimeField(default=datetime.datetime.now)
  33. url = models.URLField(verify_exists=False, null=True, blank=True)
  34. server_name = models.CharField(max_length=128, db_index=True)
  35. objects = DBLogManager()
  36. def __unicode__(self):
  37. return "%s: %s" % (self.class_name, self.message)