Fix mailbox resource usage on dashboard.
Mail addresses are not limited, only mailboxes.
This commit is contained in:
parent
d7bd21d865
commit
aee0267f17
|
@ -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)
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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"
|
||||||
|
|
Loading…
Reference in a new issue