# files.FileUpload ## Model Info | Key | Value | |---|-----| | Model Name | FileUpload | | Verbose Name | file upload | | Verbose Name Plural | file uploads | | Docstring | <p>Created when a file is uploaded for validation/submission.</p> | | Is Abstract | False | | Is Proxy | False | | Is Managed | True | | Ordering | [] | | Permissions | [] | | Default Permissions | ('add', 'change', 'delete', 'view') | | Indexes | [] | | Constraints | [<UniqueConstraint: fields=('uuid',) name='uuid'>] | | Database Table | file_uploads | | Base Manager | objects | | Default Manager | None | | File | /data/olympia/src/olympia/files/models.py | | Starting Line Number | 420 | | Method Resolution Order | (<class 'olympia.files.models.FileUpload'>, <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 | |----------|----------|---------------|-------------|------------| | `access_token` | CharField | access_token | varchar(40) | access token | | `addon` | ForeignKey | addon_id | integer UNSIGNED | addon | | `channel` | PositiveSmallIntegerField | channel | smallint UNSIGNED | channel | | `created` | DateTimeField | created | datetime(6) | created | | `hash` | CharField | hash | varchar(255) | hash | | `id (pk)` | AutoField | id | integer AUTO_INCREMENT | ID | | `ip_address` | CharField | ip_address | varchar(45) | ip address | | `modified` | DateTimeField | modified | datetime(6) | modified | | `name` | CharField | name | varchar(255) | name | | `path` | CharField | path | varchar(255) | path | | `scannerresults` | ManyToOneRel | | integer | | | `source` | PositiveSmallIntegerField | source | smallint UNSIGNED | source | | `user` | ForeignKey | user_id | integer | user | | `uuid` | UUIDField | uuid | char(32) | uuid | | `valid` | BooleanField | valid | bool | valid | | `validation` | TextField | validation | longtext | validation | | `version` | CharField | version | varchar(255) | version | ## Relations | Field Name | Field Type | Database Column | Database Type | Related Model | Related Name | |----------|----------|---------------|-------------|-------------|------------| | `addon` | ForeignKey | addon_id | integer UNSIGNED | addons.Addon | fileupload_set | | `user` | ForeignKey | user_id | integer | users.UserProfile | fileupload_set | fields_reverse_relation=[FieldReverseRelation(name='scannerresults', field_type='ManyToOneRel', field_db_type='integer', related_model='scanners.ScannerResult', field_name_on_related_model='upload', 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 | |----------|----------|-------------|-------------|---------------------------|---------------------------| | `scannerresults` | ManyToOneRel | integer | scanners.ScannerResult | upload | ForeignKey | ## Methods ### Other Methods | Method Name | Signature | |-----------|---------| | `add_file` | `(self, chunks, filename, size)` | | `from_post` | `(chunks, *, filename, size, user, source, channel, addon=None, version=None)` | | `generate_access_token` | `(self)` | | `generate_path` | `(ext='.zip')` | | `get_admin_absolute_url` | `(self)` | | `get_admin_url_path` | `(self)` | | `get_authenticated_download_url` | `(self)` | | `get_channel_display` | `(self, *, field=<django.db.models.fields.PositiveSmallIntegerField: channel>)` | | `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_source_display` | `(self, *, field=<django.db.models.fields.PositiveSmallIntegerField: source>)` | | `get_unfiltered_manager` | `()` | | `load_validation` | `(self)` | | `reload` | `(self)` | | `serializable_reference` | `(self)` | | `update` | `(self, **kw)` | | `write_data_to_path` | `(self, chunks)` | ### Private Methods | Method Name | Signature | |-----------|---------| | `_get_field_value_map` | `(self, meta, exclude=None)` | ## Custom Managers ### default **Class:** `ManagerBase` *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:** `BaseQuerySet` *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:** `ManagerBase` *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:** `BaseQuerySet` *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)` --- !!! THIS DOCUMENT WAS *AUTOGENERATED* ON 2025-07-29 !!!