Source code for ferrosoft.apps.ferrobase.views.company_site

#  Copyright (c) 2025 Ferrosoft GmbH. All rights reserved.

from ferrosoft.apps.ferrobase.filter import CompanySiteFilterSet
from ferrosoft.apps.ferrobase.forms import CompanySiteForm
from ferrosoft.apps.ferrobase.models import CompanySite, IDSequence
from ferrosoft.apps.ferrobase.services.idgenerator import IdGenerator
from ferrosoft.apps.ferrobase.views import generic


[docs] class CompanySiteCreateView(generic.CreateView): """Create a company site, pre-populating ``code`` from the configured ID sequence.""" form_class = CompanySiteForm form_template = "ferrobase/company_site/form.html" model = CompanySite
[docs] def get_form_kwargs(self): """Generate the next ``COMPANY_SITE`` ID and inject it as form initial.""" return super().get_form_kwargs() | { "initial": { "code": IdGenerator.get_instance(IDSequence.COMPANY_SITE).next_id(), } }
[docs] class CompanySiteReadView(generic.FilterView): """Filterable list of company sites ordered by code.""" filterset_class = CompanySiteFilterSet model = CompanySite ordering = "code"
[docs] class CompanySiteUpdateView(generic.UpdateView): """Update a company site using the shared company-site form.""" form_class = CompanySiteForm form_template = "ferrobase/company_site/form.html" model = CompanySite
[docs] class CompanySiteDeleteView(generic.DeleteView): """Delete a company site, blocked when referenced by other records.""" model = CompanySite
company_site_urls = generic.model_crud_routes( CompanySite, create_view=CompanySiteCreateView, read_view=CompanySiteReadView, update_view=CompanySiteUpdateView, delete_view=CompanySiteDeleteView, )