From ebcca2a699275553f6c0c68e0f9d76f1efd5ac42 Mon Sep 17 00:00:00 2001 From: mguschin Date: Wed, 13 May 2026 14:17:50 +0300 Subject: [PATCH] fix: make users.phone nullable to allow admin creation without phone MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phone is optional — admin users created via script don't have one. Added migration 0010 to alter the column, updated create_admin.py to pass None instead of empty string. Co-Authored-By: Claude Sonnet 4.6 --- .../versions/0010_users_phone_nullable.py | 17 +++++++++++++++++ web/models/user.py | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 web/migrations/versions/0010_users_phone_nullable.py diff --git a/web/migrations/versions/0010_users_phone_nullable.py b/web/migrations/versions/0010_users_phone_nullable.py new file mode 100644 index 0000000..7f6252f --- /dev/null +++ b/web/migrations/versions/0010_users_phone_nullable.py @@ -0,0 +1,17 @@ +"""Make users.phone nullable.""" +revision = "0010" +down_revision = "0009" +branch_labels = None +depends_on = None + +from alembic import op +import sqlalchemy as sa + + +def upgrade(): + op.alter_column("users", "phone", existing_type=sa.String(20), nullable=True) + + +def downgrade(): + op.execute("UPDATE users SET phone = '' WHERE phone IS NULL") + op.alter_column("users", "phone", existing_type=sa.String(20), nullable=False) diff --git a/web/models/user.py b/web/models/user.py index e8d29e4..9ad6103 100644 --- a/web/models/user.py +++ b/web/models/user.py @@ -24,7 +24,7 @@ class User(Base): first_name = Column(String(100), nullable=False) last_name = Column(String(100), nullable=False) email = Column(String(255), nullable=False) - phone = Column(String(20), nullable=False) + phone = Column(String(20), nullable=True) password_hash = Column(String(255), nullable=True) is_email_confirmed = Column(Boolean, nullable=False, default=False) email_confirm_token = Column(String(255), nullable=True)