diff --git a/src/newsreader/news/core/forms.py b/src/newsreader/news/core/forms.py index a830dd9..8e8059b 100644 --- a/src/newsreader/news/core/forms.py +++ b/src/newsreader/news/core/forms.py @@ -1,8 +1,21 @@ from django import forms +from django.forms.widgets import CheckboxSelectMultiple from newsreader.news.collection.models import CollectionRule from newsreader.news.core.models import Category -from newsreader.news.core.widgets import RulesWidget + + +class RulesWidget(CheckboxSelectMultiple): + template_name = "news/core/widgets/rules.html" + option_template_name = "news/core/widgets/rule.html" + + def create_option(self, *args, **kwargs): + option = super().create_option(*args, **kwargs) + instance = self.choices.queryset.get(pk=option["value"]) + + if self.category and instance.category: + option["selected"] = self.category.pk == instance.category.pk + return {**option, "instance": instance} class CategoryForm(forms.ModelForm): @@ -16,7 +29,6 @@ class CategoryForm(forms.ModelForm): super().__init__(*args, **kwargs) self.fields["rules"].queryset = CollectionRule.objects.filter(user=self.user) - self.fields["rules"].widget.category = self.instance def save(self, commit=True): diff --git a/src/newsreader/news/core/widgets.py b/src/newsreader/news/core/widgets.py deleted file mode 100644 index f38b86f..0000000 --- a/src/newsreader/news/core/widgets.py +++ /dev/null @@ -1,14 +0,0 @@ -from django.forms.widgets import CheckboxSelectMultiple - - -class RulesWidget(CheckboxSelectMultiple): - template_name = "news/core/widgets/rules.html" - option_template_name = "news/core/widgets/rule.html" - - def create_option(self, *args, **kwargs): - option = super().create_option(*args, **kwargs) - instance = self.choices.queryset.get(pk=option["value"]) - - if self.category and instance.category: - option["selected"] = self.category.pk == instance.category.pk - return {**option, "instance": instance}