epcstages/stages/admin.py

75 lines
2.5 KiB
Python

from django import forms
from django.contrib import admin
from django.db import models
from stages.models import (Student, Section, Klass, Referent, Corporation, CorpContact,
Domain, Period, Availability, Training)
class StudentAdmin(admin.ModelAdmin):
list_display = ('__unicode__', 'pcode', 'city', 'klass')
list_filter = ('klass',)
search_fields = ('last_name', 'first_name', 'pcode', 'city', 'klass')
fields = (('last_name', 'first_name'), ('pcode', 'city'),
'birth_date', 'klass', 'archived')
class ReferentAdmin(admin.ModelAdmin):
list_display = ('__unicode__', 'abrev')
class CorpContactAdmin(admin.ModelAdmin):
list_display = ('__unicode__', 'corporation', 'role')
fields = ('corporation', ('title', 'last_name', 'first_name'),
'role', ('tel', 'email'))
class ContactInline(admin.StackedInline):
model = CorpContact
fields = (('title', 'last_name', 'first_name'),
('role', 'tel', 'email'))
extra = 1
class CorporationAdmin(admin.ModelAdmin):
list_display = ('name', 'pcode', 'city')
search_fields = ('name', 'pcode', 'city')
ordering = ('name',)
fields = ('name', 'typ', 'street', ('pcode', 'city'), ('tel', 'email'),
'web', 'archived')
inlines = [ContactInline]
class AvailabilityInline(admin.TabularInline):
model = Availability
extra = 1
formfield_overrides = {
models.TextField: {'widget': forms.Textarea(attrs={'rows':2, 'cols':40})},
}
class PeriodAdmin(admin.ModelAdmin):
list_display = ('title', 'dates', 'section')
list_filter = ('section',)
inlines = [AvailabilityInline]
class AvailabilityAdmin(admin.ModelAdmin):
list_display = ('corporation', 'period', 'domain')
list_filter = ('period',)
fields = (('corporation', 'period'), 'domain', 'comment')
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "corporation":
kwargs["queryset"] = Corporation.objects.filter(archived=False).order_by('name')
return super(AvailabilityAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
admin.site.register(Section)
admin.site.register(Klass)
admin.site.register(Student, StudentAdmin)
admin.site.register(Referent, ReferentAdmin)
admin.site.register(Corporation, CorporationAdmin)
admin.site.register(CorpContact, CorpContactAdmin)
admin.site.register(Domain)
admin.site.register(Period, PeriodAdmin)
admin.site.register(Availability, AvailabilityAdmin)
admin.site.register(Training)