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 |
||
|
ManyToOneRel |
integer |
||
|
ManyToOneRel |
integer |
||
|
ManyToOneRel |
integer |
||
|
ManyToOneRel |
integer |
||
|
ManyToOneRel |
integer |
||
|
ManyToOneRel |
integer |
||
|
ManyToManyRel |
through addons.AddonUser |
||
|
ManyToOneRel |
integer |
||
|
ManyToOneRel |
integer |
||
|
ManyToOneRel |
integer |
||
|
OneToOneRel |
integer |
||
|
PositiveIntegerField |
auth_id |
integer UNSIGNED |
auth id |
|
FloatField |
averagerating |
double precision |
averagerating |
|
DateTimeField |
banned |
datetime(6) |
banned |
|
CharField |
basket_token |
varchar(128) |
basket token |
|
CharField |
biography |
varchar(255) |
biography |
|
ManyToOneRel |
integer |
||
|
ManyToOneRel |
integer |
||
|
BooleanField |
bypass_upload_restrictions |
bool |
bypass upload restrictions |
|
ManyToOneRel |
integer |
||
|
ManyToOneRel |
integer |
||
|
OneToOneRel |
integer |
||
|
DateTimeField |
created |
datetime(6) |
created |
|
ManyToOneRel |
integer |
||
|
ManyToOneRel |
integer |
||
|
BooleanField |
deleted |
bool |
deleted |
|
BooleanField |
display_collections |
bool |
display collections |
|
CharField |
display_name |
varchar(50) |
display name |
|
ManyToOneRel |
integer |
||
|
EmailField |
varchar(75) |
||
|
DateTimeField |
email_changed |
datetime(6) |
email changed |
|
ManyToOneRel |
integer |
||
|
ManyToManyRel |
through waffle.Flag_users |
||
|
CharField |
fxa_id |
varchar(128) |
fxa id |
|
ManyToManyRel |
through access.GroupUser |
||
|
ManyToOneRel |
integer |
||
|
BooleanField |
public |
bool |
has full profile |
|
ManyToOneRel |
integer |
||
|
URLField |
homepage |
varchar(255) |
homepage |
|
AutoField |
id |
integer AUTO_INCREMENT |
ID |
|
DateTimeField |
last_login |
datetime(6) |
last login |
|
CharField |
last_login_ip |
varchar(45) |
last login ip |
|
CharField |
location |
varchar(255) |
location |
|
ManyToOneRel |
integer |
||
|
DateTimeField |
modified |
datetime(6) |
modified |
|
TextField |
notes |
longtext |
notes |
|
ManyToOneRel |
integer |
||
|
CharField |
occupation |
varchar(255) |
occupation |
|
CharField |
password |
varchar(128) |
password |
|
CharField |
picture_type |
varchar(75) |
picture type |
|
ManyToOneRel |
integer |
||
|
DateTimeField |
read_dev_agreement |
datetime(6) |
read dev agreement |
|
ManyToOneRel |
integer |
||
|
ManyToOneRel |
integer |
||
|
ManyToOneRel |
integer |
||
|
ManyToOneRel |
integer |
||
|
CharField |
username |
varchar(255) |
username |
|
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 |
---|---|---|---|---|---|
|
ManyToOneRel |
integer |
blocklist.BlocklistSubmission |
signoff_by |
ForeignKey |
|
ManyToOneRel |
integer |
waffle.Flag_users |
userprofile |
ForeignKey |
|
ManyToOneRel |
integer |
ratings.Rating |
user |
ForeignKey |
|
ManyToOneRel |
integer |
abuse.AbuseReport |
reporter |
ForeignKey |
|
ManyToOneRel |
integer |
abuse.AbuseReport |
user |
ForeignKey |
|
ManyToOneRel |
integer |
activity.ActivityLogToken |
user |
ForeignKey |
|
ManyToManyRel |
through addons.AddonUser |
addons.Addon |
authors |
FilterableManyToManyField |
|
ManyToOneRel |
integer |
api.APIKey |
user |
ForeignKey |
|
ManyToOneRel |
integer |
bandwagon.Collection |
author |
ForeignKey |
|
OneToOneRel |
integer |
users.BannedUserContent |
user |
OneToOneField |
|
ManyToOneRel |
integer |
abuse.ContentDecision |
reviewer_user |
ForeignKey |
|
ManyToOneRel |
integer |
abuse.ContentDecision |
user |
ForeignKey |
|
ManyToManyRel |
through access.GroupUser |
access.Group |
users |
ManyToManyField |
|
ManyToOneRel |
integer |
users.UserHistory |
user |
ForeignKey |
|
ManyToOneRel |
integer |
users.UserNotification |
user |
ForeignKey |
|
ManyToOneRel |
integer |
users.UserRestrictionHistory |
user |
ForeignKey |
|
ManyToOneRel |
integer |
devhub.SurveyResponse |
user |
ForeignKey |
|
ManyToOneRel |
integer |
access.GroupUser |
user |
ForeignKey |
|
ManyToOneRel |
integer |
activity.DraftComment |
user |
ForeignKey |
|
ManyToOneRel |
integer |
activity.ActivityLog |
user |
ForeignKey |
|
ManyToOneRel |
integer |
addons.AddonUser |
user |
ForeignKey |
|
ManyToOneRel |
integer |
addons.AddonUserPendingConfirmation |
user |
ForeignKey |
|
OneToOneRel |
integer |
api.APIKeyConfirmation |
user |
OneToOneField |
|
ManyToOneRel |
integer |
bandwagon.CollectionAddon |
user |
ForeignKey |
|
ManyToOneRel |
integer |
blocklist.Block |
updated_by |
ForeignKey |
|
ManyToOneRel |
integer |
blocklist.BlocklistSubmission |
updated_by |
ForeignKey |
|
ManyToOneRel |
integer |
devhub.RssKey |
user |
ForeignKey |
|
ManyToOneRel |
integer |
files.FileUpload |
user |
ForeignKey |
|
ManyToOneRel |
integer |
ratings.RatingFlag |
user |
ForeignKey |
|
ManyToOneRel |
integer |
reviewers.ReviewerSubscription |
user |
ForeignKey |
|
ManyToOneRel |
integer |
versions.VersionReviewerFlags |
pending_rejection_by |
ForeignKey |
|
ManyToManyRel |
through waffle.Flag_users |
waffle.Flag |
users |
ManyToManyField |
|
ManyToOneRel |
integer |
admin.LogEntry |
user |
ForeignKey |
Methods
Other Methods
Method Name |
Signature |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Private Methods
Method Name |
Signature |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
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 !!!