add _directory_quota, _subdomain_quota column to User

This commit is contained in:
Son 2021-11-18 10:30:46 +01:00
parent bccfcee780
commit 85c6e791bc
2 changed files with 56 additions and 0 deletions

View File

@ -30,6 +30,8 @@ from app.config import (
DISABLE_ONBOARDING,
UNSUBSCRIBER,
ALIAS_RANDOM_SUFFIX_LENGTH,
MAX_NB_SUBDOMAIN,
MAX_NB_DIRECTORY,
)
from app.db import Session
from app.errors import AliasInTrashError, DirectoryInTrashError, SubdomainInTrashError
@ -397,6 +399,29 @@ class User(Base, ModelMixin, UserMixin, PasswordOracle):
server_default="0",
)
_directory_quota = sa.Column(
"directory_quota", sa.Integer, default=50, nullable=False, server_default="50"
)
_subdomain_quota = sa.Column(
"subdomain_quota", sa.Integer, default=5, nullable=False, server_default="5"
)
@property
def directory_quota(self):
return min(
self._directory_quota,
MAX_NB_DIRECTORY - Directory.filter_by(user_id=self.id).count(),
)
@property
def subdomain_quota(self):
return min(
self._subdomain_quota,
MAX_NB_SUBDOMAIN
- CustomDomain.filter_by(user_id=self.id, is_sl_subdomain=True).count(),
)
@staticmethod
def subdomain_is_available():
return SLDomain.filter_by(can_use_subdomain=True).count() > 0

View File

@ -0,0 +1,31 @@
"""empty message
Revision ID: b8fd175c084a
Revises: 9031c9e28510
Create Date: 2021-11-18 10:29:13.512071
"""
import sqlalchemy_utils
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'b8fd175c084a'
down_revision = '9031c9e28510'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('users', sa.Column('directory_quota', sa.Integer(), server_default='50', nullable=False))
op.add_column('users', sa.Column('subdomain_quota', sa.Integer(), server_default='5', nullable=False))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('users', 'subdomain_quota')
op.drop_column('users', 'directory_quota')
# ### end Alembic commands ###