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)
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)
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-07-09 !!!