svthalia/concrexit

View on GitHub
website/events/admin/inlines.py

Summary

Maintainability
A
0 mins
Test Coverage
from django.contrib import admin

from events import models
from pizzas.models import FoodEvent
from promotion.models import PromotionRequest

from .forms import RegistrationInformationFieldForm


class RegistrationInformationFieldInline(admin.TabularInline):
    """The inline for registration information fields in the Event admin."""

    form = RegistrationInformationFieldForm
    extra = 0
    model = models.RegistrationInformationField
    ordering = ("_order",)

    radio_fields = {"type": admin.VERTICAL}

    def get_formset(self, request, obj=None, **kwargs):
        formset = super().get_formset(request, obj, **kwargs)
        if obj is not None:
            count = obj.registrationinformationfield_set.count()
            formset.form.declared_fields["order"].initial = count
        return formset


class PizzaEventInline(admin.StackedInline):
    """The inline for pizza events in the Event admin."""

    model = FoodEvent
    extra = 0
    max_num = 1


class PromotionRequestInline(admin.StackedInline):
    model = PromotionRequest
    readonly_fields = (
        "assigned_to",
        "status",
        "drive_folder",
        "status_updated",
    )

    def has_add_permission(self, request, obj=None):
        return True

    def has_view_permission(self, request, obj=None):
        return True

    def has_change_permission(self, request, obj=None):
        return True

    def has_delete_permission(self, request, obj=None):
        return True

    extra = 0