Fix mailbox resource usage on dashboard.

Mail addresses are not limited, only mailboxes.
This commit is contained in:
Santiago L 2021-10-14 12:56:50 +02:00
parent d7bd21d865
commit aee0267f17
4 changed files with 32 additions and 30 deletions

View file

@ -221,7 +221,7 @@ class Orchestra(object):
querystring = "domain={}".format(domain_json['id']) querystring = "domain={}".format(domain_json['id'])
# retrieve services associated to a domain # retrieve services associated to a domain
domain_json['mails'] = self.retrieve_service_list( domain_json['addresses'] = self.retrieve_service_list(
Address.api_name, querystring) Address.api_name, querystring)
# retrieve websites (as they cannot be filtered by domain on the API we should do it here) # retrieve websites (as they cannot be filtered by domain on the API we should do it here)

View file

@ -203,7 +203,7 @@ class Domain(OrchestraModel):
"id": None, "id": None,
"name": None, "name": None,
"records": [], "records": [],
"mails": [], "addresses": [],
"usage": {}, "usage": {},
"websites": [], "websites": [],
"url": None, "url": None,

View file

@ -16,6 +16,11 @@
<div class="card-body"> <div class="card-body">
<h5 class="card-title">{{ usage.verbose_name }}</h5> <h5 class="card-title">{{ usage.verbose_name }}</h5>
{% include "musician/components/usage_progress_bar.html" with detail=usage.data %} {% include "musician/components/usage_progress_bar.html" with detail=usage.data %}
{% if usage.data.alert %}
<div class="text-center mt-4">
{{ usage.data.alert }}
</div>
{% endif %}
</div> </div>
</div> </div>
{% endfor %} {% endfor %}
@ -65,11 +70,7 @@
<h4>{% trans "Mail" %}</h4> <h4>{% trans "Mail" %}</h4>
<p class="card-text"><i class="fas fa-envelope fa-3x"></i></p> <p class="card-text"><i class="fas fa-envelope fa-3x"></i></p>
<p class="card-text text-dark"> <p class="card-text text-dark">
{{ domain.mails|length }} {% trans "mail addresses created" %} {{ domain.addresses|length }} {% trans "mail addresses created" %}
{% if domain.addresses_left.alert_level %}
<br/>
<span class="text-{{ domain.addresses_left.alert_level }}">{{ domain.addresses_left.count }} {% trans "mail address left" %}</span>
{% endif %}
</p> </p>
<a class="stretched-link" href="{% url 'musician:address-list' %}?domain={{ domain.id }}"></a> <a class="stretched-link" href="{% url 'musician:address-list' %}?domain={{ domain.id }}"></a>
</div> </div>

View file

@ -10,6 +10,7 @@ from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render from django.shortcuts import render
from django.urls import reverse_lazy from django.urls import reverse_lazy
from django.utils import translation from django.utils import translation
from django.utils.html import format_html
from django.utils.http import is_safe_url from django.utils.http import is_safe_url
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.views import View from django.views import View
@ -49,20 +50,6 @@ class DashboardView(CustomContextMixin, UserTokenRequiredMixin, TemplateView):
# show resource usage based on plan definition # show resource usage based on plan definition
profile_type = context['profile'].type profile_type = context['profile'].type
total_mailboxes = 0
for domain in domains:
total_mailboxes += len(domain.mails)
addresses_left = ALLOWED_RESOURCES[profile_type]['mailbox'] - len(domain.mails)
alert_level = None
if addresses_left == 1:
alert_level = 'warning'
elif addresses_left < 1:
alert_level = 'danger'
domain.addresses_left = {
'count': addresses_left,
'alert_level': alert_level,
}
# TODO(@slamora) update when backend provides resource usage data # TODO(@slamora) update when backend provides resource usage data
resource_usage = { resource_usage = {
@ -84,15 +71,7 @@ class DashboardView(CustomContextMixin, UserTokenRequiredMixin, TemplateView):
# 'percent': 25, # 'percent': 25,
}, },
}, },
'mailbox': { 'mailbox': self.get_mailbox_usage(profile_type),
'verbose_name': _('Mailbox usage'),
'data': {
'usage': total_mailboxes,
'total': ALLOWED_RESOURCES[profile_type]['mailbox'],
'unit': 'accounts',
'percent': get_bootstraped_percent(total_mailboxes, ALLOWED_RESOURCES[profile_type]['mailbox']),
},
},
} }
context.update({ context.update({
@ -103,6 +82,28 @@ class DashboardView(CustomContextMixin, UserTokenRequiredMixin, TemplateView):
return context return context
def get_mailbox_usage(self, profile_type):
allowed_mailboxes = ALLOWED_RESOURCES[profile_type]['mailbox']
total_mailboxes = len(self.orchestra.retrieve_mailbox_list())
mailboxes_left = allowed_mailboxes - total_mailboxes
alert = ''
if mailboxes_left < 0:
alert = format_html("<span class='text-danger'>{} extra mailboxes</span>", mailboxes_left * -1)
elif mailboxes_left <= 1:
alert = format_html("<span class='text-warning'>{} mailbox left</span>", mailboxes_left)
return {
'verbose_name': _('Mailbox usage'),
'data': {
'usage': total_mailboxes,
'total': allowed_mailboxes,
'alert': alert,
'unit': 'mailboxes',
'percent': get_bootstraped_percent(total_mailboxes, allowed_mailboxes),
},
}
class ProfileView(CustomContextMixin, UserTokenRequiredMixin, TemplateView): class ProfileView(CustomContextMixin, UserTokenRequiredMixin, TemplateView):
template_name = "musician/profile.html" template_name = "musician/profile.html"