diff --git a/contrib/designate-dashboard/designatedashboard/api/designate.py b/contrib/designate-dashboard/designatedashboard/api/designate.py index becc2e25a..83670ef48 100644 --- a/contrib/designate-dashboard/designatedashboard/api/designate.py +++ b/contrib/designate-dashboard/designatedashboard/api/designate.py @@ -165,3 +165,10 @@ def record_update(request, domain_id, record_id, **kwargs): record.description = kwargs.get('description', None) return d_client.records.update(domain_id, record) + + +def quota_get(request, project_id=None): + if not project_id: + project_id = request.user.project_id + d_client = designateclient(request) + return d_client.quotas.get(project_id) diff --git a/contrib/designate-dashboard/designatedashboard/dashboards/project/dns_domains/tables.py b/contrib/designate-dashboard/designatedashboard/dashboards/project/dns_domains/tables.py index 5c87ba359..caf51dc26 100644 --- a/contrib/designate-dashboard/designatedashboard/dashboards/project/dns_domains/tables.py +++ b/contrib/designate-dashboard/designatedashboard/dashboards/project/dns_domains/tables.py @@ -17,6 +17,7 @@ from django.core import urlresolvers from django.utils.translation import ugettext_lazy as _ # noqa from horizon import tables +from horizon.utils import memoized from designatedashboard import api @@ -44,6 +45,17 @@ class CreateDomain(tables.LinkAction): classes = ("ajax-modal", "btn-create") policy_rules = (("dns", "create_domain"),) + @memoized.memoized_method + def allowed(self, request, datum): + try: + if self.table: + quota = api.designate.quota_get(request) + return quota['domains'] > len(self.table.data) + except: + msg = _("The quotas could not be retrieved.") + messages.warning(request, msg) + return True + class EditDomain(tables.LinkAction):