From 56ebbd3181320526124a6c314e1ac4f8e18e54ad Mon Sep 17 00:00:00 2001 From: Paul Konstantin Gerke Date: Tue, 15 Feb 2022 15:46:07 +0100 Subject: [PATCH] Fix storing of tags --- core/forms.py | 3 ++- ...babybuddytag_babybuddytagged_note_tags.py} | 13 +++++++----- core/migrations/0019_note_tags.py | 20 ------------------- .../0021_alter_babybuddytag_color.py | 19 ------------------ .../migrations/0022_babybuddytag_last_used.py | 19 ------------------ core/migrations/0023_alter_note_tags.py | 19 ------------------ core/migrations/0024_alter_note_tags.py | 20 ------------------- core/models.py | 19 +----------------- core/widgets.py | 1 - 9 files changed, 11 insertions(+), 122 deletions(-) rename core/migrations/{0020_babybuddytag_babybuddytagged_alter_note_tags.py => 0019_babybuddytag_babybuddytagged_note_tags.py} (72%) delete mode 100644 core/migrations/0019_note_tags.py delete mode 100644 core/migrations/0021_alter_babybuddytag_color.py delete mode 100644 core/migrations/0022_babybuddytag_last_used.py delete mode 100644 core/migrations/0023_alter_note_tags.py delete mode 100644 core/migrations/0024_alter_note_tags.py diff --git a/core/forms.py b/core/forms.py index e157cd38..a245d4c3 100644 --- a/core/forms.py +++ b/core/forms.py @@ -82,6 +82,7 @@ class CoreModelForm(forms.ModelForm): timer.stop(instance.end) if commit: instance.save() + self.save_m2m() return instance @@ -169,7 +170,7 @@ class NoteForm(CoreModelForm): "data-target": "#datetimepicker_time", } ), - #"tags": TagsEditor() + "tags": TagsEditor() } diff --git a/core/migrations/0020_babybuddytag_babybuddytagged_alter_note_tags.py b/core/migrations/0019_babybuddytag_babybuddytagged_note_tags.py similarity index 72% rename from core/migrations/0020_babybuddytag_babybuddytagged_alter_note_tags.py rename to core/migrations/0019_babybuddytag_babybuddytagged_note_tags.py index fa2c9098..a40b0b34 100644 --- a/core/migrations/0020_babybuddytag_babybuddytagged_alter_note_tags.py +++ b/core/migrations/0019_babybuddytag_babybuddytagged_note_tags.py @@ -1,7 +1,9 @@ -# Generated by Django 4.0.2 on 2022-02-11 15:44 +# Generated by Django 4.0.2 on 2022-02-15 14:43 +import core.models from django.db import migrations, models import django.db.models.deletion +import django.utils.timezone import taggit.managers @@ -9,7 +11,7 @@ class Migration(migrations.Migration): dependencies = [ ('contenttypes', '0002_remove_content_type_name'), - ('core', '0019_note_tags'), + ('core', '0018_bmi_headcircumference_height'), ] operations = [ @@ -19,7 +21,8 @@ class Migration(migrations.Migration): ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, unique=True, verbose_name='name')), ('slug', models.SlugField(max_length=100, unique=True, verbose_name='slug')), - ('color', models.CharField(max_length=32, verbose_name='Color')), + ('color', models.CharField(default='#7F7F7F', max_length=32, validators=[core.models.validate_html_color], verbose_name='Color')), + ('last_used', models.DateTimeField(default=django.utils.timezone.now)), ], options={ 'verbose_name': 'Tag', @@ -38,9 +41,9 @@ class Migration(migrations.Migration): 'abstract': False, }, ), - migrations.AlterField( + migrations.AddField( model_name='note', name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='core.BabyBuddyTagged', to='core.BabyBuddyTag', verbose_name='Tags'), + field=taggit.managers.TaggableManager(blank=True, help_text='A comma-separated list of tags.', through='core.BabyBuddyTagged', to='core.BabyBuddyTag', verbose_name='Tags'), ), ] diff --git a/core/migrations/0019_note_tags.py b/core/migrations/0019_note_tags.py deleted file mode 100644 index 21b1d00f..00000000 --- a/core/migrations/0019_note_tags.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 4.0.2 on 2022-02-11 10:47 - -from django.db import migrations -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('taggit', '0004_alter_taggeditem_content_type_alter_taggeditem_tag'), - ('core', '0018_bmi_headcircumference_height'), - ] - - operations = [ - migrations.AddField( - model_name='note', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - ] diff --git a/core/migrations/0021_alter_babybuddytag_color.py b/core/migrations/0021_alter_babybuddytag_color.py deleted file mode 100644 index 53595ba9..00000000 --- a/core/migrations/0021_alter_babybuddytag_color.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 4.0.2 on 2022-02-11 17:27 - -import core.models -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0020_babybuddytag_babybuddytagged_alter_note_tags'), - ] - - operations = [ - migrations.AlterField( - model_name='babybuddytag', - name='color', - field=models.CharField(default='#7F7F7F', max_length=32, validators=[core.models.validate_html_color], verbose_name='Color'), - ), - ] diff --git a/core/migrations/0022_babybuddytag_last_used.py b/core/migrations/0022_babybuddytag_last_used.py deleted file mode 100644 index ec5df785..00000000 --- a/core/migrations/0022_babybuddytag_last_used.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 4.0.2 on 2022-02-13 13:04 - -from django.db import migrations, models -import django.utils.timezone - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0021_alter_babybuddytag_color'), - ] - - operations = [ - migrations.AddField( - model_name='babybuddytag', - name='last_used', - field=models.DateTimeField(default=django.utils.timezone.now), - ), - ] diff --git a/core/migrations/0023_alter_note_tags.py b/core/migrations/0023_alter_note_tags.py deleted file mode 100644 index c92a90ea..00000000 --- a/core/migrations/0023_alter_note_tags.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 4.0.2 on 2022-02-14 15:50 - -from django.db import migrations -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0022_babybuddytag_last_used'), - ] - - operations = [ - migrations.AlterField( - model_name='note', - name='tags', - field=taggit.managers.TaggableManager(blank=True, help_text='A comma-separated list of tags.', through='core.BabyBuddyTagged', to='core.BabyBuddyTag', verbose_name='Tags'), - ), - ] diff --git a/core/migrations/0024_alter_note_tags.py b/core/migrations/0024_alter_note_tags.py deleted file mode 100644 index 187ff597..00000000 --- a/core/migrations/0024_alter_note_tags.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 4.0.2 on 2022-02-15 09:11 - -from django.db import migrations -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('taggit', '0004_alter_taggeditem_content_type_alter_taggeditem_tag'), - ('core', '0023_alter_note_tags'), - ] - - operations = [ - migrations.AlterField( - model_name='note', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - ] diff --git a/core/models.py b/core/models.py index 718d40fe..0817367d 100644 --- a/core/models.py +++ b/core/models.py @@ -94,10 +94,6 @@ class BabyBuddyTag(TagBase): blank=False, ) - def save(self, *args, **kwargs): - print("BBT SAVE") - return super().save(*args, **kwargs) - class BabyBuddyTagged(GenericTaggedItemBase): tag = models.ForeignKey( @@ -106,10 +102,6 @@ class BabyBuddyTagged(GenericTaggedItemBase): related_name="%(app_label)s_%(class)s_items", ) - def save(self, *args, **kwargs) -> None: - print("BabyBuddyTagged", args, kwargs) - return super().save(*args, **kwargs) - class Child(models.Model): model_name = "child" first_name = models.CharField(max_length=255, verbose_name=_("First name")) @@ -280,15 +272,6 @@ class Feeding(models.Model): validate_duration(self) validate_unique_period(Feeding.objects.filter(child=self.child), self) -from taggit.managers import _TaggableManager -class TTT(_TaggableManager): - def set(self, tags, *, through_defaults=None, **kwargs): - return super().set(tags, through_defaults=through_defaults, **kwargs) - -class TT(TaggableManager): - def save_form_data(self, instance, value): - return super().save_form_data(instance, value) - class Note(models.Model): model_name = "note" child = models.ForeignKey( @@ -298,7 +281,7 @@ class Note(models.Model): time = models.DateTimeField( default=timezone.now, blank=False, verbose_name=_("Time") ) - tags = TaggableManager() + tags = TaggableManager(blank=True, through=BabyBuddyTagged) objects = models.Manager() diff --git a/core/widgets.py b/core/widgets.py index b3768791..60009a00 100644 --- a/core/widgets.py +++ b/core/widgets.py @@ -10,7 +10,6 @@ class TagsEditor(Widget): return {'name': tag.name, 'color': tag.color} def format_value(self, value: Any) -> Optional[str]: - print("FORMAT", value) if value is not None and not isinstance(value, str): value = [self.__unpack_tag(tag) for tag in value] return value