Fixes on maildirsize monitoring

This commit is contained in:
Marc Aymerich 2014-11-17 14:17:33 +00:00
parent 7479c47852
commit ae7c5b7969
10 changed files with 24 additions and 20 deletions

View File

@ -12,8 +12,7 @@ from .models import Contact
class ContactAdmin(AccountAdminMixin, admin.ModelAdmin):
list_display = (
'short_name', 'full_name', 'email', 'phone', 'phone2', 'country',
'account_link'
'dispaly_name', 'email', 'phone', 'phone2', 'country', 'account_link'
)
list_filter = ('email_usage',)
search_fields = (
@ -57,6 +56,11 @@ class ContactAdmin(AccountAdminMixin, admin.ModelAdmin):
}),
)
def dispaly_name(self, contact):
return unicode(contact)
dispaly_name.short_description = _("Name")
dispaly_name.admin_order_field = 'short_name'
def formfield_for_dbfield(self, db_field, **kwargs):
""" Make value input widget bigger """
if db_field.name == 'address':

View File

@ -56,7 +56,7 @@ class Contact(models.Model):
default=settings.CONTACTS_DEFAULT_COUNTRY)
def __unicode__(self):
return self.short_name
return self.full_name or self.short_name
def clean(self):
self.short_name = self.short_name.strip()

View File

@ -31,6 +31,7 @@ class MailboxAdmin(ChangePasswordAdminMixin, SelectAccountAdminMixin, ExtendedMo
'name', 'account_link', 'filtering', 'display_addresses'
)
list_filter = (HasAddressListFilter, 'filtering')
search_fields = ('account__username', 'account__short_name', 'account__full_name', 'name')
add_fieldsets = (
(None, {
'fields': ('account_link', 'name', 'password1', 'password2', 'filtering'),

View File

@ -213,14 +213,14 @@ class MaildirDisk(ServiceMonitor):
def monitor(self, mailbox):
context = self.get_context(mailbox)
self.append(
"SIZE=$(sed -n '2p' %(maildir_path)s | cut -d' ' -f1)\n"
"SIZE=$(awk 'NR>1 {s+=$1} END {print s}' %(maildir_path)s)\n"
"echo %(object_id)s ${SIZE:-0}" % context
)
def get_context(self, mailbox):
home = mailbox.get_home()
context = {
'maildir_path': os.path.join(home, 'Maildir/maildirsize'),
'home': mailbox.get_home(),
'object_id': mailbox.pk
}
context['maildir_path'] = settings.MAILBOXES_MAILDIRSIZE_PATH % context
return context

View File

@ -62,3 +62,6 @@ MAILBOXES_MAILBOX_FILTERINGS = getattr(settings, 'MAILBOXES_MAILBOX_FILTERINGS',
MAILBOXES_MAILBOX_DEFAULT_FILTERING = getattr(settings, 'MAILBOXES_MAILBOX_DEFAULT_FILTERING', 'REDIRECT')
MAILBOXES_MAILDIRSIZE_PATH = getattr(settings, 'MAILBOXES_MAILDIRSIZE_PATH', '%(home)s/Maildir/maildirsize')

View File

@ -90,6 +90,7 @@ class ResourceDataAdmin(ExtendedModelAdmin):
'resource_link', 'content_type', 'content_object_link', 'display_used', 'display_updated',
'allocated', 'display_unit'
)
search_fields = ('object_id',)
readonly_fields = fields
actions = (run_monitor,)
change_view_actions = actions

View File

@ -29,7 +29,7 @@ def compute_resource_usage(data):
has_result = True
result += sum(values)
elif resource.period == resource.LAST:
dataset.value
result = dataset.value
has_result = True
else:
raise NotImplementedError("%s support not implemented" % data.period)

View File

@ -133,7 +133,7 @@ class ResourceData(models.Model):
resource = models.ForeignKey(Resource, related_name='dataset', verbose_name=_("resource"))
content_type = models.ForeignKey(ContentType, verbose_name=_("content type"))
object_id = models.PositiveIntegerField(_("object id"))
used = models.DecimalField(_("used"), max_digits=16, decimal_places=2, null=True,
used = models.DecimalField(_("used"), max_digits=16, decimal_places=3, null=True,
editable=False)
updated_at = models.DateTimeField(_("updated"), null=True, editable=False)
allocated = models.DecimalField(_("allocated"), max_digits=8, decimal_places=2,

View File

@ -37,20 +37,10 @@ def monitor(resource_id, ids=None):
data = ResourceData.get_or_create(obj, resource)
data.update()
if not resource.disable_trigger:
if data.used < data.allocated:
if data.used > data.allocated:
op = Operation.create(backend, obj, Operation.EXCEED)
operations.append(op)
elif data.used < data.allocated:
op = Operation.create(backend, obj, Operation.RECOVERY)
operations.append(op)
# data = ResourceData.get_or_create(obj, resource)
# current = data.get_used()
# if not resource.disable_trigger:
# if data.used < data.allocated and current > data.allocated:
# op = Operation.create(backend, obj, Operation.EXCEED)
# operations.append(op)
# elif data.used > data.allocated and current < data.allocated:
# op = Operation.create(backend, obj, Operation.RECOVERY)
# operation.append(op)
# data.update(current=current)
Operation.execute(operations)

View File

@ -38,7 +38,7 @@ class WebAppOptionInline(admin.TabularInline):
class WebAppAdmin(AccountAdminMixin, ExtendedModelAdmin):
list_display = ('name', 'type', 'display_websites', 'account_link')
list_display = ('display_name', 'type', 'display_websites', 'account_link')
list_filter = ('type',)
add_fields = ('account', 'name', 'type')
fields = ('account_link', 'name', 'type')
@ -52,6 +52,11 @@ class WebAppAdmin(AccountAdminMixin, ExtendedModelAdmin):
for k, v in settings.WEBAPPS_TYPES.iteritems()
}
def display_name(self, webapp):
return webapp.get_name()
display_name.short_description = _("Name")
display_name.admin_order_field = 'name'
def display_websites(self, webapp):
websites = []
for content in webapp.content_set.all():