| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- """Форма примечания."""
- from typing import List
- from pytils.translit import slugify
- from django import forms
- from django.core.exceptions import ValidationError
- from ya_note.notes.models import ModelNote
- WARNING: str = " - такой slug уже существует, придумайте уникальное значение!"
- class Meta:
- """Метаинформация для формы комментария."""
- model = ModelNote
- __fields: List[str] = ["title", "text", "slug"]
- @property
- def fields(self) -> List[str]:
- """Список полей в форме."""
- return self.__fields
- class FormNote(forms.ModelForm):
- """Форма для создания или обновления заметки."""
- meta: Meta = Meta()
- @property
- def fields(self) -> List[str]:
- """Возвращает список полей."""
- return self.meta.fields
- def clean_slug(self):
- """Обрабатывает случай, если slug не уникален."""
- cleaned_data = super().clean()
- slug = cleaned_data.get('slug')
- if not slug:
- title = cleaned_data.get('title')
- slug = slugify(title)[:100]
- if ModelNote.objects.filter(
- slug=slug
- ).exclude(id=self.instance.pk).exists():
- raise ValidationError(slug + WARNING)
- return slug
|