Add validation to the track admin
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
from typing import Iterable
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
@@ -17,6 +19,21 @@ class TranscodingsForm(forms.ModelForm):
|
|||||||
self.add_error('upload', validation_error)
|
self.add_error('upload', validation_error)
|
||||||
return cleaned_data
|
return cleaned_data
|
||||||
|
|
||||||
|
class TrackInlineFormset(forms.BaseInlineFormSet):
|
||||||
|
forms: Iterable[forms.ModelForm]
|
||||||
|
def clean(self):
|
||||||
|
cleaned_data = super().clean()
|
||||||
|
default_cnt = 0
|
||||||
|
for form in self.forms:
|
||||||
|
try:
|
||||||
|
if form.cleaned_data['default'] is True:
|
||||||
|
default_cnt += 1
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
|
if default_cnt > 1:
|
||||||
|
form.add_error('default', ValidationError('Can set only one track as default'))
|
||||||
|
return cleaned_data
|
||||||
|
|
||||||
class TranscodingsInline(admin.StackedInline):
|
class TranscodingsInline(admin.StackedInline):
|
||||||
model = models.Transcoding
|
model = models.Transcoding
|
||||||
form = TranscodingsForm
|
form = TranscodingsForm
|
||||||
@@ -25,7 +42,7 @@ class TranscodingsInline(admin.StackedInline):
|
|||||||
|
|
||||||
class TracksInline(admin.StackedInline):
|
class TracksInline(admin.StackedInline):
|
||||||
model = models.Track
|
model = models.Track
|
||||||
#form = TranscodingsForm
|
formset = TrackInlineFormset
|
||||||
fields = ('default', 'kind', 'lang', 'label', 'upload')
|
fields = ('default', 'kind', 'lang', 'label', 'upload')
|
||||||
extra = 0
|
extra = 0
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user