Skip to content

AbstractTelegramSettings

Bases: Model

Represent telegram settings.

Source code in django_telegram_app/models.py
class AbstractTelegramSettings(models.Model):
    """Represent telegram settings."""

    if TYPE_CHECKING:
        data: models.JSONField[dict[str, str]]

    chat_id = models.IntegerField(verbose_name=_("chat id"), unique=True)
    data = models.JSONField(verbose_name=_("data"), default=dict, blank=True, encoder=DjangoJSONEncoder)
    updated_at = models.DateTimeField(verbose_name=_("updated at"), auto_now=True)

    class Meta:
        """Set meta options."""

        abstract = True

    @classmethod
    def create_from_telegram_update(cls, telegram_update: TelegramUpdate):
        """Create telegram settings from a telegram update.

        Subclasses can override this method to customize the creation process.
        """
        return cls.objects.create(chat_id=telegram_update.chat_id)

    def __str__(self):
        """Return a string representation of the telegram setting."""
        return f"Chat {self.chat_id}"

Meta

Set meta options.

Source code in django_telegram_app/models.py
class Meta:
    """Set meta options."""

    abstract = True

__str__()

Return a string representation of the telegram setting.

Source code in django_telegram_app/models.py
def __str__(self):
    """Return a string representation of the telegram setting."""
    return f"Chat {self.chat_id}"

create_from_telegram_update(telegram_update) classmethod

Create telegram settings from a telegram update.

Subclasses can override this method to customize the creation process.

Source code in django_telegram_app/models.py
@classmethod
def create_from_telegram_update(cls, telegram_update: TelegramUpdate):
    """Create telegram settings from a telegram update.

    Subclasses can override this method to customize the creation process.
    """
    return cls.objects.create(chat_id=telegram_update.chat_id)

TelegramSettings

Bases: AbstractTelegramSettings

Concrete implementation of AbstractTelegramSettings.

Source code in django_telegram_app/models.py
class TelegramSettings(AbstractTelegramSettings):
    """Concrete implementation of AbstractTelegramSettings."""

    class Meta:  # type: ignore[reportIncompatibleVariableOverride]
        """Set meta options."""

        verbose_name = _("telegram setting")
        verbose_name_plural = _("telegram settings")
        swappable = "TELEGRAM_SETTINGS_MODEL"

Meta

Set meta options.

Source code in django_telegram_app/models.py
class Meta:  # type: ignore[reportIncompatibleVariableOverride]
    """Set meta options."""

    verbose_name = _("telegram setting")
    verbose_name_plural = _("telegram settings")
    swappable = "TELEGRAM_SETTINGS_MODEL"