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