Skip to content

.activity_pub.models

cattle_grid.activity_pub.models

Data model used to describe ActivityPub related objects

Actor

Bases: Model

Actors administrated by cattle_grid

Source code in cattle_grid/activity_pub/models.py
class Actor(Model):
    """Actors administrated by cattle_grid"""

    id = fields.IntField(primary_key=True)
    actor_id = fields.CharField(max_length=255, unique=True)
    """The id of the actor"""

    inbox_uri = fields.CharField(max_length=255, unique=True)
    """The uri of the inbox"""
    outbox_uri = fields.CharField(max_length=255, unique=True)
    """The uri of the outbox"""
    following_uri = fields.CharField(max_length=255, unique=True)
    """The uri of the following collection"""
    followers_uri = fields.CharField(max_length=255, unique=True)
    """The uri of the followers collection"""

    preferred_username = fields.CharField(max_length=255, null=True)
    """The preferred username, used as the username part of the
    acct-uri of the actor, i.e. `acct:${preferred_username}@domain`.
    See [RFC 7565 The 'acct' URI Scheme](https://www.rfc-editor.org/rfc/rfc7565.html)."""

    public_key_name = fields.CharField(max_length=255)
    """The name given to the public key, i.e. the id will be
    `${actor_id}#${public_key_name}."""
    public_key = fields.TextField()
    """The public key"""

    automatically_accept_followers = fields.BooleanField()
    """Set to true to indicate cattle_grid should automatically
    accept follow requests"""
    profile: Dict[str, Any] = fields.JSONField()
    """Additional profile values"""

    status = fields.CharEnumField(ActorStatus, default=ActorStatus.active)
    """Represents the status of the actor"""

    followers: fields.ReverseRelation["Follower"]
    following: fields.ReverseRelation["Following"]
    identifiers: fields.ReverseRelation["PublicIdentifier"]

actor_id = fields.CharField(max_length=255, unique=True) class-attribute instance-attribute

The id of the actor

automatically_accept_followers = fields.BooleanField() class-attribute instance-attribute

Set to true to indicate cattle_grid should automatically accept follow requests

followers_uri = fields.CharField(max_length=255, unique=True) class-attribute instance-attribute

The uri of the followers collection

following_uri = fields.CharField(max_length=255, unique=True) class-attribute instance-attribute

The uri of the following collection

inbox_uri = fields.CharField(max_length=255, unique=True) class-attribute instance-attribute

The uri of the inbox

outbox_uri = fields.CharField(max_length=255, unique=True) class-attribute instance-attribute

The uri of the outbox

preferred_username = fields.CharField(max_length=255, null=True) class-attribute instance-attribute

The preferred username, used as the username part of the acct-uri of the actor, i.e. acct:${preferred_username}@domain. See RFC 7565 The ‘acct’ URI Scheme.

profile = fields.JSONField() class-attribute instance-attribute

Additional profile values

public_key = fields.TextField() class-attribute instance-attribute

The public key

public_key_name = fields.CharField(max_length=255) class-attribute instance-attribute

