from django.contrib import admin
from django.contrib.admin.filters import SimpleListFilter
from cycle_storage.models import Bicycle, Storage, Place
from .forms import BicycleAdminForm
[docs]class PlaceFilter(SimpleListFilter):
title = 'Присвоено место'
# Parameter for the filter that will be used in the URL query.
parameter_name = 'place'
[docs] def lookups(self, request, model_admin):
return (
(1, 'Есть место'),
(0, 'Нет места'),
)
[docs] def queryset(self, request, queryset):
if self.value() is None:
return queryset
elif int(self.value()) == 1:
return queryset.exclude(place=None)
else:
return queryset.filter(place=None)
[docs]class BicycleAdmin(admin.ModelAdmin):
list_display = ("owner", "manufacturer", "model", "place", "verified", "request_status")
list_filter = ("verified", "request_status", PlaceFilter)
readonly_fields = ["image_tag"]
form = BicycleAdminForm
[docs] def save_model(self, request, obj, form, change):
if "place" in form.cleaned_data:
place = form.cleaned_data["place"]
place.bicycle = obj
place.save()
super(BicycleAdmin, self).save_model(request, obj, form, change)
[docs]class StorageAdmin(admin.ModelAdmin):
list_display = ("dorm", "name", "total_places", "free_places")
[docs]class PlaceAdmin(admin.ModelAdmin):
list_display = ("__str__", "bicycle")
admin.site.register(Bicycle, BicycleAdmin)
admin.site.register(Storage, StorageAdmin)
admin.site.register(Place, PlaceAdmin)