41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
"""instance-wide default quota for new users
|
|||
|
|
|
||
|
|
The per-user ``users.quota_bytes`` stays authoritative for accounts that already
|
||
|
|
exist — changing the default must never resize anyone's mailbox retroactively.
|
||
|
|
This is only the value handed to the next user created.
|
||
|
|
|
||
|
|
Revision ID: 0017
|
||
|
|
Revises: 0016
|
||
|
|
Create Date: 2026-09-15
|
||
|
|
"""
|
||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from collections.abc import Sequence
|
||
|
|
|
||
|
|
from alembic import op
|
||
|
|
|
||
|
|
revision: str = "0017"
|
||
|
|
down_revision: str | None = "0016"
|
||
|
|
branch_labels: str | Sequence[str] | None = None
|
||
|
|
depends_on: str | Sequence[str] | None = None
|
||
|
|
|
||
|
|
# 5 GiB — the same figure users.quota_bytes has defaulted to since 0001.
|
||
|
|
_DEFAULT = 5 * 1024**3
|
||
|
|
|
||
|
|
|
||
|
|
def upgrade() -> None:
|
||
|
|
op.execute(
|
||
|
|
"ALTER TABLE app_settings ADD COLUMN default_quota_bytes bigint NOT NULL "
|
||
|
|
f"DEFAULT {_DEFAULT}"
|
||
|
|
)
|
||
|
|
op.execute(
|
||
|
|
"ALTER TABLE app_settings ADD CONSTRAINT ck_app_settings_quota_positive "
|
||
|
|
"CHECK (default_quota_bytes > 0)"
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
def downgrade() -> None:
|
||
|
|
op.execute("ALTER TABLE app_settings DROP CONSTRAINT IF EXISTS ck_app_settings_quota_positive")
|
||
|
|
op.execute("ALTER TABLE app_settings DROP COLUMN IF EXISTS default_quota_bytes")
|