You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kompass/jdav_web/material/admin.py

64 lines
1.9 KiB
Python

from django.contrib import admin
from django.utils.translation import ugettext_lazy as _
from django.contrib.admin import SimpleListFilter
from django.db import models
from django import forms
from .models import MaterialPart, Ownership, MaterialCategory
from easy_select2 import apply_select2
class MaterialCategoryAdmin(admin.ModelAdmin):
fields = ['name']
# Register your models here.
class OwnershipInline(admin.TabularInline):
"""
This shows the ownership selection directly in the MaterialPart edit
view
"""
model = Ownership
extra = 0
formfield_overrides = {
models.ForeignKey: {'widget': apply_select2(forms.Select)}
}
class NotTooOldFilter(SimpleListFilter):
title = _('Age')
parameter_name = 'age'
def lookups(self, request, model_admin):
return (
('too_old', _('Not too old')),
('not_too_old', _('Too old')),
)
def queryset(self, request, queryset):
if self.value() == 'too_old':
return queryset.filter(pk__in=[x.pk for x in queryset.all() if x.not_too_old()])
if self.value() == 'not_too_old':
return queryset.filter(pk__in=[x.pk for x in queryset.all() if not x.not_too_old()])
class MaterialAdmin(admin.ModelAdmin):
"""Edit view of a MaterialPart"""
list_display = ('name', 'description', 'quantity_real',
'ownership_overview', 'buy_date',
'lifetime', 'not_too_old', 'admin_thumbnail')
search_fields = ('name', 'description')
inlines = [OwnershipInline]
list_filter = (NotTooOldFilter, 'material_cat', 'ownership__owner')
formfield_overrides = {
models.ManyToManyField: {'widget': forms.CheckboxSelectMultiple}
}
class Media:
css = {'all': ('admin/css/tabular_hide_original.css',)}
admin.site.register(MaterialCategory, MaterialCategoryAdmin)
admin.site.register(MaterialPart, MaterialAdmin)