1e01c88ecaaac214345fd1d3eff9c46f19714219
[htsworkflow.git] / htsworkflow / frontend / samples / admin.py
1 from django.contrib import admin
2 from django.contrib.admin import widgets
3 from django.db import models
4 from django.utils.translation import ugettext_lazy as _
5
6 from htsworkflow.frontend.samples.models import Antibody, Cellline, Condition, ExperimentType, LibraryType, Species, Affiliation, Library, Tag
7 from htsworkflow.frontend.experiments.models import Lane
8
9 class LaneLibraryInline(admin.StackedInline):
10   model = Lane
11   extra = 0
12
13 class Library_Inline(admin.TabularInline):
14   model = Library
15
16 class CelllineOptions(admin.ModelAdmin):
17     list_display = ('cellline_name', 'nickname', 'notes')
18     search_fields = ('cellline_name', 'nickname', 'notes')
19     fieldsets = (
20       (None, {
21           'fields': (('cellline_name'),('notes'),)
22       }),
23      )
24
25 class ExperimentTypeOptions(admin.ModelAdmin):
26   model = ExperimentType
27   #list_display = ('name',)
28   #fieldsets = ( (None, { 'fields': ('name',) }), )
29
30 class LibraryTypeOptions(admin.ModelAdmin):
31     model = LibraryType
32
33 class LibraryOptions(admin.ModelAdmin):
34     date_hierarchy = "creation_date"
35     save_as = True
36     save_on_top = True
37     search_fields = (
38         'library_id',
39         'library_name',
40         'cell_line__cellline_name',
41         'library_species__scientific_name',
42         'library_species__common_name',
43     )
44     list_display = (
45         'library_id',
46         #'aligned_reads',
47         #'DataRun',
48         'library_name',
49         'public',
50         #'experiment_type',
51         #'organism',
52         #'antibody_name',
53         #'cell_line',
54         #'libtags',
55         #'made_for',
56         'affiliation',
57         #'made_by',
58         'undiluted_concentration',
59         'creation_date',
60         'stopping_point',
61         #'condition',
62
63     )
64     list_filter = (
65         'experiment_type', 
66         'library_species', 
67         'tags',
68         #'made_for',
69         'affiliations',
70         'made_by', 
71         'antibody',
72         'cell_line',
73         'condition',
74         'stopping_point',
75         'hidden')
76     list_display_links = ('library_id', 'library_name',)
77     fieldsets = (
78       (None, {
79         'fields': (
80           ('library_id','library_name','hidden'),
81           ('library_species'),
82           ('library_type', 'experiment_type', 'replicate'),
83           ('cell_line','condition','antibody'),)
84          }),
85          ('Creation Information:', {
86              'fields' : (('made_for', 'made_by', 'creation_date'), ('stopping_point', 'amplified_from_sample'), ('avg_lib_size','undiluted_concentration', 'ten_nM_dilution', 'successful_pM'), 'notes',)
87          }),
88          ('Library/Project Affiliation:', {
89              'fields' : (('affiliations'), ('tags'),)
90          }),
91          )
92     inlines = [
93       LaneLibraryInline,
94     ]
95
96     # some post 1.0.2 version of django has formfield_overrides 
97     # which would replace this code with:
98     # formfield_overrids = {
99     #   models.ManyToMany: { 'widget': widgets.FilteredSelectMultiple }
100     # }
101     def formfield_for_dbfield(self, db_field, **kwargs):
102       if db_field.name == 'affiliations':
103         kwargs['widget'] = widgets.FilteredSelectMultiple(db_field.verbose_name, (db_field.name in self.filter_vertical))
104       rv = super(LibraryOptions, self).formfield_for_dbfield(db_field, **kwargs)
105       print db_field.name, kwargs
106       return rv
107
108 class AffiliationOptions(admin.ModelAdmin):
109     list_display = ('name','contact','email')
110     fieldsets = (
111       (None, {
112           'fields': (('name','contact','email'))
113       }),
114     )
115
116 # class UserOptions(admin.ModelAdmin):
117 #   inlines = [Library_Inline]
118
119 class AntibodyOptions(admin.ModelAdmin):
120     search_fields = ('antigene','nickname','catalog','antibodies','source','biology','notes')
121     list_display = ('antigene','nickname','antibodies','catalog','source','biology','notes')
122     list_filter = ('antibodies','source')
123     fieldsets = (
124       (None, {
125           'fields': (('antigene','nickname','antibodies'),('catalog','source'),('biology'),('notes'))
126       }),
127      )
128
129 class SpeciesOptions(admin.ModelAdmin):
130     fieldsets = (
131       (None, {
132           'fields': (('scientific_name', 'common_name'),)
133       }),
134     )
135
136 class ConditionOptions(admin.ModelAdmin):
137     list_display = (('condition_name'), ('notes'),)
138     fieldsets = (
139       (None, {
140           'fields': (('condition_name'),('nickname'),('notes'),)
141       }),
142      )
143
144 class TagOptions(admin.ModelAdmin):
145     list_display = ('tag_name', 'context')
146     fieldsets = ( 
147         (None, {
148           'fields': ('tag_name', 'context')
149           }),
150         )
151
152 admin.site.register(Affiliation, AffiliationOptions)
153 admin.site.register(Antibody, AntibodyOptions)
154 admin.site.register(Cellline, CelllineOptions)
155 admin.site.register(Condition, ConditionOptions)
156 admin.site.register(ExperimentType, ExperimentTypeOptions)
157 admin.site.register(LibraryType, LibraryTypeOptions)
158 admin.site.register(Library, LibraryOptions)
159 admin.site.register(Species, SpeciesOptions)
160 admin.site.register(Tag, TagOptions)