from django.contrib import admin
from django.contrib.admin import widgets
+from django.contrib.admin.models import User
+from django.contrib.auth.admin import UserAdmin
from django.db import models
from django.utils.translation import ugettext_lazy as _
-from htsworkflow.frontend.samples.models import Antibody, Cellline, Condition, ExperimentType, LibraryType, Species, Affiliation, Library, Tag
+from htsworkflow.frontend.samples.models import Antibody, Cellline, Condition, ExperimentType, HTSUser, LibraryType, Species, Affiliation, Library, Tag
from htsworkflow.frontend.experiments.models import Lane
+class AffiliationOptions(admin.ModelAdmin):
+ list_display = ('name','contact','email')
+ fieldsets = (
+ (None, {
+ 'fields': (('name','contact','email','users'))
+ }),
+ )
-class LaneLibraryInline(admin.StackedInline):
- model = Lane
- extra = 0
+ # some post 1.0.2 version of django has formfield_overrides
+ # which would replace this code with:
+ # formfield_overrids = {
+ # models.ManyToMany: { 'widget': widgets.FilteredSelectMultiple }
+ # }
+ def formfield_for_dbfield(self, db_field, **kwargs):
+ if db_field.name == 'users':
+ kwargs['widget'] = widgets.FilteredSelectMultiple(db_field.verbose_name, (db_field.name in self.filter_vertical))
+ rv = super(AffiliationOptions, self).formfield_for_dbfield(db_field, **kwargs)
+ # print db_field.name, kwargs
+ return rv
-class Library_Inline(admin.TabularInline):
- model = Library
+class AntibodyOptions(admin.ModelAdmin):
+ search_fields = ('antigene','nickname','catalog','antibodies','source','biology','notes')
+ list_display = ('antigene','nickname','antibodies','catalog','source','biology','notes')
+ list_filter = ('antibodies','source')
+ fieldsets = (
+ (None, {
+ 'fields': (('antigene','nickname','antibodies'),('catalog','source'),('biology'),('notes'))
+ }),
+ )
class CelllineOptions(admin.ModelAdmin):
list_display = ('cellline_name', 'nickname', 'notes')
}),
)
+class ConditionOptions(admin.ModelAdmin):
+ list_display = (('condition_name'), ('notes'),)
+ fieldsets = (
+ (None, {
+ 'fields': (('condition_name'),('nickname'),('notes'),)
+ }),
+ )
+
class ExperimentTypeOptions(admin.ModelAdmin):
model = ExperimentType
#list_display = ('name',)
#fieldsets = ( (None, { 'fields': ('name',) }), )
+class HTSUserOptions(UserAdmin): pass
+
+class LaneLibraryInline(admin.StackedInline):
+ model = Lane
+ extra = 0
+
+class Library_Inline(admin.TabularInline):
+ model = Library
+
class LibraryTypeOptions(admin.ModelAdmin):
model = LibraryType
print db_field.name, kwargs
return rv
-class AffiliationOptions(admin.ModelAdmin):
- list_display = ('name','contact','email')
- fieldsets = (
- (None, {
- 'fields': (('name','contact','email'))
- }),
- )
-
-# class UserOptions(admin.ModelAdmin):
-# inlines = [Library_Inline]
-
-class AntibodyOptions(admin.ModelAdmin):
- search_fields = ('antigene','nickname','catalog','antibodies','source','biology','notes')
- list_display = ('antigene','nickname','antibodies','catalog','source','biology','notes')
- list_filter = ('antibodies','source')
- fieldsets = (
- (None, {
- 'fields': (('antigene','nickname','antibodies'),('catalog','source'),('biology'),('notes'))
- }),
- )
-
class SpeciesOptions(admin.ModelAdmin):
fieldsets = (
(None, {
}),
)
-class ConditionOptions(admin.ModelAdmin):
- list_display = (('condition_name'), ('notes'),)
- fieldsets = (
- (None, {
- 'fields': (('condition_name'),('nickname'),('notes'),)
- }),
- )
-
class TagOptions(admin.ModelAdmin):
list_display = ('tag_name', 'context')
fieldsets = (
admin.site.register(Cellline, CelllineOptions)
admin.site.register(Condition, ConditionOptions)
admin.site.register(ExperimentType, ExperimentTypeOptions)
+admin.site.register(HTSUser, HTSUserOptions)
admin.site.register(LibraryType, LibraryTypeOptions)
admin.site.register(Library, LibraryOptions)
admin.site.register(Species, SpeciesOptions)
import urlparse
from django.db import models
-from django.contrib.auth.models import User
+from django.contrib.auth.models import User, UserManager
from htsworkflow.frontend import settings
from htsworkflow.frontend.reports.libinfopar import *
name = models.CharField(max_length=256, db_index=True, verbose_name='Name')
contact = models.CharField(max_length=256, null=True, blank=True,verbose_name='Lab Name')
email = models.EmailField(null=True,blank=True)
+ users = models.ManyToManyField('HTSUser', null=True)
+ users.admin_order_field = "username"
def __unicode__(self):
str = unicode(self.name)
str += u' ('+self.contact+u')'
return str
+ def Users(self):
+ users = self.users.all().order_by('username')
+ return ", ".join([unicode(a) for a in users ])
+
class Meta:
ordering = ["name","contact"]
unique_together = (("name", "contact"),)
@models.permalink
def get_absolute_url(self):
return ('htsworkflow.frontend.samples.views.library_to_flowcells', [str(self.library_id)])
+
+class HTSUser(User):
+ """
+ Provide some site-specific customization for the django user class
+ """
+ #objects = UserManager()
+
+ class Meta:
+ ordering = ['username']
+
os.path.abspath('/htsworkflow/htswfrontend/dev_fctracker.db'),
'time_zone': 'America/Los_Angeles',
'default_pm': '5',
- 'link_flowcell_storage_device_url': "http://localhost:8000/inventory/lts/link/"
+ 'link_flowcell_storage_device_url': "http://localhost:8000/inventory/lts/link/",
+ 'printer1_host': '127.0.0.1',
+ 'printer1_port': '9100',
+ 'printer2_host': '127.0.0.1',
+ 'printer2_port': '9100',
})
options.read([os.path.expanduser("~/.htsworkflow.ini"),
# to exist in order to retrieve anything.
if not options.has_section('frontend'):
options.add_section('frontend')
+if not options.has_section('bcprinter'):
+ options.add_section('bcprinter')
+
# Django settings for elandifier project.
MANAGERS = ADMINS
+AUTHENTICATION_BACKENDS = ( 'samples.auth_backend.HTSUserModelBackend', )
+CUSTOM_USER_MODEL = 'samples.HTSUser'
+
EMAIL_HOST = options.get('frontend', 'email_host')
EMAIL_PORT = int(options.get('frontend', 'email_port'))