newsletter.models

Attributes

newsletter_recipients

Classes

Newsletter

Represents a newsletter before and after it is sent.

Recipient

Represents a single recipient.

Subscription

Adds subscription management to a recipient.

Module Contents

newsletter.models.newsletter_recipients[source]
class newsletter.models.Newsletter[source]

Bases: onegov.core.orm.Base, onegov.core.orm.mixins.ContentMixin, onegov.core.orm.mixins.TimestampMixin, onegov.search.SearchableContent

Represents a newsletter before and after it is sent.

A newsletter basically consists of a title/subject, a content and a number of recipients. We assume that all newsletters are sent in HTML using onegov.core, which automatically creates a text representation.

__tablename__ = 'newsletters'[source]
es_id = 'name'[source]

The name of the id attribute (not the actual value!).

If you use this on an ORM model, be sure to use a primary key, all other properties are not available during deletion.

es_properties[source]

Returns the type mapping of this model. Each property in the mapping will be read from the model instance.

The returned object needs to be a dict or an object that provides a to_dict method.

Internally, onegov.search stores differing languages in different indices. It does this automatically through langauge detection, or by manually specifying a language.

Note that objects with multiple languages are not supported (each object is supposed to have exactly one language).

Onegov.search will automatically insert the right analyzer for types like these.

There’s currently only limited support for properties here, namely objects and nested mappings do not work! This is going to be added in the future though.

property es_public: bool[source]

Returns True if the model is available to be found by the public. If false, only editors/admins will see this object in the search results.

name: Column[str][source]
validate_name(key: str, name: str) str[source]
title: Column[str][source]
lead: Column[str | None][source]
html: Column[str][source]
sent: Column[datetime | None][source]
scheduled: Column[datetime | None][source]
recipients: relationship[list[Recipient]][source]
property open_recipients: tuple[Recipient, Ellipsis][source]
show_news_as_tiles: onegov.core.orm.mixins.dict_property[bool][source]
newsletter_categories: onegov.core.orm.mixins.dict_property[list[str] | None][source]
class newsletter.models.Recipient[source]

Bases: onegov.core.orm.Base, onegov.core.orm.mixins.TimestampMixin, onegov.core.orm.mixins.ContentMixin

Represents a single recipient.

Recipients may be grouped by any kind of string. Only inside their groups are recipient addresses unique. However, groups are an optional feature and they are not deeply integrated. If you don’t care for group, never use them and the list becomes like a simple list of addresses with no duplicate addresses present.

__tablename__ = 'recipients'[source]
id: Column[uuid.UUID][source]
address: Column[str][source]
validate_address(key: str, address: str) str[source]
group: Column[str | None][source]
newsletters: relationship[list[Newsletter]][source]
token: Column[str][source]
confirmed: Column[bool][source]
subscribed_categories: onegov.core.orm.mixins.dict_property[list[str] | None][source]
property __table_args__: tuple[sqlalchemy.Index, Ellipsis][source]
property subscription: Subscription[source]
class newsletter.models.Subscription(recipient: Recipient, token: str)[source]

Adds subscription management to a recipient.

recipient[source]
token[source]
property recipient_id: uuid.UUID[source]
confirm() bool[source]
unsubscribe() bool[source]