# addons.Addon ## Model Info | Key | Value | |---|-----| | Model Name | Addon | | Verbose Name | addon | | Verbose Name Plural | addons | | Docstring | <p>Addon(created, modified, id, guid, slug, name, default\_locale, type, status, icon\_type, icon\_hash, homepage, support\_email, support\_url, description, summary, developer\_comments, eula, privacy\_policy, average\_rating, bayesian\_rating, total\_ratings, text\_ratings\_count, weekly\_downloads, hotness, average\_daily\_users, last\_updated, disabled\_by\_user, target\_locale, contributions, \_current\_version, is\_experimental, reputation, requires\_payment)</p> | | Is Abstract | False | | Is Proxy | False | | Is Managed | True | | Ordering | [] | | Permissions | [] | | Default Permissions | ('add', 'change', 'delete', 'view') | | Indexes | [<Index: fields=['bayesian_rating'] name='bayesianrating'>, <Index: fields=['created'] name='addons_created_idx'>, <Index: fields=['_current_version'] name='current_version'>, <Index: fields=['disabled_by_user'] name='inactive'>, <Index: fields=['hotness'] name='hotness_idx'>, <Index: fields=['last_updated'] name='last_updated'>, <Index: fields=['modified'] name='modified_idx'>, <Index: fields=['status'] name='addons_status_idx'>, <Index: fields=['target_locale'] name='target_locale'>, <Index: fields=['type'] name='addontype_id'>, <Index: fields=['weekly_downloads'] name='weeklydownloads_idx'>, <Index: fields=['average_daily_users', 'type'] name='adus_type_idx'>, <Index: fields=['bayesian_rating', 'type'] name='rating_type_idx'>, <Index: fields=['created', 'type'] name='created_type_idx'>, <Index: fields=['last_updated', 'type'] name='last_updated_type_idx'>, <Index: fields=['modified', 'type'] name='modified_type_idx'>, <Index: fields=['type', 'status', 'disabled_by_user'] name='type_status_inactive_idx'>, <Index: fields=['weekly_downloads', 'type'] name='downloads_type_idx'>, <Index: fields=['type', 'status', 'disabled_by_user', '_current_version'] name='visible_idx'>, <Index: fields=['name', 'status', 'type'] name='name_2'>] | | Constraints | [] | | Database Table | addons | | Base Manager | unfiltered | | Default Manager | None | | File | /data/olympia/src/olympia/addons/models.py | | Starting Line Number | 491 | | Method Resolution Order | (<class 'olympia.addons.models.Addon'>, <class 'olympia.amo.models.OnChangeMixin'>, <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 | |----------|----------|---------------|-------------|------------| | `BannedUserContent_addons+` | ManyToOneRel | | integer UNSIGNED | | | `_current_version` | ForeignKey | current_version | integer UNSIGNED | current version | | `_ratings` | ManyToOneRel | | integer UNSIGNED | | | `addon_tags` | ManyToOneRel | | integer UNSIGNED | | | `addonapprovalscounter` | OneToOneRel | | integer UNSIGNED | | | `addonbrowsermapping` | ManyToOneRel | | integer UNSIGNED | | | `addoncategory` | ManyToOneRel | | integer UNSIGNED | | | `addonguid` | OneToOneRel | | integer UNSIGNED | | | `addonlog` | ManyToOneRel | | integer UNSIGNED | | | `addonuser` | ManyToOneRel | | integer UNSIGNED | | | `addonuserpendingconfirmation` | ManyToOneRel | | integer UNSIGNED | | | `authors` | FilterableManyToManyField | authors | through addons.AddonUser | authors | | `average_daily_users` | PositiveIntegerField | average_daily_users | integer UNSIGNED | average daily users | | `average_rating` | FloatField | averagerating | double precision | average rating | | `bannedusercontent` | ManyToManyRel | | through users.BannedUserContent_addons | | | `bayesian_rating` | FloatField | bayesianrating | double precision | bayesian rating | | `cinderjob` | ManyToOneRel | | integer UNSIGNED | | | `collectionaddon` | ManyToOneRel | | integer UNSIGNED | | | `collections` | ManyToManyRel | | through bandwagon.CollectionAddon | | | `content_deleted_on_force_disable` | OneToOneRel | | integer UNSIGNED | | | `contributions` | URLField | contributions | varchar(255) | contributions | | `created` | DateTimeField | created | datetime(6) | created | | `decisions_on` | ManyToOneRel | | integer UNSIGNED | | | `default_locale` | CharField | defaultlocale | varchar(10) | default locale | | `description` | PurifiedMarkdownField | description | integer UNSIGNED | description | | `developer_comments` | PurifiedMarkdownField | developercomments | integer UNSIGNED | developer comments | | `disabled_by_user` | BooleanField | inactive | bool | disabled by user | | `discoveryitem` | OneToOneRel | | integer UNSIGNED | | | `eula` | PurifiedMarkdownField | eula | integer UNSIGNED | eula | | `fileupload` | ManyToOneRel | | integer UNSIGNED | | | `frozenaddon` | ManyToOneRel | | integer UNSIGNED | | | `guid` | CharField | guid | varchar(255) | guid | | `homepage` | TranslatedField | homepage | integer UNSIGNED | homepage | | `hotness` | FloatField | hotness | double precision | hotness | | `icon_hash` | CharField | icon_hash | varchar(8) | icon hash | | `icon_type` | CharField | icontype | varchar(25) | icon type | | `id (pk)` | PositiveAutoField | id | integer UNSIGNED AUTO_INCREMENT | id | | `is_experimental` | BooleanField | experimental | bool | is experimental | | `last_updated` | DateTimeField | last_updated | datetime(6) | last updated | | `migrated_from_lwt` | ManyToOneRel | | integer UNSIGNED | | | `modified` | DateTimeField | modified | datetime(6) | modified | | `name` | TranslatedField | name | integer UNSIGNED | name | | `previews` | ManyToOneRel | | integer UNSIGNED | | | `primaryhero` | OneToOneRel | | integer UNSIGNED | | | `privacy_policy` | PurifiedMarkdownField | privacypolicy | integer UNSIGNED | privacy policy | | `promotedaddon` | ManyToOneRel | | integer UNSIGNED | | | `ratingaggregate` | OneToOneRel | | integer UNSIGNED | | | `regional_restrictions` | OneToOneRel | | integer UNSIGNED | | | `reputation` | SmallIntegerField | reputation | smallint | reputation | | `requires_payment` | BooleanField | requires_payment | bool | requires payment | | `reviewerflags` | OneToOneRel | | integer UNSIGNED | | | `reviewersubscription` | ManyToOneRel | | integer UNSIGNED | | | `rsskey` | ManyToOneRel | | integer UNSIGNED | | | `slug` | CharField | slug | varchar(30) | slug | | `status` | PositiveIntegerField | status | integer UNSIGNED | status | | `summary` | NoURLsField | summary | integer UNSIGNED | summary | | `support_email` | TranslatedField | supportemail | integer UNSIGNED | support email | | `support_url` | TranslatedField | supporturl | integer UNSIGNED | support url | | `tags` | ManyToManyRel | | through tags.AddonTag | | | `target_locale` | CharField | target_locale | varchar(255) | target locale | | `text_ratings_count` | PositiveIntegerField | textreviewscount | integer UNSIGNED | text ratings count | | `total_ratings` | PositiveIntegerField | totalreviews | integer UNSIGNED | total ratings | | `type` | PositiveIntegerField | addontype_id | integer UNSIGNED | type | | `versions` | ManyToOneRel | | integer UNSIGNED | | | `weekly_downloads` | PositiveIntegerField | weeklydownloads | integer UNSIGNED | weekly downloads | | `whiteboard` | OneToOneRel | | integer UNSIGNED | | ## Relations | Field Name | Field Type | Database Column | Database Type | Related Model | Related Name | |----------|----------|---------------|-------------|-------------|------------| | `_current_version` | ForeignKey | current_version | integer UNSIGNED | versions.Version | + | | `authors` | FilterableManyToManyField | authors | through addons.AddonUser | users.UserProfile | addons | | `description` | PurifiedMarkdownField | description | integer UNSIGNED | translations.PurifiedMarkdownTranslation | Addon_description_set+ | | `developer_comments` | PurifiedMarkdownField | developercomments | integer UNSIGNED | translations.PurifiedMarkdownTranslation | Addon_developer_comments_set+ | | `eula` | PurifiedMarkdownField | eula | integer UNSIGNED | translations.PurifiedMarkdownTranslation | Addon_eula_set+ | | `homepage` | TranslatedField | homepage | integer UNSIGNED | translations.Translation | Addon_homepage_set+ | | `name` | TranslatedField | name | integer UNSIGNED | translations.Translation | Addon_name_set+ | | `privacy_policy` | PurifiedMarkdownField | privacypolicy | integer UNSIGNED | translations.PurifiedMarkdownTranslation | Addon_privacy_policy_set+ | | `summary` | NoURLsField | summary | integer UNSIGNED | translations.NoURLsTranslation | Addon_summary_set+ | | `support_email` | TranslatedField | supportemail | integer UNSIGNED | translations.Translation | Addon_support_email_set+ | | `support_url` | TranslatedField | supporturl | integer UNSIGNED | translations.Translation | Addon_support_url_set+ | fields_reverse_relation=[FieldReverseRelation(name='addon_set', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='abuse.CinderJob', field_name_on_related_model='target_addon', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='decisions_on', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='abuse.ContentDecision', field_name_on_related_model='addon', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='addon_set', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='activity.AddonLog', field_name_on_related_model='addon', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='reviewerflags', field_type='OneToOneRel', field_db_type='integer UNSIGNED', related_model='addons.AddonReviewerFlags', field_name_on_related_model='addon', field_type_on_related_model='OneToOneField'), FieldReverseRelation(name='regional_restrictions', field_type='OneToOneRel', field_db_type='integer UNSIGNED', related_model='addons.AddonRegionalRestrictions', field_name_on_related_model='addon', field_type_on_related_model='OneToOneField'), FieldReverseRelation(name='migrated_from_lwt', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='addons.MigratedLWT', field_name_on_related_model='static_theme', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='addon_set', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='addons.AddonCategory', field_name_on_related_model='addon', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='addon_set', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='addons.AddonUser', field_name_on_related_model='addon', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='addon_set', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='addons.AddonUserPendingConfirmation', field_name_on_related_model='addon', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='addon_set', field_type='OneToOneRel', field_db_type='integer UNSIGNED', related_model='addons.AddonApprovalsCounter', field_name_on_related_model='addon', field_type_on_related_model='OneToOneField'), FieldReverseRelation(name='previews', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='addons.Preview', field_name_on_related_model='addon', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='addon_set', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='addons.FrozenAddon', field_name_on_related_model='addon', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='addon_set', field_type='OneToOneRel', field_db_type='integer UNSIGNED', related_model='addons.AddonGUID', field_name_on_related_model='addon', field_type_on_related_model='OneToOneField'), FieldReverseRelation(name='addon_set', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='addons.AddonBrowserMapping', field_name_on_related_model='addon', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='content_deleted_on_force_disable', field_type='OneToOneRel', field_db_type='integer UNSIGNED', related_model='addons.DisabledAddonContent', field_name_on_related_model='addon', field_type_on_related_model='OneToOneField'), FieldReverseRelation(name='collections', field_type='ManyToManyRel', field_db_type='through bandwagon.CollectionAddon', related_model='bandwagon.Collection', field_name_on_related_model='addons', field_type_on_related_model='ManyToManyField'), FieldReverseRelation(name='addon_set', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='bandwagon.CollectionAddon', field_name_on_related_model='addon', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='addon_set', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='devhub.RssKey', field_name_on_related_model='addon', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='addon_set', field_type='OneToOneRel', field_db_type='integer UNSIGNED', related_model='discovery.DiscoveryItem', field_name_on_related_model='addon', field_type_on_related_model='OneToOneField'), FieldReverseRelation(name='addon_set', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='files.FileUpload', field_name_on_related_model='addon', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='addon_set', field_type='OneToOneRel', field_db_type='integer UNSIGNED', related_model='hero.PrimaryHero', field_name_on_related_model='addon', field_type_on_related_model='OneToOneField'), FieldReverseRelation(name='promotedaddon', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='promoted.PromotedAddon', field_name_on_related_model='addon', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='_ratings', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='ratings.Rating', field_name_on_related_model='addon', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='addon_set', field_type='OneToOneRel', field_db_type='integer UNSIGNED', related_model='ratings.RatingAggregate', field_name_on_related_model='addon', field_type_on_related_model='OneToOneField'), FieldReverseRelation(name='addon_set', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='reviewers.ReviewerSubscription', field_name_on_related_model='addon', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='addon_set', field_type='OneToOneRel', field_db_type='integer UNSIGNED', related_model='reviewers.Whiteboard', field_name_on_related_model='addon', field_type_on_related_model='OneToOneField'), FieldReverseRelation(name='tags', field_type='ManyToManyRel', field_db_type='through tags.AddonTag', related_model='tags.Tag', field_name_on_related_model='addons', field_type_on_related_model='ManyToManyField'), FieldReverseRelation(name='addon_tags', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='tags.AddonTag', field_name_on_related_model='addon', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='BannedUserContent_addons+ (no reverse relation allowed)', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='users.BannedUserContent_addons', field_name_on_related_model='addon', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='addon_set', field_type='ManyToManyRel', field_db_type='through users.BannedUserContent_addons', related_model='users.BannedUserContent', field_name_on_related_model='addons', field_type_on_related_model='ManyToManyField'), FieldReverseRelation(name='versions', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='versions.Version', field_name_on_related_model='addon', 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 | |----------|----------|-------------|-------------|---------------------------|---------------------------| | `BannedUserContent_addons+ (no reverse relation allowed)` | ManyToOneRel | integer UNSIGNED | users.BannedUserContent_addons | addon | ForeignKey | | `_ratings` | ManyToOneRel | integer UNSIGNED | ratings.Rating | addon | ForeignKey | | `addon_set` | ManyToOneRel | integer UNSIGNED | abuse.CinderJob | target_addon | ForeignKey | | `addon_set` | ManyToOneRel | integer UNSIGNED | activity.AddonLog | addon | ForeignKey | | `addon_set` | ManyToOneRel | integer UNSIGNED | addons.AddonCategory | addon | ForeignKey | | `addon_set` | ManyToOneRel | integer UNSIGNED | addons.AddonUser | addon | ForeignKey | | `addon_set` | ManyToOneRel | integer UNSIGNED | addons.AddonUserPendingConfirmation | addon | ForeignKey | | `addon_set` | OneToOneRel | integer UNSIGNED | addons.AddonApprovalsCounter | addon | OneToOneField | | `addon_set` | ManyToOneRel | integer UNSIGNED | addons.FrozenAddon | addon | ForeignKey | | `addon_set` | OneToOneRel | integer UNSIGNED | addons.AddonGUID | addon | OneToOneField | | `addon_set` | ManyToOneRel | integer UNSIGNED | addons.AddonBrowserMapping | addon | ForeignKey | | `addon_set` | ManyToOneRel | integer UNSIGNED | bandwagon.CollectionAddon | addon | ForeignKey | | `addon_set` | ManyToOneRel | integer UNSIGNED | devhub.RssKey | addon | ForeignKey | | `addon_set` | OneToOneRel | integer UNSIGNED | discovery.DiscoveryItem | addon | OneToOneField | | `addon_set` | ManyToOneRel | integer UNSIGNED | files.FileUpload | addon | ForeignKey | | `addon_set` | OneToOneRel | integer UNSIGNED | hero.PrimaryHero | addon | OneToOneField | | `addon_set` | OneToOneRel | integer UNSIGNED | ratings.RatingAggregate | addon | OneToOneField | | `addon_set` | ManyToOneRel | integer UNSIGNED | reviewers.ReviewerSubscription | addon | ForeignKey | | `addon_set` | OneToOneRel | integer UNSIGNED | reviewers.Whiteboard | addon | OneToOneField | | `addon_set` | ManyToManyRel | through users.BannedUserContent_addons | users.BannedUserContent | addons | ManyToManyField | | `addon_tags` | ManyToOneRel | integer UNSIGNED | tags.AddonTag | addon | ForeignKey | | `collections` | ManyToManyRel | through bandwagon.CollectionAddon | bandwagon.Collection | addons | ManyToManyField | | `content_deleted_on_force_disable` | OneToOneRel | integer UNSIGNED | addons.DisabledAddonContent | addon | OneToOneField | | `decisions_on` | ManyToOneRel | integer UNSIGNED | abuse.ContentDecision | addon | ForeignKey | | `migrated_from_lwt` | ManyToOneRel | integer UNSIGNED | addons.MigratedLWT | static_theme | ForeignKey | | `previews` | ManyToOneRel | integer UNSIGNED | addons.Preview | addon | ForeignKey | | `promotedaddon` | ManyToOneRel | integer UNSIGNED | promoted.PromotedAddon | addon | ForeignKey | | `regional_restrictions` | OneToOneRel | integer UNSIGNED | addons.AddonRegionalRestrictions | addon | OneToOneField | | `reviewerflags` | OneToOneRel | integer UNSIGNED | addons.AddonReviewerFlags | addon | OneToOneField | | `tags` | ManyToManyRel | through tags.AddonTag | tags.Tag | addons | ManyToManyField | | `versions` | ManyToOneRel | integer UNSIGNED | versions.Version | addon | ForeignKey | ## Methods ### Other Methods | Method Name | Signature | |-----------|---------| | `all_applications_for` | `(self, promoted_group=None)` | | `allow_resubmission` | `(self)` | | `approve_for_version` | `(self, version=None, promoted_groups=None)` | | `approved_applications_for` | `(self, promoted_group=None)` | | `approved_promotions` | `(self, promoted_group=None)` | | `attach_all_authors` | `(addons, addon_dict=None)` | | `attach_listed_authors` | `(addons, addon_dict=None)` | | `attach_previews` | `(addons, addon_dict=None, no_transforms=False)` | | `attach_related_versions` | `(addons, addon_dict=None)` | | `attach_static_categories` | `(addons, addon_dict=None)` | | `can_be_deleted` | `(self)` | | `can_request_review` | `(self)` | | `clean_slug` | `(self, slug_field='slug')` | | `deny_resubmission` | `(self)` | | `disable_all_files` | `(addons, reason)` | | `find_latest_public_listed_version` | `(self)` | | `find_latest_version` | `(self, channel, exclude=(5,), deleted=False)` | | `force_disable` | `(self, skip_activity_log=False)` | | `force_enable` | `(self, skip_activity_log=False)` | | `from_upload` | `(upload, *, selected_apps, parsed_data, client_info=None, channel=2)` | | `get_admin_absolute_url` | `(self)` | | `get_admin_url_path` | `(self)` | | `get_default_icon_url` | `(self, size)` | | `get_detail_url` | `(self, action='detail', args=None)` | | `get_dev_url` | `(self, action='edit', args=None, prefix_only=False)` | | `get_fallback` | `()` | | `get_icon_dir` | `(self)` | | `get_icon_path` | `(self, size)` | | `get_icon_url` | `(self, size)` | | `get_lookup_field` | `(identifier)` | | `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_reputation_display` | `(self, *, field=<django.db.models.fields.SmallIntegerField: reputation>)` | | `get_required_metadata` | `(self, has_listed_versions=None)` | | `get_status_display` | `(self, *, field=<django.db.models.fields.PositiveIntegerField: status>)` | | `get_type_display` | `(self, *, field=<django.db.models.fields.PositiveIntegerField: type>)` | | `get_unfiltered_manager` | `()` | | `get_url_path` | `(self, add_prefix=True)` | | `has_author` | `(self, user)` | | `has_complete_metadata` | `(self, has_listed_versions=None)` | | `has_listed_versions` | `(self, include_deleted=False)` | | `has_unlisted_versions` | `(self, include_deleted=False)` | | `increment_theme_version_number` | `(self)` | | `initialize_addon_from_upload` | `(*, data, upload, channel, user)` | | `is_public` | `(self)` | | `is_soft_deleteable` | `(self)` | | `is_unreviewed` | `(self)` | | `language_ascii` | `(self)` | | `on_change` | `(callback)` | | `promoted_groups` | `(self, *, currently_approved=True)` | | `reload` | `(self)` | | `remove_locale` | `(self, locale)` | | `resolve_webext_translations` | `(data, upload, use_default_locale_fallback=True)` | | `rollbackable_versions_qs` | `(self, channel)` | | `serializable_reference` | `(self)` | | `set_auto_approval_delay_if_higher_than_existing` | `(self, delay, unlisted_only=False)` | | `set_categories` | `(self, categories)` | | `set_needs_human_review_on_latest_versions` | `(self, *, reason, due_date=None, ignore_reviewed=True, unique_reason=False, skip_activity_log=False)` | | `set_tag_list` | `(self, new_tag_list)` | | `should_redirect_to_submit_flow` | `(self)` | | `transformer` | `(addons)` | | `type_can_set_compatibility` | `(addon_type)` | | `update` | `(self, **kwargs)` | | `update_all_due_dates` | `(self)` | | `update_status` | `(self, ignore_version=None)` | | `update_version` | `(self, ignore=None, _signal=True)` | | `versions_triggering_needs_human_review_inheritance` | `(self, channel)` | ### Private Methods | Method Name | Signature | |-----------|---------| | `_attach_authors` | `(addons, addon_dict=None, manager='objects', listed=True, to_attr='listed_authors')` | | `_get_field_value_map` | `(self, meta, exclude=None)` | | `_is_recommended_theme` | `(self)` | | `_last_updated_queries` | `()` | | `_prepare_deletion_email` | `(self, msg, reason)` | | `_reset_initial_attrs` | `(self, attrs=None)` | | `_send_changes` | `(self, old_attr, new_attr_kw)` | | `_set_needs_human_review_on_latest_signed_version` | `(self, *, channel, reason, due_date=None, ignore_reviewed=True, unique_reason=False, skip_activity_log=False)` | ## Custom Managers ### default **Class:** `AddonManager` *Base for all managers in AMO. Returns BaseQuerySets. If a model has translated fields, they'll be attached through a transform function.* #### Custom Methods ##### `get_base_extensions_queue_with_non_disabled_versions(self, *q_filters, admin_reviewer=False)` *Return base queryset for all queues that look at extensions with non disabled versions - typically scanners queues, where anything could be flagged, approved or waiting for review.* ##### `get_base_queryset_for_queue(self, admin_reviewer=False, content_review=False, theme_review=False, select_related_fields_for_listed=True)` ##### `get_content_review_queue(self, admin_reviewer=False)` *Return a queryset of Addon objects that need content review.* ##### `get_mad_queue(self, admin_reviewer=False)` *Return a queryset of Addon objects that contain unlisted versions or had their current listed version flagged by MAD.* ##### `get_pending_rejection_queue(self, admin_reviewer=False)` ##### `get_queryset_for_pending_queues(self, *, admin_reviewer=False, theme_review=False, show_temporarily_delayed=True, show_only_upcoming=False, due_date_reasons_choices=None)` ##### `id_or_slug(self, val)` *Get add-ons by id or slug.* ##### `not_disabled_by_mozilla(self)` *Get all add-ons not disabled by Mozilla.* ##### `public(self)` *Get public add-ons only* ##### `transform(self, fn)` ##### `valid(self)` *Get valid, enabled add-ons only* #### Custom QuerySet **Class:** `AddonQuerySet` *Represent a lazy database lookup for a set of objects.* ##### Custom Methods ###### `id_or_slug(self, val)` *Get add-ons by id or slug.* ###### `no_transforms(self)` ###### `not_disabled_by_mozilla(self)` *Get all add-ons not disabled by Mozilla.* ###### `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)` ###### `public(self)` *Get approved add-ons only* ###### `transform(self, fn)` ###### `valid(self)` *Get valid, enabled add-ons only* ###### `valid_q(self, statuses)` *Return a Q object that selects a valid Addon with the given statuses. An add-on is valid if not disabled and has a current version.* ### objects **Class:** `AddonManager` *Base for all managers in AMO. Returns BaseQuerySets. If a model has translated fields, they'll be attached through a transform function.* #### Custom Methods ##### `get_base_extensions_queue_with_non_disabled_versions(self, *q_filters, admin_reviewer=False)` *Return base queryset for all queues that look at extensions with non disabled versions - typically scanners queues, where anything could be flagged, approved or waiting for review.* ##### `get_base_queryset_for_queue(self, admin_reviewer=False, content_review=False, theme_review=False, select_related_fields_for_listed=True)` ##### `get_content_review_queue(self, admin_reviewer=False)` *Return a queryset of Addon objects that need content review.* ##### `get_mad_queue(self, admin_reviewer=False)` *Return a queryset of Addon objects that contain unlisted versions or had their current listed version flagged by MAD.* ##### `get_pending_rejection_queue(self, admin_reviewer=False)` ##### `get_queryset_for_pending_queues(self, *, admin_reviewer=False, theme_review=False, show_temporarily_delayed=True, show_only_upcoming=False, due_date_reasons_choices=None)` ##### `id_or_slug(self, val)` *Get add-ons by id or slug.* ##### `not_disabled_by_mozilla(self)` *Get all add-ons not disabled by Mozilla.* ##### `public(self)` *Get public add-ons only* ##### `transform(self, fn)` ##### `valid(self)` *Get valid, enabled add-ons only* #### Custom QuerySet **Class:** `AddonQuerySet` *Represent a lazy database lookup for a set of objects.* ##### Custom Methods ###### `id_or_slug(self, val)` *Get add-ons by id or slug.* ###### `no_transforms(self)` ###### `not_disabled_by_mozilla(self)` *Get all add-ons not disabled by Mozilla.* ###### `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)` ###### `public(self)` *Get approved add-ons only* ###### `transform(self, fn)` ###### `valid(self)` *Get valid, enabled add-ons only* ###### `valid_q(self, statuses)` *Return a Q object that selects a valid Addon with the given statuses. An add-on is valid if not disabled and has a current version.* ### unfiltered **Class:** `AddonManager` *Base for all managers in AMO. Returns BaseQuerySets. If a model has translated fields, they'll be attached through a transform function.* #### Custom Methods ##### `get_base_extensions_queue_with_non_disabled_versions(self, *q_filters, admin_reviewer=False)` *Return base queryset for all queues that look at extensions with non disabled versions - typically scanners queues, where anything could be flagged, approved or waiting for review.* ##### `get_base_queryset_for_queue(self, admin_reviewer=False, content_review=False, theme_review=False, select_related_fields_for_listed=True)` ##### `get_content_review_queue(self, admin_reviewer=False)` *Return a queryset of Addon objects that need content review.* ##### `get_mad_queue(self, admin_reviewer=False)` *Return a queryset of Addon objects that contain unlisted versions or had their current listed version flagged by MAD.* ##### `get_pending_rejection_queue(self, admin_reviewer=False)` ##### `get_queryset_for_pending_queues(self, *, admin_reviewer=False, theme_review=False, show_temporarily_delayed=True, show_only_upcoming=False, due_date_reasons_choices=None)` ##### `id_or_slug(self, val)` *Get add-ons by id or slug.* ##### `not_disabled_by_mozilla(self)` *Get all add-ons not disabled by Mozilla.* ##### `public(self)` *Get public add-ons only* ##### `transform(self, fn)` ##### `valid(self)` *Get valid, enabled add-ons only* #### Custom QuerySet **Class:** `AddonQuerySet` *Represent a lazy database lookup for a set of objects.* ##### Custom Methods ###### `id_or_slug(self, val)` *Get add-ons by id or slug.* ###### `no_transforms(self)` ###### `not_disabled_by_mozilla(self)` *Get all add-ons not disabled by Mozilla.* ###### `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)` ###### `public(self)` *Get approved add-ons only* ###### `transform(self, fn)` ###### `valid(self)` *Get valid, enabled add-ons only* ###### `valid_q(self, statuses)` *Return a Q object that selects a valid Addon with the given statuses. An add-on is valid if not disabled and has a current version.* --- !!! THIS DOCUMENT WAS *AUTOGENERATED* ON 2025-08-02 !!!