54 lines
1.5 KiB
Python
Executable File
54 lines
1.5 KiB
Python
Executable File
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)
|