users.UserProfile

Model Info

Key

Value

Model Name

UserProfile

Verbose Name

user profile

Verbose Name Plural

user profiles

Docstring

UserProfile(id, created, modified, password, last_login, username, display_name, email, averagerating, biography, deleted, display_collections, homepage, location, notes, occupation, picture_type, read_dev_agreement, last_login_ip, email_changed, banned, has_full_profile, fxa_id, auth_id, basket_token, bypass_upload_restrictions)

Is Abstract

False

Is Proxy

False

Is Managed

True

Ordering

[]

Permissions

[]

Default Permissions

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

Indexes

[<Index: fields=[‘created’] name=’created’>, <Index: fields=[‘fxa_id’] name=’users_fxa_id_index’>, <LongNameIndex: fields=[‘last_login_ip’] name=’users_last_login_ip_2cfbbfbd’>]

Constraints

[]

Database Table

users

Base Manager

None

Default Manager

None

File

/data/olympia/src/olympia/users/models.py

Starting Line Number

288

Method Resolution Order

(<class ‘olympia.users.models.UserProfile’>, <class ‘olympia.amo.models.OnChangeMixin’>, <class ‘olympia.amo.models.ModelBase’>, <class ‘olympia.amo.models.SaveUpdateMixin’>, <class ‘django.contrib.auth.base_user.AbstractBaseUser’>, <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

+

ManyToOneRel

integer

Flag_users+

ManyToOneRel

integer

_ratings_all

ManyToOneRel

integer

abuse_reported

ManyToOneRel

integer

abuse_reports

ManyToOneRel

integer

activity_log_tokens

ManyToOneRel

integer

activitylog

ManyToOneRel

integer

addons

ManyToManyRel

through addons.AddonUser

addonuser

ManyToOneRel

integer

addonuserpendingconfirmation

ManyToOneRel

integer

api_keys

ManyToOneRel

integer

apikeyconfirmation

OneToOneRel

integer

auth_id

PositiveIntegerField

auth_id

integer UNSIGNED

auth id

averagerating

FloatField

averagerating

double precision

averagerating

banned

DateTimeField

banned

datetime(6)

banned

basket_token

CharField

basket_token

varchar(128)

basket token

biography

CharField

biography

varchar(255)

biography

block

ManyToOneRel

integer

blocklistsubmission

ManyToOneRel

integer

bypass_upload_restrictions

BooleanField

bypass_upload_restrictions

bool

bypass upload restrictions

collectionaddon

ManyToOneRel

integer

collections

ManyToOneRel

integer

content_disabled_on_ban

OneToOneRel

integer

created

DateTimeField

created

datetime(6)

created

decisions_made_by

ManyToOneRel

integer

decisions_on

ManyToOneRel

integer

deleted

BooleanField

deleted

bool

deleted

display_collections

BooleanField

display_collections

bool

display collections

display_name

CharField

display_name

varchar(50)

display name

draftcomment

ManyToOneRel

integer

email

EmailField

email

varchar(75)

email

email_changed

DateTimeField

email_changed

datetime(6)

email changed

fileupload

ManyToOneRel

integer

flag

ManyToManyRel

through waffle.Flag_users

fxa_id

CharField

fxa_id

varchar(128)

fxa id

groups

ManyToManyRel

through access.GroupUser

groupuser

ManyToOneRel

integer

has_full_profile

BooleanField

public

bool

has full profile

history

ManyToOneRel

integer

homepage

URLField

homepage

varchar(255)

homepage

id (pk)

AutoField

id

integer AUTO_INCREMENT

ID

last_login

DateTimeField

last_login

datetime(6)

last login

last_login_ip

CharField

last_login_ip

varchar(45)

last login ip

location

CharField

location

varchar(255)

location

logentry

ManyToOneRel

integer

modified

DateTimeField

modified

datetime(6)

modified

notes

TextField

notes

longtext

notes

notifications

ManyToOneRel

integer

occupation

CharField

occupation

varchar(255)

occupation

password

CharField

password

varchar(128)

password

picture_type

CharField

picture_type

varchar(75)

picture type

ratingflag

ManyToOneRel

integer

read_dev_agreement

DateTimeField

read_dev_agreement

datetime(6)

read dev agreement

restriction_history

ManyToOneRel

integer

reviewersubscription

ManyToOneRel

integer

rsskey

ManyToOneRel

integer

surveyresponse

ManyToOneRel

integer

username

CharField

username

varchar(255)

username

versionreviewerflags

ManyToOneRel

integer

fields_reverse_relation=[FieldReverseRelation(name=’abuse_reported’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’abuse.AbuseReport’, field_name_on_related_model=’reporter’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’abuse_reports’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’abuse.AbuseReport’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’decisions_made_by’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’abuse.ContentDecision’, field_name_on_related_model=’reviewer_user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’decisions_on’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’abuse.ContentDecision’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’groups’, field_type=’ManyToManyRel’, field_db_type=’through access.GroupUser’, related_model=’access.Group’, field_name_on_related_model=’users’, field_type_on_related_model=’ManyToManyField’), FieldReverseRelation(name=’userprofile_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’access.GroupUser’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’activity_log_tokens’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’activity.ActivityLogToken’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’userprofile_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’activity.DraftComment’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’userprofile_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’activity.ActivityLog’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’addons’, field_type=’ManyToManyRel’, field_db_type=’through addons.AddonUser’, related_model=’addons.Addon’, field_name_on_related_model=’authors’, field_type_on_related_model=’FilterableManyToManyField’), FieldReverseRelation(name=’userprofile_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’addons.AddonUser’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’userprofile_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’addons.AddonUserPendingConfirmation’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’api_keys’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’api.APIKey’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’userprofile_set’, field_type=’OneToOneRel’, field_db_type=’integer’, related_model=’api.APIKeyConfirmation’, field_name_on_related_model=’user’, field_type_on_related_model=’OneToOneField’), FieldReverseRelation(name=’collections’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’bandwagon.Collection’, field_name_on_related_model=’author’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’userprofile_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’bandwagon.CollectionAddon’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’userprofile_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’blocklist.Block’, field_name_on_related_model=’updated_by’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’userprofile_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’blocklist.BlocklistSubmission’, field_name_on_related_model=’updated_by’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’+ (no reverse relation allowed)’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’blocklist.BlocklistSubmission’, field_name_on_related_model=’signoff_by’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’userprofile_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’devhub.RssKey’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’surveyresponse’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’devhub.SurveyResponse’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’userprofile_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’files.FileUpload’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’_ratings_all’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’ratings.Rating’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’userprofile_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’ratings.RatingFlag’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’userprofile_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’reviewers.ReviewerSubscription’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’notifications’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’users.UserNotification’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’restriction_history’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’users.UserRestrictionHistory’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’history’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’users.UserHistory’, field_name_on_related_model=’user’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’content_disabled_on_ban’, field_type=’OneToOneRel’, field_db_type=’integer’, related_model=’users.BannedUserContent’, field_name_on_related_model=’user’, field_type_on_related_model=’OneToOneField’), FieldReverseRelation(name=’userprofile_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’versions.VersionReviewerFlags’, field_name_on_related_model=’pending_rejection_by’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’Flag_users+ (no reverse relation allowed)’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’waffle.Flag_users’, field_name_on_related_model=’userprofile’, field_type_on_related_model=’ForeignKey’), FieldReverseRelation(name=’userprofile_set’, field_type=’ManyToManyRel’, field_db_type=’through waffle.Flag_users’, related_model=’waffle.Flag’, field_name_on_related_model=’users’, field_type_on_related_model=’ManyToManyField’), FieldReverseRelation(name=’userprofile_set’, field_type=’ManyToOneRel’, field_db_type=’integer’, related_model=’admin.LogEntry’, field_name_on_related_model=’user’, 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

+ (no reverse relation allowed)

ManyToOneRel

integer

blocklist.BlocklistSubmission

signoff_by

ForeignKey

Flag_users+ (no reverse relation allowed)

ManyToOneRel

integer

waffle.Flag_users

userprofile

ForeignKey

_ratings_all

ManyToOneRel

integer

ratings.Rating

user

ForeignKey

abuse_reported

ManyToOneRel

integer

abuse.AbuseReport

reporter

ForeignKey

abuse_reports

ManyToOneRel

integer

abuse.AbuseReport

user

ForeignKey

activity_log_tokens

ManyToOneRel

integer

activity.ActivityLogToken

user

ForeignKey

addons

ManyToManyRel

through addons.AddonUser

addons.Addon

authors

FilterableManyToManyField

api_keys

ManyToOneRel

integer

api.APIKey

user

ForeignKey

collections

ManyToOneRel

integer

bandwagon.Collection

author

ForeignKey

content_disabled_on_ban

OneToOneRel

integer

users.BannedUserContent

user

OneToOneField

decisions_made_by

ManyToOneRel

integer

abuse.ContentDecision

reviewer_user

ForeignKey

decisions_on

ManyToOneRel

integer

abuse.ContentDecision

user

ForeignKey

groups

ManyToManyRel

through access.GroupUser

access.Group

users

ManyToManyField

history

ManyToOneRel

integer

users.UserHistory

user

ForeignKey

notifications

ManyToOneRel

integer

users.UserNotification

user

ForeignKey

restriction_history

ManyToOneRel

integer

users.UserRestrictionHistory

user

ForeignKey

surveyresponse

ManyToOneRel

integer

devhub.SurveyResponse

user

ForeignKey

userprofile_set

ManyToOneRel

integer

access.GroupUser

user

ForeignKey

userprofile_set

ManyToOneRel

integer

activity.DraftComment

user

ForeignKey

userprofile_set

ManyToOneRel

integer

activity.ActivityLog

user

ForeignKey

userprofile_set

ManyToOneRel

integer

addons.AddonUser

user

ForeignKey

userprofile_set

ManyToOneRel

integer

addons.AddonUserPendingConfirmation

user

ForeignKey

userprofile_set

OneToOneRel

integer

api.APIKeyConfirmation

user

OneToOneField

userprofile_set

ManyToOneRel

integer

bandwagon.CollectionAddon

user

ForeignKey

userprofile_set

ManyToOneRel

integer

blocklist.Block

updated_by

ForeignKey

userprofile_set

ManyToOneRel

integer

blocklist.BlocklistSubmission

updated_by

ForeignKey

userprofile_set

ManyToOneRel

integer

devhub.RssKey

user

ForeignKey

userprofile_set

ManyToOneRel

integer

files.FileUpload

user

ForeignKey

userprofile_set

ManyToOneRel

integer

ratings.RatingFlag

user

ForeignKey

userprofile_set

ManyToOneRel

integer

reviewers.ReviewerSubscription

user

ForeignKey

userprofile_set

ManyToOneRel

integer

versions.VersionReviewerFlags

pending_rejection_by

ForeignKey

userprofile_set

ManyToManyRel

through waffle.Flag_users

waffle.Flag

users

ManyToManyField

userprofile_set

ManyToOneRel

integer

admin.LogEntry

user

ForeignKey

Methods

Other Methods

Method Name

Signature

anonymize_user

(self)

check_password

(self, password)

create_user_url

(id_, src=None)

delete_picture

(self)

get_addons_listed

(self)

get_admin_absolute_url

(self)

get_admin_url_path

(self)

get_email_field_name

()

get_full_name

(self)

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_session_auth_fallback_hash

(self)

get_session_auth_hash

(self)

get_short_name

(self)

get_unfiltered_manager

()

get_url_path

(self, src=None)

get_username

(self)

has_module_perms

(self, app_label)

has_perm

(self, perm, obj=None)

has_read_developer_agreement

(self)

has_usable_password

(self)

is_survey_eligible

(self, survey_id)

my_addons

(self, n=8)

natural_key

(self)

normalize_username

(username)

on_change

(callback)

reload

(self)

serializable_reference

(self)

set_password

(self, password)

set_unusable_password

(self)

should_send_delete_email

(self)

update

(self, **kwargs)

update_has_full_profile

(self)

user_logged_in

(sender, request, user, **kwargs)

Private Methods

Method Name

Signature

_delete_related_content

(self, *, addon_msg='')

_get_field_value_map

(self, meta, exclude=None)

_get_session_auth_hash

(self, secret=None)

_prepare_delete_email

(self)

_reset_initial_attrs

(self, attrs=None)

_send_changes

(self, old_attr, new_attr_kw)

Custom Managers

default

Class: UserManager

*Base for all managers in AMO.

Returns BaseQuerySets.

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

Custom Methods

create_superuser(self, username, email, fxa_id=None)

Creates and saves a superuser.

create_user(self, email, fxa_id=None, **kwargs)
get_by_natural_key(self, username)
make_random_password(self, length=10, allowed_chars='abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789')

Generate a random password with the given length and given allowed_chars. The default value of allowed_chars does not have “I” or “O” or letters and digits that look similar – just to avoid confusion.

transform(self, fn)

Custom QuerySet

Class: UserQuerySet

Represent a lazy database lookup for a set of objects.

Custom Methods
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: UserManager

*Base for all managers in AMO.

Returns BaseQuerySets.

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

Custom Methods

ban_and_disable_related_content(self)
create_superuser(self, username, email, fxa_id=None)

Creates and saves a superuser.

create_user(self, email, fxa_id=None, **kwargs)
get_by_natural_key(self, username)
make_random_password(self, length=10, allowed_chars='abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789')

Generate a random password with the given length and given allowed_chars. The default value of allowed_chars does not have “I” or “O” or letters and digits that look similar – just to avoid confusion.

transform(self, fn)
unban_and_reenable_related_content(self)

Custom QuerySet

Class: UserQuerySet

Represent a lazy database lookup for a set of objects.

Custom Methods
ban_and_disable_related_content(self, *, skip_activity_log=False)

*Admin method to ban multiple users and disable the content they produced.

Similar to deletion, except that the content produced by the user is forcibly soft-disabled instead of being deleted where possible, and the user is not anonymized: we keep their data until hard-deletion kicks in (see clear_old_user_data), including fxa_id and email so that they are never able to log back in.*

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)
unban_and_reenable_related_content(self, *, skip_activity_log=False)

Admin method to unban users and restore their content that was disabled when they were banned.


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