activity.ActivityLog
Model Info
Key |
Value |
---|---|
Model Name |
ActivityLog |
Verbose Name |
activity log |
Verbose Name Plural |
activity logs |
Docstring |
ActivityLog(id, created, modified, user, action, _arguments, _details) |
Is Abstract |
False |
Is Proxy |
False |
Is Managed |
True |
Ordering |
(‘-created’,) |
Permissions |
[] |
Default Permissions |
(‘add’, ‘change’, ‘delete’, ‘view’) |
Indexes |
[<Index: fields=[‘action’] name=’log_activity_1bd4707b’>, <Index: fields=[‘created’] name=’log_activity_created_idx’>] |
Constraints |
[] |
Database Table |
log_activity |
Base Manager |
None |
Default Manager |
None |
File |
/data/olympia/src/olympia/activity/models.py |
Starting Line Number |
521 |
Method Resolution Order |
(<class ‘olympia.activity.models.ActivityLog’>, <class ‘olympia.amo.models.ModelBase’>, <class ‘olympia.amo.models.SaveUpdateMixin’>, <class ‘django.db.models.base.Model’>, <class ‘django.db.models.utils.AltersData’>, <class ‘object’>) |
Fields
Field Name |
Field Type |
Database Column |
Database Type |
Verbose Name |
---|---|---|---|---|
|
TextField |
arguments |
longtext |
arguments |
|
TextField |
details |
longtext |
details |
|
SmallIntegerField |
action |
smallint |
action |
|
ManyToOneRel |
integer |
||
|
OneToOneRel |
integer |
||
|
ManyToOneRel |
integer |
||
|
ManyToOneRel |
integer |
||
|
ManyToOneRel |
integer |
||
|
ManyToManyRel |
through activity.ContentDecisionLog |
||
|
ManyToOneRel |
integer |
||
|
DateTimeField |
created |
datetime(6) |
created |
|
ManyToOneRel |
integer |
||
|
AutoField |
id |
integer AUTO_INCREMENT |
ID |
|
OneToOneRel |
integer |
||
|
DateTimeField |
modified |
datetime(6) |
modified |
|
ManyToOneRel |
integer |
||
|
ManyToOneRel |
integer |
||
|
ManyToOneRel |
integer |
||
|
ForeignKey |
user_id |
integer |
user |
|
ManyToOneRel |
integer |
Relations
Field Name |
Field Type |
Database Column |
Database Type |
Related Model |
Related Name |
---|---|---|---|---|---|
|
ForeignKey |
user_id |
integer |
users.UserProfile |
activitylog_set |
fields_reverse_relation=[FieldReverseRelation(name=’activitylog_set’, field_type=’ManyToManyRel’, field_db_type=’through activity.ContentDecisionLog’, related_model=’abuse.ContentDecision’, field_name_on_related_model=’activities’, field_type_on_related_model=’ManyToManyField’), FieldReverseRelation(name=’activitylog_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’activity.AddonLog’, field_name_on_related_model=’activity_log’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’activitylog_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’activity.CommentLog’, field_name_on_related_model=’activity_log’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’activitylog_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’activity.VersionLog’, field_name_on_related_model=’activity_log’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’activitylog_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’activity.ReviewActionReasonLog’, field_name_on_related_model=’activity_log’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’activitylog_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’activity.CinderPolicyLog’, field_name_on_related_model=’activity_log’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’activitylog_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’activity.ContentDecisionLog’, field_name_on_related_model=’activity_log’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’activitylog_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’activity.GroupLog’, field_name_on_related_model=’activity_log’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’activitylog_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’activity.BlockLog’, field_name_on_related_model=’activity_log’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’activitylog_set’, field_type=’OneToOneRel’, field_db_type=’integer’, related_model=’activity.IPLog’, field_name_on_related_model=’activity_log’, field_type_on_related_model=’OneToOneField’), FieldReverseRelation(name=’activitylog_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’activity.RatingLog’, field_name_on_related_model=’activity_log’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’activitylog_set’, field_type=’OneToOneRel’, field_db_type=’integer’, related_model=’activity.AttachmentLog’, field_name_on_related_model=’activity_log’, field_type_on_related_model=’OneToOneField’), FieldReverseRelation(name=’activitylog_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’reviewers.ReviewQueueHistory’, field_name_on_related_model=’review_decision_log’, field_type_on_related_model=’ForeignKey’)]
Reverse Relations
Field Name |
Field Type |
Database Type |
Related Model |
Field Name on Related Model |
Field Type on Related Model |
---|---|---|---|---|---|
|
ManyToManyRel |
through activity.ContentDecisionLog |
abuse.ContentDecision |
activities |
ManyToManyField |
|
ManyToOneRel |
integer |
activity.AddonLog |
activity_log |
ForeignKey |
|
ManyToOneRel |
integer |
activity.CommentLog |
activity_log |
ForeignKey |
|
ManyToOneRel |
integer |
activity.VersionLog |
activity_log |
ForeignKey |
|
ManyToOneRel |
integer |
activity.ReviewActionReasonLog |
activity_log |
ForeignKey |
|
ManyToOneRel |
integer |
activity.CinderPolicyLog |
activity_log |
ForeignKey |
|
ManyToOneRel |
integer |
activity.ContentDecisionLog |
activity_log |
ForeignKey |
|
ManyToOneRel |
integer |
activity.GroupLog |
activity_log |
ForeignKey |
|
ManyToOneRel |
integer |
activity.BlockLog |
activity_log |
ForeignKey |
|
OneToOneRel |
integer |
activity.IPLog |
activity_log |
OneToOneField |
|
ManyToOneRel |
integer |
activity.RatingLog |
activity_log |
ForeignKey |
|
OneToOneRel |
integer |
activity.AttachmentLog |
activity_log |
OneToOneField |
|
ManyToOneRel |
integer |
reviewers.ReviewQueueHistory |
review_decision_log |
ForeignKey |
Methods
Other Methods
Method Name |
Signature |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Private Methods
Method Name |
Signature |
---|---|
|
|
Custom Managers
default
Class: ActivityLogManager
*Base for all managers in AMO.
Returns BaseQuerySets.
If a model has translated fields, they’ll be attached through a transform function.*
Custom Methods
for_addons(self, addons)
for_block(self, block)
for_groups(self, groups)
for_guidblock(self, guid)
for_versions(self, versions)
moderation_events(self)
review_log(self)
transform(self, fn)
Custom QuerySet
Class: ActivityLogQuerySet
Represent a lazy database lookup for a set of objects.
Custom Methods
default_transformer(self, logs)
get_with_primary_fallback(self, *args, **kwargs)
*Like get(), but if using a non-default database and DoesNotExist is raised, another attempt is made using the default database instead.
Intended to be used in places where replication lag could cause the object not to exist for a brief moment and forcing use of primary db at all times is undesirable.*
no_transforms(self)
only_translations(self)
Remove all transforms except translations.
optimized_count(self)
*Slightly optimized count() for cases where there is a DISTINCT in the queryset.
When a count() call is made on a queryset that has a distinct, that causes django to run the full SELECT (including all fields, distinct, ordering etc) in a subquery and then COUNT() on the result of that subquery, which is costly/innefficient. That’s tracked in https://code.djangoproject.com/ticket/30685. We can’t easily fix the fact that there is a subquery, but we can avoid selecting all fields and ordering in that subquery needlessly.*
pending_for_developer(self, for_version=None)
*Return ActivityLog that are considered “pending” for developers.
An Activity will be considered “pending” if it’s a review queue activity not hidden to developers that is more recent that the latest activity created by a developer/reviewer. Said differently: if a developer doesn’t do something after a reviewer action, that reviewer action will be considered pending.*
pop_transforms(self)
transform(self, fn)
objects
Class: ActivityLogManager
*Base for all managers in AMO.
Returns BaseQuerySets.
If a model has translated fields, they’ll be attached through a transform function.*
Custom Methods
for_addons(self, addons)
for_block(self, block)
for_groups(self, groups)
for_guidblock(self, guid)
for_versions(self, versions)
moderation_events(self)
review_log(self)
transform(self, fn)
Custom QuerySet
Class: ActivityLogQuerySet
Represent a lazy database lookup for a set of objects.
Custom Methods
default_transformer(self, logs)
get_with_primary_fallback(self, *args, **kwargs)
*Like get(), but if using a non-default database and DoesNotExist is raised, another attempt is made using the default database instead.
Intended to be used in places where replication lag could cause the object not to exist for a brief moment and forcing use of primary db at all times is undesirable.*
no_transforms(self)
only_translations(self)
Remove all transforms except translations.
optimized_count(self)
*Slightly optimized count() for cases where there is a DISTINCT in the queryset.
When a count() call is made on a queryset that has a distinct, that causes django to run the full SELECT (including all fields, distinct, ordering etc) in a subquery and then COUNT() on the result of that subquery, which is costly/innefficient. That’s tracked in https://code.djangoproject.com/ticket/30685. We can’t easily fix the fact that there is a subquery, but we can avoid selecting all fields and ordering in that subquery needlessly.*
pending_for_developer(self, for_version=None)
*Return ActivityLog that are considered “pending” for developers.
An Activity will be considered “pending” if it’s a review queue activity not hidden to developers that is more recent that the latest activity created by a developer/reviewer. Said differently: if a developer doesn’t do something after a reviewer action, that reviewer action will be considered pending.*
pop_transforms(self)
transform(self, fn)
!!! THIS DOCUMENT WAS AUTOGENERATED ON 2025-10-07 !!!