17 |
17 |
from django.utils import timezone
|
18 |
18 |
from django.utils.translation import ugettext_lazy as _
|
19 |
19 |
from django.core.files.base import ContentFile
|
|
20 |
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
20 |
21 |
|
21 |
22 |
from django.contrib.contenttypes.models import ContentType
|
22 |
23 |
from django.contrib.contenttypes import fields
|
... | ... | |
428 |
429 |
return '%s (on %s <%s>) (for %s)' % (self.codename, self.resource_type, self.resource_pk, self.apiuser)
|
429 |
430 |
|
430 |
431 |
|
|
432 |
class ResourceLogManager(models.Manager):
|
|
433 |
def get_paginated_logs(self, appname, slug, page, order_by=None, page_size=None):
|
|
434 |
if order_by is None:
|
|
435 |
order_by = '-timestamp'
|
|
436 |
if page_size is None:
|
|
437 |
page_size = 10
|
|
438 |
|
|
439 |
qs = self.filter(appname=appname, slug=slug).order_by(order_by)
|
|
440 |
paginator = Paginator(qs, page_size)
|
|
441 |
try:
|
|
442 |
logrecords = paginator.page(page)
|
|
443 |
except PageNotAnInteger:
|
|
444 |
logrecords = paginator.page(1)
|
|
445 |
except (EmptyPage,):
|
|
446 |
logrecords = paginator.page(paginator.num_pages)
|
|
447 |
|
|
448 |
return logrecords
|
|
449 |
|
|
450 |
|
431 |
451 |
class ResourceLog(models.Model):
|
432 |
452 |
timestamp = models.DateTimeField(auto_now_add=True)
|
433 |
453 |
appname = models.CharField(max_length=128, verbose_name='appname', null=True)
|
... | ... | |
437 |
457 |
message = models.TextField(max_length=2048, verbose_name='message')
|
438 |
458 |
extra = jsonfield.JSONField(verbose_name='extras', default={})
|
439 |
459 |
|
|
460 |
objects = ResourceLogManager()
|
|
461 |
|
440 |
462 |
class Meta:
|
441 |
463 |
permissions = (
|
442 |
464 |
('view_resourcelog', 'Can view resource logs'),
|
... | ... | |
449 |
471 |
def __unicode__(self):
|
450 |
472 |
return '%s %s %s %s' % (self.timestamp, self.levelno, self.appname, self.slug)
|
451 |
473 |
|
452 |
|
|
453 |
474 |
STATUS_CHOICES = (
|
454 |
475 |
('unknown', _('Unknown')),
|
455 |
476 |
('up', _('Up')),
|