The name given to the public key, i.e. the id will be `${actor_id}#${public_key_name}.

status = fields.CharEnumField(ActorStatus, default=ActorStatus.active) class-attribute instance-attribute

Represents the status of the actor

ActorStatus

Bases: StrEnum

Represents the status of the actor

Source code in cattle_grid/activity_pub/models.py
class ActorStatus(StrEnum):
    """Represents the status of the actor"""

    active = auto()
    deleted = auto()

Blocking

Bases: Model

The people the actor is blocking

Source code in cattle_grid/activity_pub/models.py
class Blocking(Model):
    """The people the actor is blocking"""

    id = fields.IntField(primary_key=True)

    actor: fields.ForeignKeyRelation[Actor] = fields.ForeignKeyField(
        "ap_models.Actor", related_name="blocking"
    )

    blocking = fields.CharField(max_length=255)
    request = fields.CharField(max_length=255)
    active = fields.BooleanField()

Credential

Bases: Model

The secrets of the actor

Source code in cattle_grid/activity_pub/models.py
class Credential(Model):
    """The secrets of the actor"""

    id = fields.IntField(primary_key=True)

    actor_id = fields.CharField(max_length=255)
    identifier = fields.CharField(max_length=255)

    secret = fields.TextField()

Follower

Bases: Model

The people that follow the actor

Source code in cattle_grid/activity_pub/models.py
class Follower(Model):
    """The people that follow the actor"""

    id = fields.IntField(primary_key=True)

    actor: fields.ForeignKeyRelation[Actor] = fields.ForeignKeyField(
        "ap_models.Actor", related_name="followers"
    )

    follower = fields.CharField(max_length=255)
    request = fields.CharField(max_length=255)
    accepted = fields.BooleanField()

Following

Bases: Model

The people the actor is following

Source code in cattle_grid/activity_pub/models.py
class Following(Model):
    """The people the actor is following"""

    id = fields.IntField(primary_key=True)

    actor: fields.ForeignKeyRelation[Actor] = fields.ForeignKeyField(
        "ap_models.Actor", related_name="following"
    )

    following = fields.CharField(max_length=255)
    request = fields.CharField(max_length=255)
    accepted = fields.BooleanField()

InboxLocation

Bases: Model

Describes the location of an inbox. Used to send ActivityPub Activities addressed to the actor to the corresponding inbox.

This information is also collected for remote actors.

Source code in cattle_grid/activity_pub/models.py
class InboxLocation(Model):
    """Describes the location of an inbox. Used to send
    ActivityPub Activities addressed to the actor to the
    corresponding inbox.

    This information is also collected for remote actors.
    """

    id = fields.IntField(primary_key=True)
    actor = fields.CharField(max_length=255, unique=True)
    """The id of the remote actor"""
    inbox = fields.CharField(max_length=255)
    """The inbox of the remote actor"""

actor = fields.CharField(max_length=255, unique=True) class-attribute instance-attribute

The id of the remote actor

inbox = fields.CharField(max_length=255) class-attribute instance-attribute

The inbox of the remote actor

PublicIdentifier

Bases: Model

Public identifiers

Source code in cattle_grid/activity_pub/models.py
class PublicIdentifier(Model):
    """Public identifiers"""

    id = fields.IntField(primary_key=True)

    actor: fields.ForeignKeyRelation[Actor] = fields.ForeignKeyField(
        "ap_models.Actor", related_name="identifiers"
    )
    """The actor the public key belongs to"""

    name = fields.CharField(max_length=255)
    """name of public identifier"""
    identifier = fields.CharField(max_length=255, unique=True)
    """The public identifier, e.g. an acct-uri"""
    preference = fields.IntField(default=0)
    """Determines the order of identifiers in the `identifiers` field of the actor profile"""

actor = fields.ForeignKeyField('ap_models.Actor', related_name='identifiers') class-attribute instance-attribute

The actor the public key belongs to

identifier = fields.CharField(max_length=255, unique=True) class-attribute instance-attribute

The public identifier, e.g. an acct-uri

name = fields.CharField(max_length=255) class-attribute instance-attribute

name of public identifier

preference = fields.IntField(default=0) class-attribute instance-attribute

Determines the order of identifiers in the identifiers field of the actor profile

StoredActivity

Bases: Model

cattle_grid generates activities under some circumstances (see FIXME). These will be stored in this table

Source code in cattle_grid/activity_pub/models.py
class StoredActivity(Model):
    """cattle_grid generates activities under some
    circumstances (see FIXME). These will be stored
    in this table"""

    id = fields.CharField(max_length=255, primary_key=True)

    actor: fields.ForeignKeyRelation[Actor] = fields.ForeignKeyField("ap_models.Actor")
    """The actor this activity orginates from"""

    data: dict = fields.JSONField()
    """The activity"""

    published = fields.DatetimeField()
    """When the activity was published"""

actor = fields.ForeignKeyField('ap_models.Actor') class-attribute instance-attribute

The actor this activity orginates from

data = fields.JSONField() class-attribute instance-attribute

The activity

published = fields.DatetimeField() class-attribute instance-attribute

When the activity was published