# abuse.CinderJob ## Model Info | Key | Value | |---|-----| | Model Name | CinderJob | | Verbose Name | cinder job | | Verbose Name Plural | cinder jobs | | Docstring | <p>CinderJob(id, created, modified, job\_id, target\_addon, resolvable\_in\_reviewer\_tools)</p> | | Is Abstract | False | | Is Proxy | False | | Is Managed | True | | Ordering | [] | | Permissions | [] | | Default Permissions | ('add', 'change', 'delete', 'view') | | Indexes | [] | | Constraints | [<CheckConstraint: check=(NOT (AND: ('job_id', ''))) name='no_empty_job_id'>] | | Database Table | abuse_cinderjob | | Base Manager | None | | Default Manager | None | | File | /data/olympia/src/olympia/abuse/models.py | | Starting Line Number | 92 | | Method Resolution Order | (<class 'olympia.abuse.models.CinderJob'>, <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 | |----------|----------|---------------|-------------|------------| | `VersionReviewerFlags_pending_resolution_cinder_jobs+` | ManyToOneRel | | integer | | | `abusereport` | ManyToOneRel | | integer | | | `appealed_decisions` | ManyToOneRel | | integer | | | `created` | DateTimeField | created | datetime(6) | created | | `decisions` | ManyToOneRel | | integer | | | `id (pk)` | AutoField | id | integer AUTO_INCREMENT | ID | | `job_id` | CharField | job_id | varchar(36) | job id | | `modified` | DateTimeField | modified | datetime(6) | modified | | `pending_rejections` | ManyToManyRel | | through versions.VersionReviewerFlags_pending_resolution_cinder_jobs | | | `queue_moves` | ManyToOneRel | | integer | | | `resolvable_in_reviewer_tools` | BooleanField | resolvable_in_reviewer_tools | bool | resolvable in reviewer tools | | `target_addon` | ForeignKey | target_addon_id | integer UNSIGNED | target addon | ## Relations | Field Name | Field Type | Database Column | Database Type | Related Model | Related Name | |----------|----------|---------------|-------------|-------------|------------| | `target_addon` | ForeignKey | target_addon_id | integer UNSIGNED | addons.Addon | cinderjob_set | fields_reverse_relation=[FieldReverseRelation(name='cinderjob_set', field_type='ManyToOneRel', field_db_type='integer', related_model='abuse.AbuseReport', field_name_on_related_model='cinder_job', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='appealed_decisions', field_type='ManyToOneRel', field_db_type='integer', related_model='abuse.ContentDecision', field_name_on_related_model='appeal_job', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='decisions', field_type='ManyToOneRel', field_db_type='integer', related_model='abuse.ContentDecision', field_name_on_related_model='cinder_job', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='queue_moves', field_type='ManyToOneRel', field_db_type='integer', related_model='abuse.CinderQueueMove', field_name_on_related_model='cinder_job', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='VersionReviewerFlags_pending_resolution_cinder_jobs+ (no reverse relation allowed)', field_type='ManyToOneRel', field_db_type='integer', related_model='versions.VersionReviewerFlags_pending_resolution_cinder_jobs', field_name_on_related_model='cinderjob', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='pending_rejections', field_type='ManyToManyRel', field_db_type='through versions.VersionReviewerFlags_pending_resolution_cinder_jobs', related_model='versions.VersionReviewerFlags', field_name_on_related_model='pending_resolution_cinder_jobs', field_type_on_related_model='ManyToManyField')] ## Reverse Relations | Field Name | Field Type | Database Type | Related Model | Field Name on Related Model | Field Type on Related Model | |----------|----------|-------------|-------------|---------------------------|---------------------------| | `VersionReviewerFlags_pending_resolution_cinder_jobs+ (no reverse relation allowed)` | ManyToOneRel | integer | versions.VersionReviewerFlags_pending_resolution_cinder_jobs | cinderjob | ForeignKey | | `appealed_decisions` | ManyToOneRel | integer | abuse.ContentDecision | appeal_job | ForeignKey | | `cinderjob_set` | ManyToOneRel | integer | abuse.AbuseReport | cinder_job | ForeignKey | | `decisions` | ManyToOneRel | integer | abuse.ContentDecision | cinder_job | ForeignKey | | `pending_rejections` | ManyToManyRel | through versions.VersionReviewerFlags_pending_resolution_cinder_jobs | versions.VersionReviewerFlags | pending_resolution_cinder_jobs | ManyToManyField | | `queue_moves` | ManyToOneRel | integer | abuse.CinderQueueMove | cinder_job | ForeignKey | ## Methods ### Other Methods | Method Name | Signature | |-----------|---------| | `clear_needs_human_review_flags` | `(self)` | | `get_admin_absolute_url` | `(self)` | | `get_admin_url_path` | `(self)` | | `get_cinder_reporter` | `(abuse)` | | `get_entity_helper` | `(target, *, resolved_in_reviewer_tools, addon_version_string=None)` | | `get_next_by_created` | `(self, *, field=<django.db.models.fields.DateTimeField: created>, is_next=True, **kwargs)` | | `get_next_by_modified` | `(self, *, field=<django.db.models.fields.DateTimeField: modified>, is_next=True, **kwargs)` | | `get_previous_by_created` | `(self, *, field=<django.db.models.fields.DateTimeField: created>, is_next=False, **kwargs)` | | `get_previous_by_modified` | `(self, *, field=<django.db.models.fields.DateTimeField: modified>, is_next=False, **kwargs)` | | `get_unfiltered_manager` | `()` | | `handle_already_moderated` | `(self, abuse_report, entity_helper)` | | `notify_reporters` | `(self, action_helper)` | | `process_decision` | `(self, *, decision_cinder_id, decision_action, decision_notes, policy_ids)` | | `process_queue_move` | `(self, *, new_queue, notes)` | | `reload` | `(self)` | | `report` | `(abuse_report)` | | `serializable_reference` | `(self)` | | `should_auto_resolve` | `(self)` | | `update` | `(self, **kw)` | ### Private Methods | Method Name | Signature | |-----------|---------| | `_get_field_value_map` | `(self, meta, exclude=None)` | ## Custom Managers ### default **Class:** `CinderJobManager` *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_addon(self, addon)` ##### `resolvable_in_reviewer_tools(self)` ##### `transform(self, fn)` ##### `unresolved(self)` #### Custom QuerySet **Class:** `CinderJobQuerySet` *Represent a lazy database lookup for a set of objects.* ##### Custom Methods ###### `for_addon(self, addon)` ###### `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.* ###### `pop_transforms(self)` ###### `resolvable_in_reviewer_tools(self)` ###### `transform(self, fn)` ###### `unresolved(self)` ### objects **Class:** `CinderJobManager` *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_addon(self, addon)` ##### `resolvable_in_reviewer_tools(self)` ##### `transform(self, fn)` ##### `unresolved(self)` #### Custom QuerySet **Class:** `CinderJobQuerySet` *Represent a lazy database lookup for a set of objects.* ##### Custom Methods ###### `for_addon(self, addon)` ###### `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.* ###### `pop_transforms(self)` ###### `resolvable_in_reviewer_tools(self)` ###### `transform(self, fn)` ###### `unresolved(self)` --- !!! THIS DOCUMENT WAS *AUTOGENERATED* ON 2025-08-04 !!!