Source code for pangea.core.admin

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.utils.translation import gettext_lazy as _


from .forms import PangeaUserCreationForm, PangeaUserChangeForm
from .models import (
    PangeaUser,
    Organization,
    Project,
    S3ApiKey,
    S3Bucket,
    SampleGroup,
    SampleLibrary,
    Sample,
    SampleGroupAnalysisResult,
    SampleGroupAnalysisResultField,
    SampleAnalysisResult,
    SampleAnalysisResultField,
)


[docs]@admin.register(Organization) class OrganizationAdmin(admin.ModelAdmin): list_display = ('name', 'members',)
[docs] def members(self, obj): return obj.users.count()
[docs]@admin.register(Project) class ProjectAdmin(admin.ModelAdmin): list_display = ('name', 'organization',) list_filter = ( ('organization', admin.RelatedOnlyFieldListFilter), )
[docs]@admin.register(S3Bucket) class S3BucketAdmin(admin.ModelAdmin): list_display = ('name', 'organization', 'endpoint_url',) list_filter = ( ('organization', admin.RelatedOnlyFieldListFilter), )
[docs] def lookup_allowed(self, lookup, value): return lookup in [ 'organization__uuid__exact', ]
[docs] def organization_name(self, obj): return obj.organization.name
[docs]@admin.register(S3ApiKey) class S3ApiKeyAdmin(admin.ModelAdmin): list_display = ('public_key', 'bucket_name',)
[docs] def lookup_allowed(self, lookup, value): return lookup in [ 'bucket__uuid__exact', ]
[docs] def bucket_name(self, obj): return obj.bucket.name
[docs] def organization_name(self, obj): return obj.bucket.organization.name
[docs]@admin.register(SampleGroup) class SampleGroupAdmin(admin.ModelAdmin): list_display = ('name', 'organization_name',) list_filter = ( ('organization', admin.RelatedOnlyFieldListFilter), )
[docs] def lookup_allowed(self, lookup, value): return lookup in [ 'organization__uuid__exact', ]
[docs] def organization_name(self, obj): return obj.organization.name
[docs]@admin.register(SampleLibrary) class SampleLibraryAdmin(admin.ModelAdmin): list_display = ('name', 'organization_name',) list_filter = ( ('group__organization', admin.RelatedOnlyFieldListFilter), )
[docs] def lookup_allowed(self, lookup, value): return lookup in [ 'group__organization__uuid__exact', ]
[docs] def organization_name(self, obj): return obj.group.organization.name
[docs] def name(self, obj): return f'{obj.group.name} (library)'
[docs]@admin.register(Sample) class SampleAdmin(admin.ModelAdmin): list_display = ('name', 'library_name','member_of_groups',) list_filter = ( ('library__group__organization', admin.RelatedOnlyFieldListFilter), ('library', admin.RelatedOnlyFieldListFilter), )
[docs] def lookup_allowed(self, lookup, value): return lookup in [ 'library__group__organization__uuid__exact', 'library__group__exact', ]
[docs] def library_name(self, obj): return obj.library.group.name
[docs] def member_of_groups(self, obj): return ", ".join([group.name for group in obj.sample_groups.only('name')])
[docs]@admin.register(SampleAnalysisResult) class SampleAnalysisResultAdmin(admin.ModelAdmin): list_display = ('sample_name', 'module_name',) list_filter = ( ('sample__library__group__organization', admin.RelatedOnlyFieldListFilter), ('sample__library__group', admin.RelatedOnlyFieldListFilter), 'module_name', ('sample', admin.RelatedOnlyFieldListFilter), )
[docs] def lookup_allowed(self, lookup, value): return lookup in [ 'sample__library__group__organization__uuid__exact', 'sample__library__group__uuid__exact', 'sample__uuid__exact', 'module_name', ]
[docs] def sample_name(self, obj): return obj.sample.name
[docs]class FieldNameListFilter(admin.AllValuesFieldListFilter): def __init__(self, field, request, params, model, model_admin, field_path): super().__init__(field, request, params, model, model_admin, field_path) self.title = _('field name')
[docs]@admin.register(SampleAnalysisResultField) class SampleAnalysisResultFieldAdmin(admin.ModelAdmin): list_display = ('sample_name', 'module_name', 'field_name') list_filter = ( ('analysis_result__sample__library__group__organization', admin.RelatedOnlyFieldListFilter), ('analysis_result__sample__library__group', admin.RelatedOnlyFieldListFilter), 'analysis_result__module_name', ('name', FieldNameListFilter), ('analysis_result__sample', admin.RelatedOnlyFieldListFilter), )
[docs] def lookup_allowed(self, lookup, value): return lookup in [ 'analysis_result__sample__library__group__organization__uuid__exact', 'analysis_result__sample__library__group__uuid__exact', 'analysis_result__sample__uuid__exact', 'analysis_result__module_name', 'name', ]
[docs] def sample_name(self, obj): return obj.analysis_result.sample.name
[docs] def module_name(self, obj): return obj.analysis_result.module_name
[docs] def field_name(self, obj): return obj.name
[docs]@admin.register(SampleGroupAnalysisResult) class SampleGroupAnalysisResultAdmin(admin.ModelAdmin): list_display = ('sample_group_name', 'module_name',) list_filter = ( ('sample_group__organization', admin.RelatedOnlyFieldListFilter), ('sample_group', admin.RelatedOnlyFieldListFilter), 'module_name', )
[docs] def lookup_allowed(self, lookup, value): return lookup in [ 'sample_group__organization__uuid__exact', 'sample_group__uuid__exact', 'module_name', ]
[docs] def sample_group_name(self, obj): return obj.sample_group.name
[docs]@admin.register(SampleGroupAnalysisResultField) class SampleGroupAnalysisResultFieldAdmin(admin.ModelAdmin): list_display = ('sample_group_name', 'module_name', 'field_name') list_filter = ( ('analysis_result__sample_group__organization', admin.RelatedOnlyFieldListFilter), ('analysis_result__sample_group', admin.RelatedOnlyFieldListFilter), 'analysis_result__module_name', ('name', FieldNameListFilter), )
[docs] def lookup_allowed(self, lookup, value): return lookup in [ 'analysis_result__sample_group__organization__uuid__exact', 'analysis_result__sample_group__uuid__exact', 'analysis_result__module_name', 'name', ]
[docs] def sample_group_name(self, obj): return obj.analysis_result.sample_group.name
[docs] def module_name(self, obj): return obj.analysis_result.module_name
[docs] def field_name(self, obj): return obj.name
[docs]class PangeaUserAdmin(UserAdmin): add_form = PangeaUserCreationForm form = PangeaUserChangeForm model = PangeaUser list_display = ('email', 'is_staff', 'is_active',) list_filter = ('email', 'is_staff', 'is_active',) fieldsets = ( (None, {'fields': ('email', 'password')}), ('Permissions', {'fields': ('is_staff', 'is_active')}), ) add_fieldsets = ( (None, { 'classes': ('wide',), 'fields': ('email', 'password1', 'password2', 'is_staff', 'is_active')} ), ) search_fields = ('email',) ordering = ('email',)
admin.site.register(PangeaUser, PangeaUserAdmin)