Пример #1
0
class RecipeForm(forms.Form):
    name = forms.CharField(label='Název')
    slug = forms.CharField()
    perex = forms.CharField(label='Podtitul', required=False, widget=forms.Textarea)
    ingredients = forms.CharField(label='Ingredience', required=False, widget=forms.Textarea)
    procedure = forms.CharField(label='Postup', required=False, widget=forms.Textarea)
    notes = forms.CharField(label='Poznámka', required=False, widget=forms.Textarea)
    source = forms.CharField(label='Zdroj', required=False)
    tags = forms.CharField(label='Kategorie', required=False, widget=forms.Textarea)
    language = forms.ChoiceField(label='Jazyk', choices=settings.LANGUAGES)

    def __init__(self, *args, **kwargs):
        self.author = kwargs.pop('author')
        self.slug = kwargs.pop('slug', None)
        if self.slug:
            self.instance = Recipe.objects.get(author=self.author, slug=self.slug)
        else:
            self.instance = Recipe(author=self.author)

        initial = {
            'name': self.instance.name,
            'slug': self.instance.slug,
            'perex': self.instance.perex,
            'ingredients': '\n'.join(self.instance.ingredients[0].ingredients)
                           if getattr(self.instance, 'ingredients', None) else '',
            'procedure': self.instance.procedure,
            'notes': self.instance.notes,
            'source': self.instance.source,
            'tags': '\n'.join(self.instance.tags),
            'procedure': self.instance.procedure,
            'language': self.instance.language or settings.LANGUAGES[0][0],
        }
        for key in initial:
            if key is None:
                initial[key] = ''
        kwargs['initial'] = initial
        super(RecipeForm, self).__init__(*args, **kwargs)

    def save(self):
        for field in ['name', 'slug', 'perex', 'procedure', 'notes', 'source', 'language']:
            setattr(self.instance, field, self.cleaned_data.get(field, ''))
        if self.slug:
            ingredientgroup = self.instance.ingredients[0]
        else:
            ingredientgroup = IngredientGroup(title='main')
        ingredientgroup.ingredients = filter(bool, self.cleaned_data.get('ingredients', '').split('\n'))
        self.instance.ingredients = [ingredientgroup]
        self.instance.tags = filter(bool, self.cleaned_data.get('tags', '').split('\n'))
        self.instance.save()
Пример #2
0
    def __init__(self, *args, **kwargs):
        self.author = kwargs.pop('author')
        self.slug = kwargs.pop('slug', None)
        if self.slug:
            self.instance = Recipe.objects.get(author=self.author, slug=self.slug)
        else:
            self.instance = Recipe(author=self.author)

        initial = {
            'name': self.instance.name,
            'slug': self.instance.slug,
            'perex': self.instance.perex,
            'ingredients': '\n'.join(self.instance.ingredients[0].ingredients)
                           if getattr(self.instance, 'ingredients', None) else '',
            'procedure': self.instance.procedure,
            'notes': self.instance.notes,
            'source': self.instance.source,
            'tags': '\n'.join(self.instance.tags),
            'procedure': self.instance.procedure,
            'language': self.instance.language or settings.LANGUAGES[0][0],
        }
        for key in initial:
            if key is None:
                initial[key] = ''
        kwargs['initial'] = initial
        super(RecipeForm, self).__init__(*args, **kwargs)