1
0
mirror of https://github.com/mail-in-a-box/mailinabox.git synced 2026-03-12 17:07:23 +01:00

Fix problems with users that do not have maildirsize file

This commit is contained in:
John Supplee
2019-01-30 00:01:16 +02:00
parent 8bd9cf38ab
commit a8f02c1eb0
3 changed files with 38 additions and 11 deletions

View File

@@ -105,6 +105,18 @@ def get_mail_users(env):
users = [ row[0] for row in c.fetchall() ]
return utils.sort_email_addresses(users, env)
def sizeof_fmt(num):
for unit in ['','K','M','G','T']:
if abs(num) < 1024.0:
if abs(num) > 99:
return "%3.0f%s" % (num, unit)
else:
return "%2.1f%s" % (num, unit)
num /= 1024.0
return str(num)
def get_mail_users_ex(env, with_archived=False):
# Returns a complex data structure of all user accounts, optionally
# including archived (status="inactive") accounts.
@@ -136,22 +148,24 @@ def get_mail_users_ex(env, with_archived=False):
box_size = 0
box_count = 0
box_quota = ''
# try:
# with open('/home/user-data/mail/mailboxes/%s/%s/maildirsize' % (domain, user), 'r') as f:
# box_quota = f.readline()
# for line in f.readlines():
# (size, count) = line.split(' ')
# box_size += int(size)
# box_count += int(count)
# except:
# box_size = '?'
try:
dirsize_file = os.path.join(env['STORAGE_ROOT'], 'mail/mailboxes/%s/%s/maildirsize' % (domain, user))
with open(dirsize_file, 'r') as f:
box_quota = f.readline()
for line in f.readlines():
(size, count) = line.split(' ')
box_size += int(size)
box_count += int(count)
except:
box_size = '?'
box_count = '?'
user = {
"email": email,
"privileges": parse_privs(privileges),
"quota": quota,
"box_quota": box_quota,
"box_size": '%iK' % int(box_size / 1024),
"box_size": sizeof_fmt(box_size) if box_size != '?' else box_size,
"box_count": box_count,
"status": "active",
}

View File

@@ -42,7 +42,8 @@
<thead>
<tr>
<th width="35%">Email Address</th>
<th>Box Size</th>
<th>Messages</th>
<th>Size</th>
<th>Quota</th>
<th>Actions</th>
</tr>
@@ -56,6 +57,7 @@
<tr id="user-template">
<td class='address'>
</td>
<td class="box-count"></td>
<td class="box-size"></td>
<td class="quota">
</td>
@@ -163,6 +165,7 @@ function show_users() {
n.attr('data-email', user.email);
n.attr('data-quota', user.quota);
n.find('.address').text(user.email);
n.find('.box-count').text(user.box_count);
n.find('.box-size').text(user.box_size);
n.find('.quota').text((user.quota == '0') ? 'unlimited' : user.quota);
n2.find('.restore_info tt').text(user.mailbox);