fairdm.core.sample.admin#

Django admin configuration for samples.

Module Contents#

Classes#

SampleDatasetListFilter

A dataset list filter offering every dataset, private ones included.

SampleDescriptionInline

Inline admin for sample descriptions, capped at one row per vocabulary type.

SampleDateInline

Inline admin for sample dates, capped at one row per vocabulary type.

SampleIdentifierInline

Inline admin for sample identifiers, capped at one row per vocabulary type.

SampleContributionInline

Inline admin for sample contributions.

SampleRelationInline

Inline admin for sample-to-sample relationships.

SampleChildAdmin

Base admin for sample child models, with inlines for their related records.

SampleParentAdmin

Polymorphic parent admin registered for Sample.

API#

class SampleDatasetListFilter(field, request, params, model, model_admin, field_path)#

Bases: django.contrib.admin.RelatedFieldListFilter

A dataset list filter offering every dataset, private ones included.

The stock filter reads through Dataset’s privacy-first default manager, so for a portal whose datasets are still private it would offer no choices and never render.

Initialization

field_choices(field, request, model_admin)#

List every dataset as a choice, using all_objects to include private ones.

class SampleDescriptionInline(parent_model, admin_site)#

Bases: django.contrib.admin.StackedInline

Inline admin for sample descriptions, capped at one row per vocabulary type.

Initialization

model#

None

extra#

0

get_formset(request, obj=None, **kwargs)#

Cap the formset at the number of description types.

class SampleDateInline(parent_model, admin_site)#

Bases: django.contrib.admin.StackedInline

Inline admin for sample dates, capped at one row per vocabulary type.

Initialization

model#

None

extra#

0

get_formset(request, obj=None, **kwargs)#

Cap the formset at the number of date types.

class SampleIdentifierInline(parent_model, admin_site)#

Bases: django.contrib.admin.StackedInline

Inline admin for sample identifiers, capped at one row per vocabulary type.

Initialization

model#

None

extra#

0

get_formset(request, obj=None, **kwargs)#

Cap the formset at the number of identifier types.

class SampleContributionInline(parent_model, admin_site)#

Bases: django.contrib.contenttypes.admin.GenericTabularInline

Inline admin for sample contributions.

Initialization

model#

None

extra#

0

ct_field#

‘content_type’

ct_fk_field#

‘object_id’

class SampleRelationInline(parent_model, admin_site)#

Bases: django.contrib.admin.TabularInline

Inline admin for sample-to-sample relationships.

Initialization

model#

None

fk_name#

‘source’

extra#

0

fields#

[‘type’, ‘target’]

class SampleChildAdmin(model: type[polymorphic.admin.childadmin._ModelT], admin_site: Any, *args: Any, **kwargs: Any)#

Bases: polymorphic.admin.PolymorphicChildModelAdmin

Base admin for sample child models, with inlines for their related records.

Subclass it for each sample type and set base_model. Declare base_fieldsets rather than fieldsets so the polymorphic admin can add the subclass’s own fields.

Initialization

list_display#

[‘name’, ‘dataset’, ‘status’, ‘sample_type’, ‘location’, ‘added’, ‘modified’]

list_filter#

[(‘dataset’,), ‘status’, ‘added’]

search_fields#

[‘name’, ‘local_id’, ‘uuid’]

readonly_fields#

[‘uuid’, ‘added’, ‘modified’]

autocomplete_fields#

[‘dataset’]

inlines#

None

formfield_for_foreignkey(db_field, request, **kwargs)#

Offer every dataset, not only the public ones.

base_fieldsets#

((None,), (‘Metadata’,))

sample_type(obj)#

Return the verbose name of the sample’s concrete class.

class SampleParentAdmin(model: type[polymorphic.admin.parentadmin._ModelT], admin_site: Any, *args: Any, **kwargs: Any)#

Bases: polymorphic.admin.PolymorphicParentModelAdmin

Polymorphic parent admin registered for Sample.

It offers the type selection when adding a sample and routes to the child admin of each registered subclass for editing.

Initialization

base_model#

None

list_display#

[‘name’, ‘dataset’, ‘status’, ‘sample_type’, ‘location’, ‘added’, ‘modified’]

list_filter#

None

search_fields#

[‘name’, ‘local_id’, ‘uuid’]

sample_type(obj)#

Return the verbose name of the sample’s concrete class.

get_child_models()#

Return every registered Sample subclass.