moo.core.models.mail.MessageRecipient

class moo.core.models.mail.MessageRecipient(*args, **kwargs)

One row per (message, recipient) pair. Tracks per-recipient read and deleted state. sent_at is denormalized from message.sent_at so that mailbox list queries are single-table scans.

Permission guards:

  • save() on an existing row requires the caller to be a wizard OR the caller to be the recipient of this row. This allows the SDK’s mark_read() / delete_message() / undelete_message() helpers to work for the owning player while blocking attempts to redirect the row to a different recipient. INSERTs (pk is None) are always allowed.

  • delete() (hard-delete) requires the caller to be a wizard. Non-wizard players should use the delete_message() SDK function, which performs a soft-delete by setting deleted = True.

__init__(*args, **kwargs)

Methods

__init__(*args, **kwargs)

adelete([using, keep_parents])

arefresh_from_db([using, fields])

asave([force_insert, force_update, using, ...])

check(**kwargs)

clean()

Hook for doing any extra model-wide validation after clean() has been called on every field by self.clean_fields.

clean_fields([exclude])

Clean all fields and raise a ValidationError containing a dict of all validation errors if any occur.

date_error_message(lookup_type, field_name, ...)

delete(*args, **kwargs)

from_db(db, field_names, values)

full_clean([exclude, validate_unique, ...])

Call clean_fields(), clean(), validate_unique(), and validate_constraints() on the model.

get_constraints()

get_deferred_fields()

Return a set containing names of deferred fields for this instance.

prepare_database_save(field)

refresh_from_db([using, fields])

Reload field values from the database.

save(*args, **kwargs)

Save the current instance.

save_base([raw, force_insert, force_update, ...])

Handle the parts of saving which should be done only once per save, yet need to be done in raw saves, too.

serializable_value(field_name)

Return the value of the field name for this instance.

unique_error_message(model_class, unique_check)

validate_constraints([exclude])

validate_unique([exclude])

Check unique constraints on the model and raise ValidationError if any failed.

Attributes

deleted

A wrapper for a deferred-loading field.

id

A wrapper for a deferred-loading field.

message

Accessor to the related object on the forward side of a many-to-one or one-to-one (via ForwardOneToOneDescriptor subclass) relation.

message_id

objects

pk

read

A wrapper for a deferred-loading field.

recipient

Accessor to the related object on the forward side of a many-to-one or one-to-one (via ForwardOneToOneDescriptor subclass) relation.

recipient_id

sent_at

A wrapper for a deferred-loading field.