flask_more_smorest.perms.models.abstract_setting

Abstract UserSetting model for key-value storage.

Classes

AbstractUserSetting(**kwargs)

Abstract UserSetting model for key-value storage.

class flask_more_smorest.perms.models.abstract_setting.AbstractUserSetting(**kwargs)[source]

Abstract UserSetting model for key-value storage.

This is an abstract base class - it does NOT create a database table. Subclasses must define concrete fields and table configuration.

Permission checks are delegated to the owning user by default (via UserOwnershipMixin). Override _can_read/_can_write/_can_create to customize.

Subclassing example:

from flask_more_smorest.perms import AbstractUserSetting

class CustomUserSetting(AbstractUserSetting):
    __tablename__ = "user_setting"

    key: Mapped[str] = mapped_column(db.String(80), nullable=False)
    value: Mapped[str | None] = mapped_column(db.String(1024), nullable=True)

    __table_args__ = (db.UniqueConstraint("user_id", "key"),)

    # Optional: custom fields
    metadata: Mapped[dict] = mapped_column(db.JSON, default={})
    encrypted: Mapped[bool] = mapped_column(db.Boolean, default=False)
key: Mapped[str] = <sqlalchemy.orm.properties.MappedColumn object>
value: Mapped[str | None] = <sqlalchemy.orm.properties.MappedColumn object>