diff --git a/app/dashboard/views/directory.py b/app/dashboard/views/directory.py index 47c1589f..cb130f5a 100644 --- a/app/dashboard/views/directory.py +++ b/app/dashboard/views/directory.py @@ -114,7 +114,7 @@ def directory(): flash("Only premium plan can add directory", "warning") return redirect(url_for("dashboard.directory")) - if current_user.nb_directory() >= MAX_NB_DIRECTORY: + if current_user.directory_quota <= 0: flash( f"You cannot have more than {MAX_NB_DIRECTORY} directories", "warning", diff --git a/app/dashboard/views/subdomain.py b/app/dashboard/views/subdomain.py index 54e97a06..7a926ae8 100644 --- a/app/dashboard/views/subdomain.py +++ b/app/dashboard/views/subdomain.py @@ -28,7 +28,7 @@ def subdomain_route(): flash("Only premium plan can add subdomain", "warning") return redirect(request.url) - if len(subdomains) >= MAX_NB_SUBDOMAIN: + if current_user.subdomain_quota <= 0: flash( f"You can't create more than {MAX_NB_SUBDOMAIN} subdomains", "error" ) @@ -88,5 +88,4 @@ def subdomain_route(): sl_domains=sl_domains, errors=errors, subdomains=subdomains, - can_create=len(subdomains) < MAX_NB_SUBDOMAIN, ) diff --git a/app/models.py b/app/models.py index e081a707..46ad2240 100644 --- a/app/models.py +++ b/app/models.py @@ -2016,6 +2016,11 @@ class CustomDomain(Base, ModelMixin): domain.ownership_txt_token = random_string(30) Session.commit() + if domain.is_sl_subdomain: + user = domain.user + user._subdomain_quota -= 1 + Session.flush() + return domain @classmethod @@ -2024,6 +2029,10 @@ class CustomDomain(Base, ModelMixin): if obj.is_sl_subdomain: DeletedSubdomain.create(domain=obj.domain) + user = obj.user + user._subdomain_quota -= 1 + Session.flush() + return super(CustomDomain, cls).delete(obj_id) @property @@ -2166,7 +2175,14 @@ class Directory(Base, ModelMixin): if DeletedDirectory.get_by(name=name): raise DirectoryInTrashError - return super(Directory, cls).create(*args, **kwargs) + directory = super(Directory, cls).create(*args, **kwargs) + Session.flush() + + user = directory.user + user._directory_quota -= 1 + + Session.flush() + return directory @classmethod def delete(cls, obj_id): @@ -2180,6 +2196,10 @@ class Directory(Base, ModelMixin): DeletedDirectory.create(name=obj.name) cls.filter(cls.id == obj_id).delete() + + user = obj.user + user._directory_quota -= 1 + Session.commit() def __repr__(self): diff --git a/templates/dashboard/directory.html b/templates/dashboard/directory.html index 34860a95..21e78da2 100644 --- a/templates/dashboard/directory.html +++ b/templates/dashboard/directory.html @@ -139,7 +139,7 @@ {% endfor %} -