mirror of https://github.com/snachodog/mybuddy.git
Fix storing of tags
This commit is contained in:
parent
bf49cc92ad
commit
56ebbd3181
|
@ -82,6 +82,7 @@ class CoreModelForm(forms.ModelForm):
|
||||||
timer.stop(instance.end)
|
timer.stop(instance.end)
|
||||||
if commit:
|
if commit:
|
||||||
instance.save()
|
instance.save()
|
||||||
|
self.save_m2m()
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
|
||||||
|
@ -169,7 +170,7 @@ class NoteForm(CoreModelForm):
|
||||||
"data-target": "#datetimepicker_time",
|
"data-target": "#datetimepicker_time",
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
#"tags": TagsEditor()
|
"tags": TagsEditor()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
import django.utils.timezone
|
||||||
import taggit.managers
|
import taggit.managers
|
||||||
|
|
||||||
|
|
||||||
|
@ -9,7 +11,7 @@ class Migration(migrations.Migration):
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
('contenttypes', '0002_remove_content_type_name'),
|
('contenttypes', '0002_remove_content_type_name'),
|
||||||
('core', '0019_note_tags'),
|
('core', '0018_bmi_headcircumference_height'),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
|
@ -19,7 +21,8 @@ class Migration(migrations.Migration):
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
('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')),
|
('name', models.CharField(max_length=100, unique=True, verbose_name='name')),
|
||||||
('slug', models.SlugField(max_length=100, unique=True, verbose_name='slug')),
|
('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={
|
options={
|
||||||
'verbose_name': 'Tag',
|
'verbose_name': 'Tag',
|
||||||
|
@ -38,9 +41,9 @@ class Migration(migrations.Migration):
|
||||||
'abstract': False,
|
'abstract': False,
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.AlterField(
|
migrations.AddField(
|
||||||
model_name='note',
|
model_name='note',
|
||||||
name='tags',
|
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'),
|
||||||
),
|
),
|
||||||
]
|
]
|
|
@ -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'),
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -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'),
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -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),
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -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'),
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -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'),
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -94,10 +94,6 @@ class BabyBuddyTag(TagBase):
|
||||||
blank=False,
|
blank=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
|
||||||
print("BBT SAVE")
|
|
||||||
return super().save(*args, **kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
class BabyBuddyTagged(GenericTaggedItemBase):
|
class BabyBuddyTagged(GenericTaggedItemBase):
|
||||||
tag = models.ForeignKey(
|
tag = models.ForeignKey(
|
||||||
|
@ -106,10 +102,6 @@ class BabyBuddyTagged(GenericTaggedItemBase):
|
||||||
related_name="%(app_label)s_%(class)s_items",
|
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):
|
class Child(models.Model):
|
||||||
model_name = "child"
|
model_name = "child"
|
||||||
first_name = models.CharField(max_length=255, verbose_name=_("First name"))
|
first_name = models.CharField(max_length=255, verbose_name=_("First name"))
|
||||||
|
@ -280,15 +272,6 @@ class Feeding(models.Model):
|
||||||
validate_duration(self)
|
validate_duration(self)
|
||||||
validate_unique_period(Feeding.objects.filter(child=self.child), 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):
|
class Note(models.Model):
|
||||||
model_name = "note"
|
model_name = "note"
|
||||||
child = models.ForeignKey(
|
child = models.ForeignKey(
|
||||||
|
@ -298,7 +281,7 @@ class Note(models.Model):
|
||||||
time = models.DateTimeField(
|
time = models.DateTimeField(
|
||||||
default=timezone.now, blank=False, verbose_name=_("Time")
|
default=timezone.now, blank=False, verbose_name=_("Time")
|
||||||
)
|
)
|
||||||
tags = TaggableManager()
|
tags = TaggableManager(blank=True, through=BabyBuddyTagged)
|
||||||
|
|
||||||
objects = models.Manager()
|
objects = models.Manager()
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,6 @@ class TagsEditor(Widget):
|
||||||
return {'name': tag.name, 'color': tag.color}
|
return {'name': tag.name, 'color': tag.color}
|
||||||
|
|
||||||
def format_value(self, value: Any) -> Optional[str]:
|
def format_value(self, value: Any) -> Optional[str]:
|
||||||
print("FORMAT", value)
|
|
||||||
if value is not None and not isinstance(value, str):
|
if value is not None and not isinstance(value, str):
|
||||||
value = [self.__unpack_tag(tag) for tag in value]
|
value = [self.__unpack_tag(tag) for tag in value]
|
||||||
return value
|
return value
|
||||||
|
|
Loading…
Reference in New Issue