Add documentation and source

Added documentation, source and extra files.
This commit is contained in:
2025-07-02 20:26:50 +02:00
parent 4fc1d36a10
commit e3ebf6bf4f
295 changed files with 24986 additions and 0 deletions

View File

@ -0,0 +1,51 @@
from django.contrib import admin
from django.db import models
from django.db.models import F
from django.http import HttpRequest
from django.utils.translation import gettext_lazy as _
from various.models import Room
@admin.register(Room)
class RoomAdmin(admin.ModelAdmin):
"""
Admin configuration for rooms.
"""
list_display = ["id", "name", "length", "width", "height", "get_volume_display"]
list_editable = ["name", "length", "width", "height"]
actions = ["action_fix_minimum"]
def get_queryset(self, request):
"""
Change queryset to add a computed field for volume.
Args:
request: HTTP
"""
return super().get_queryset(request).annotate(volume=F("width") * F("length") * F("height"))
def get_volume_display(self, obj: Room) -> str:
return f"{obj.get_volume()} cm³"
get_volume_display.short_description = _("area")
get_volume_display.admin_order_field = "volume"
def action_fix_minimum(self, request: HttpRequest, queryset: models.QuerySet):
"""
Change room dimensions to have at least 1cm in every axis.
Args:
request: HTTP request.
queryset: selected rooms.
"""
for room in queryset: # type: Room
room.width = max(1, room.width)
room.length = max(1, room.length)
room.height = max(1, room.height)
room.save()
self.message_user(request, _("The selected rooms have been updated."))