add announcements fields + migration

This commit is contained in:
Michael Genson
2026-03-27 20:22:25 +00:00
parent 7a8a511d48
commit 312ba32fa0
4 changed files with 55 additions and 1 deletions

View File

@@ -0,0 +1,47 @@
"""add announcements
Revision ID: 4395a04f7784
Revises: cdc93edaf73d
Create Date: 2026-03-27 20:19:07.459075
"""
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
revision = "4395a04f7784"
down_revision: str | None = "cdc93edaf73d"
branch_labels: str | tuple[str, ...] | None = None
depends_on: str | tuple[str, ...] | None = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table("group_preferences", schema=None) as batch_op:
batch_op.add_column(sa.Column("show_announcements", sa.Boolean(), nullable=False, server_default=sa.true()))
with op.batch_alter_table("household_preferences", schema=None) as batch_op:
batch_op.add_column(sa.Column("show_announcements", sa.Boolean(), nullable=False, server_default=sa.true()))
with op.batch_alter_table("users", schema=None) as batch_op:
batch_op.add_column(sa.Column("show_announcements", sa.Boolean(), nullable=False, server_default=sa.true()))
batch_op.add_column(sa.Column("last_read_announcement", sa.String(), nullable=True))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table("users", schema=None) as batch_op:
batch_op.drop_column("last_read_announcement")
batch_op.drop_column("show_announcements")
with op.batch_alter_table("household_preferences", schema=None) as batch_op:
batch_op.drop_column("show_announcements")
with op.batch_alter_table("group_preferences", schema=None) as batch_op:
batch_op.drop_column("show_announcements")
# ### end Alembic commands ###

View File

@@ -20,6 +20,7 @@ class GroupPreferencesModel(SqlAlchemyBase, BaseMixins):
group: Mapped[Optional["Group"]] = orm.relationship("Group", back_populates="preferences")
private_group: Mapped[bool | None] = mapped_column(sa.Boolean, default=True)
show_announcements: Mapped[bool] = mapped_column(sa.Boolean, default=True)
# Deprecated (see household preferences)
first_day_of_week: Mapped[int | None] = mapped_column(sa.Integer, default=0)

View File

@@ -22,6 +22,8 @@ class HouseholdPreferencesModel(SqlAlchemyBase, BaseMixins):
group_id: AssociationProxy[GUID] = association_proxy("household", "group_id")
private_household: Mapped[bool | None] = mapped_column(sa.Boolean, default=True)
show_announcements: Mapped[bool] = mapped_column(sa.Boolean, default=True)
lock_recipe_edits_from_other_households: Mapped[bool | None] = mapped_column(sa.Boolean, default=True)
first_day_of_week: Mapped[int | None] = mapped_column(sa.Integer, default=0)

View File

@@ -68,7 +68,11 @@ class User(SqlAlchemyBase, BaseMixins):
login_attemps: Mapped[int | None] = mapped_column(Integer, default=0)
locked_at: Mapped[datetime | None] = mapped_column(NaiveDateTime, default=None)
# Group Permissions
# Announcements
show_announcements: Mapped[bool] = mapped_column(Boolean, default=True)
last_read_announcement: Mapped[str | None] = mapped_column(String)
# Permissions
can_manage_household: Mapped[bool | None] = mapped_column(Boolean, default=False)
can_manage: Mapped[bool | None] = mapped_column(Boolean, default=False)
can_invite: Mapped[bool | None] = mapped_column(Boolean, default=False)