Add forms
This commit is contained in:
parent
da7ae6151e
commit
0141332d2e
37
recipes/forms.py
Normal file
37
recipes/forms.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
from django.forms import ModelForm, ValidationError, modelformset_factory, BooleanField
|
||||
from .models import Recipe, Version, Ingredient
|
||||
|
||||
class RecipeForm(ModelForm):
|
||||
class Meta:
|
||||
model = Recipe
|
||||
fields = ['title', 'slug']
|
||||
|
||||
class VersionForm(ModelForm):
|
||||
recipe_id: int
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
placeholder = None
|
||||
if 'author_placeholder' in kwargs:
|
||||
placeholder = kwargs.pop('author_placeholder')
|
||||
super().__init__(*args, **kwargs)
|
||||
if placeholder:
|
||||
self.fields['author'].widget.attrs.update({'placeholder': placeholder})
|
||||
|
||||
class Meta:
|
||||
model = Version
|
||||
fields = ['label', 'slug', 'body', 'author']
|
||||
|
||||
def clean_slug(self):
|
||||
slug = self.cleaned_data['slug']
|
||||
if 'slug' in self.changed_data:
|
||||
recipe = Recipe.objects.get(id=self.recipe_id)
|
||||
if recipe.versions.filter(slug=slug).count() > 0: # type: ignore
|
||||
raise ValidationError('A recipe version with this slug already exists.')
|
||||
return slug
|
||||
|
||||
class IngredientForm(ModelForm):
|
||||
class Meta:
|
||||
model = Ingredient
|
||||
fields = ['text']
|
||||
|
||||
IngredientFormSet = modelformset_factory(Ingredient, fields=('text',), extra=1)
|
||||
Loading…
Reference in a new issue