from django import forms from django.contrib import admin from django.utils.translation import gettext_lazy as _ from outbo.apps.projects.models import Project, Member class ProjectCreationForm(forms.ModelForm): products_amount = forms.IntegerField( label=_("Products amount"), widget=forms.NumberInput, min_value=1, max_value=20 ) class Meta: model = Project fields = [ "name", "description", "products_amount", "category", "brand", "printing_files_date", "promo_date", ] class MemberInline(admin.TabularInline): model = Member readonly_fields = ["project"] extra = 1 @admin.register(Project) class ProjectAdmin(admin.ModelAdmin): add_form = ProjectCreationForm inlines = [MemberInline] list_display = ('__str__', 'created_at', 'max_product_stage_description') def get_form(self, request, obj=None, **kwargs): defaults = {} if obj is None: defaults["form"] = self.add_form defaults.update(kwargs) return super().get_form(request, obj, **defaults) def save_model(self, request, obj, form, change): if not change: obj.save(products_amount=form.cleaned_data["products_amount"]) obj.save() def get_readonly_fields(self, request, obj=None): if obj: return super().get_readonly_fields(request, obj=obj) + ("slug",) return super().get_readonly_fields(request, obj=obj)