addons-server
  • Security Bug Reports
  • External API
  • Development
  • Models
    • translations
    • amo
    • abuse
    • access
    • activity
    • addons
    • api
    • applications
    • bandwagon
    • blocklist
    • devhub
    • discovery
    • files
    • hero
    • promoted
      • promoted.PromotedGroup
      • promoted.PromotedAddon
      • promoted.PromotedApproval
        • Model Info
        • Fields
        • Relations
        • Methods
        • Custom Managers
    • ratings
    • reviewers
    • scanners
    • search
    • shelves
    • tags
    • users
    • versions
    • zadmin
  • Logs
  • IP addresses
  • Third-Party Usage
  • AMO Blocklist
  • Environments
  • Runbooks
  • External API (V3 - Deprecated)
  • External API (V4 - Frozen)
  • Playground
addons-server
  • Models
  • promoted
  • promoted.PromotedApproval
  • View page source

promoted.PromotedApproval

Model Info

Key

Value

Model Name

PromotedApproval

Verbose Name

promoted approval

Verbose Name Plural

promoted approvals

Docstring

A join table between a promoted group, version and application id.
This model represents an approved promotion for a specific version of an addon
on a specific application. We can granularly control which approvals are available
per version and application combination, store additional metadata and maintain
a clear audit trail of what has been approved and when.

Is Abstract

False

Is Proxy

False

Is Managed

True

Ordering

[]

Permissions

[]

Default Permissions

(‘add’, ‘change’, ‘delete’, ‘view’)

Indexes

[]

Constraints

[<UniqueConstraint: fields=(‘promoted_group’, ‘application_id’, ‘version’) name=’unique_promoted_addon_version’>]

Database Table

promoted_promotedaddonversion

Base Manager

None

Default Manager

None

File

/data/olympia/src/olympia/promoted/models.py

Starting Line Number

245

Method Resolution Order

(<class ‘olympia.promoted.models.PromotedApproval’>, <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

application_id

SmallIntegerField

application_id

smallint

Application

created

DateTimeField

created

datetime(6)

created

id (pk)

AutoField

id

integer AUTO_INCREMENT

ID

modified

DateTimeField

modified

datetime(6)

modified

promoted_group

ForeignKey

promoted_group_id

integer

promoted group

version

ForeignKey

version_id

integer UNSIGNED

version

Relations

Field Name

Field Type

Database Column

Database Type

Related Model

Related Name

promoted_group

ForeignKey

promoted_group_id

integer

promoted.PromotedGroup

promoted_versions

version

ForeignKey

version_id

integer UNSIGNED

versions.Version

promoted_versions

fields_reverse_relation=[]

Methods

Other Methods

Method Name

Signature

get_admin_absolute_url

(self)

get_admin_url_path

(self)

get_application_id_display

(self, *, field=<django.db.models.fields.SmallIntegerField: application_id>)

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

()

reload

(self)

serializable_reference

(self)

update

(self, **kw)

Private Methods

Method Name

Signature

_get_field_value_map

(self, meta, exclude=None)

Custom Managers

default

Class: PromotedApprovalManager

*Base for all managers in AMO.

Returns BaseQuerySets.

If a model has translated fields, they’ll be attached through a transform function.*

Custom Methods

transform(self, fn)

Custom QuerySet

Class: PromotedApprovalQuerySet

Represent a lazy database lookup for a set of objects.

Custom Methods
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.*

pop_transforms(self)
transform(self, fn)

objects

Class: PromotedApprovalManager

*Base for all managers in AMO.

Returns BaseQuerySets.

If a model has translated fields, they’ll be attached through a transform function.*

Custom Methods

transform(self, fn)

Custom QuerySet

Class: PromotedApprovalQuerySet

Represent a lazy database lookup for a set of objects.

Custom Methods
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.*

pop_transforms(self)
transform(self, fn)

!!! THIS DOCUMENT WAS AUTOGENERATED ON 2025-10-07 !!!

Previous Next

© Copyright 2024, Mozilla.

Built with Sphinx using a theme provided by Read the Docs.