2018-09-16 10:35:02 +00:00
|
|
|
from django.contrib import admin
|
|
|
|
|
2018-09-30 14:14:39 +00:00
|
|
|
from .models import PantryItem, PantryItemLine, Unit, Category, Location
|
2018-10-12 06:29:27 +00:00
|
|
|
from .models import ShoppingListItem
|
2018-09-23 20:45:06 +00:00
|
|
|
|
2018-09-16 11:14:54 +00:00
|
|
|
|
|
|
|
class PantryItemInLine(admin.TabularInline):
|
|
|
|
model = PantryItemLine
|
|
|
|
extra = 1
|
|
|
|
|
2018-09-23 20:45:06 +00:00
|
|
|
|
2018-10-07 11:09:07 +00:00
|
|
|
class LocationInLine(admin.TabularInline):
|
|
|
|
model = Location
|
|
|
|
extra = 1
|
|
|
|
|
2018-10-12 06:29:27 +00:00
|
|
|
|
2018-09-20 21:00:05 +00:00
|
|
|
def upper_case_name(obj):
|
|
|
|
return obj.name.upper()
|
2020-11-08 14:31:33 +00:00
|
|
|
|
|
|
|
|
2018-09-20 21:00:05 +00:00
|
|
|
upper_case_name.short_description = 'Name'
|
|
|
|
|
|
|
|
|
|
|
|
def capitalize_name(obj):
|
|
|
|
return obj.name.capitalize()
|
2020-11-08 14:31:33 +00:00
|
|
|
|
|
|
|
|
2018-09-20 21:00:05 +00:00
|
|
|
upper_case_name.short_description = 'Name'
|
|
|
|
|
|
|
|
|
2018-10-07 11:09:07 +00:00
|
|
|
class PantryItemLineAdmin(admin.ModelAdmin):
|
2018-09-23 20:45:06 +00:00
|
|
|
list_filter = ['expiry_date', 'pantry_item__unit', 'pantry_item', 'pantry_item__min_quantity']
|
2018-09-20 21:00:05 +00:00
|
|
|
search_fields = ['info', 'pantry_item__name', 'pantry_item__info']
|
2018-09-23 20:45:06 +00:00
|
|
|
autocomplete_fields = ['pantry_item']
|
|
|
|
|
|
|
|
readonly_fields = ['unit']
|
|
|
|
fields = (
|
2018-09-20 21:00:05 +00:00
|
|
|
'pantry_item',
|
|
|
|
'quantity',
|
|
|
|
'expiry_date',
|
|
|
|
('size', 'unit'),
|
|
|
|
'info',
|
|
|
|
)
|
|
|
|
|
2018-09-16 13:31:21 +00:00
|
|
|
list_display = (
|
|
|
|
'pantry_item',
|
|
|
|
'quantity',
|
|
|
|
'expiry_date',
|
|
|
|
'size',
|
|
|
|
'unit',
|
|
|
|
'info',
|
|
|
|
)
|
|
|
|
|
2018-09-30 14:14:39 +00:00
|
|
|
|
2018-09-23 20:45:06 +00:00
|
|
|
class AutocompleteAdmin(admin.ModelAdmin):
|
|
|
|
"""Class used to satisfy an admin check"""
|
|
|
|
search_fields = ["name"]
|
2018-09-16 11:14:54 +00:00
|
|
|
|
2018-09-30 14:14:39 +00:00
|
|
|
|
2018-10-07 11:09:07 +00:00
|
|
|
class LocationAdmin(AutocompleteAdmin):
|
|
|
|
inlines = [LocationInLine]
|
|
|
|
|
|
|
|
|
2018-09-16 11:14:54 +00:00
|
|
|
class PantryItemAdmin(admin.ModelAdmin):
|
2018-09-30 14:14:39 +00:00
|
|
|
list_filter = ['category', 'unit', 'min_quantity', 'location']
|
2018-09-23 20:49:58 +00:00
|
|
|
search_fields = ['info', 'name', 'category__name', 'unit__name']
|
2018-09-23 20:45:06 +00:00
|
|
|
autocomplete_fields = ['category', 'unit']
|
2018-09-16 11:14:54 +00:00
|
|
|
inlines = [PantryItemInLine]
|
2018-09-30 14:14:39 +00:00
|
|
|
|
2018-09-20 21:00:05 +00:00
|
|
|
# TODO: make category a model
|
2020-11-08 14:31:33 +00:00
|
|
|
# autocomplete_fields = ['category',]
|
2018-09-23 20:45:06 +00:00
|
|
|
fields = (
|
2018-09-16 13:31:21 +00:00
|
|
|
'name',
|
|
|
|
'category',
|
2018-09-20 21:00:05 +00:00
|
|
|
('min_quantity', 'unit'),
|
2018-09-30 14:14:39 +00:00
|
|
|
'location',
|
2018-09-20 21:00:05 +00:00
|
|
|
'info',
|
2018-09-30 14:14:39 +00:00
|
|
|
'expiry_duration',
|
2018-09-20 21:00:05 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
list_display = (
|
|
|
|
capitalize_name,
|
|
|
|
'category',
|
2018-09-16 13:31:21 +00:00
|
|
|
'min_quantity',
|
|
|
|
'unit',
|
|
|
|
'info',
|
|
|
|
)
|
2018-09-16 11:14:54 +00:00
|
|
|
|
2018-10-12 06:29:27 +00:00
|
|
|
|
|
|
|
class ShoppingListItemAdmin(PantryItemAdmin):
|
|
|
|
|
|
|
|
inlines = []
|
|
|
|
fields = (
|
|
|
|
'name',
|
|
|
|
('min_quantity', 'unit'),
|
|
|
|
'info',
|
|
|
|
)
|
|
|
|
|
2020-11-08 14:31:33 +00:00
|
|
|
|
2018-09-16 11:14:54 +00:00
|
|
|
admin.site.register(PantryItem, PantryItemAdmin)
|
2018-10-12 06:29:27 +00:00
|
|
|
admin.site.register(ShoppingListItem, ShoppingListItemAdmin)
|
2018-10-07 11:09:07 +00:00
|
|
|
admin.site.register(PantryItemLine, PantryItemLineAdmin)
|
2018-09-23 20:45:06 +00:00
|
|
|
admin.site.register(Unit, AutocompleteAdmin)
|
|
|
|
admin.site.register(Category, AutocompleteAdmin)
|
2018-10-07 11:09:07 +00:00
|
|
|
admin.site.register(Location, LocationAdmin)
|