Changelog
Tagulous follows semantic versioning in the format BREAKING.FEATURE.BUG
:
BREAKING
will be marked with links to the details and upgrade instructions in Upgrading.FEATURE
andBUG
releases will be safe to install without reading the upgrade notes.
Changes for upcoming releases will be listed without a release date - these are available by installing the develop branch from github.
1.4.0, TBC
Features:
Add
TagTreeModel.objects.as_nested_list()
Bugfix:
Documentation fixes (#154)
Thanks to:
Frank Lanitz (frlan) for documentation fixes (#154)
1.3.3, 2021-12-25
Features:
Add Django 4.0 support
Bugfix:
Slug uniqueness now works when there are more than 11 collisions (#152)
1.3.2, 2021-12-23
Changes:
Remove tag lookup from model getstate to improve pickling performance (#143)
Manager and QuerySet cast classes are now placed in the module of the original class so they can be imported and found by serializers and picklers
Cast class names prefixes changed from
CastTagged
toTagulousCastTagged
to further reduce risk of clashesClass casting detects and reuses classes which have already been cast
Bugfix:
QuerySets can be pickled (#142)
1.3.1, 2021-12-21
Changes:
Switch to pytest and enforce linting
Bugfix:
Fix
_filter_or_exclude
exception missed by tests (#144, #149)
Thanks to:
nschlemm for the
_filter_or_exclude
fix (#144, #149)
1.3.0, 2021-09-07
Features:
Add
similarly_tagged
to tagged model querysets, andget_similar_objects
to instantiated tag fields (#115)New DRF serializer to serialize tags as strings (#111)
Initial
TagField
values passed onForm(initial=...)
can now be a string, list or tuple of strings or tags, or queryset (#107)Add system check for
settings.SERIALIZATION_MODULES
(#101)
Bugfix:
Fix incorrect arguments for the TagField’s
RelatedManager.set
Upgrade select2 to fix composed characters (#138)
Fix select2 input where quotes in quoted tags could be escaped
The select2 control is applied when the formset:added event adds a tag field (#97)
Fix edge case circular import (#124)
Thanks to:
valentijnscholten for the form
initial=
solution (#107)
1.2.1, 2021-08-31
Bugfix:
Fix issue with update_or_create (#135)
1.2.0, 2021-08-25
Upgrade notes: Upgrading from 1.1.0
Features:
Django 3.2 support
Option
autocomplete_view_fulltext
for full text search in autocomplete view (#102)
Changes:
Slugification now uses standard Django for unicode for consistency
Add
autocomplete_view_args
andautocomplete_view_kwargs
options (#119, #120)Documentation updates (#105, #113, #131)
Fix division by zero issue in
weight()
(#102)
Bugfix:
Fix issue where the Select2 adaptor for SingleTagField didn’t provide an empty value, which meant it would look like it had defaulted to a value which wasn’t set. (#116)
Fix issue where the Select2 adaptor didn’t correctly handle the
required
attribute, which meant browser field validation would fail silently. (#116)Fix dark mode support in Django admin (#125)
Fix collapsed select2 in Django admin (#123)
Fix duplicate migration issue (#93)
Tagged models can now be pickled (#109)
Thanks to:
BoPeng for the
autocomplete_view_args
config optionsvalentijnscholten for the select2 doc fix
Jens Diemer (jedie) for the readme update
dany-nonstop for
autocomplete_view_fulltext
and weight division issuepoolpoolpoolpool for form.media docs (#131)
1.1.0, 2020-12-06
Feature:
Add Django 3.0 and 3.1 support (#85)
Changes:
Drops support for Python 2 and 3.5
Drops support for Django 1.11 and earlier
Drops support for South migrations
Bugfix:
Resolves
ManyToManyRel
issue sometimes seen in loaddata (#110)
Thanks to:
Diego Ubirajara (dubirajara) for
FieldDoesNotExist
fix for Django 3.1Andrew O’Brien (marxide) for
admin.helpers
fix for Django 3.1
1.0.0, 2020-10-08
Upgrade notes: Upgrading from 0.14.1
Feature:
Added adaptor for Select2 v4 and set as default for Django 2.2+ (#11, #12, #90)
Support full unicode slugs with new
TAGULOUS_SLUG_ALLOW_UNICODE
setting (#22)
Changes:
Drops support for Django 1.8 and earlier
Bugfix:
Tag fields work with abstract and concrete inheritance (#8)
Ensure weighted values are integers not floats (#69, #70)
The admin site in Django 2.2+ now uses the Django vendored versions of jQuery and select2 (#76)
Fix support for single character tags in trees (#82)
Fix documentation for adding registering tagged models in admin (#83)
Fix division by zero in weight() (#59, #61)
Fix support for capitalised table name in PostgreSQL (#60, #61)
Tag fields are stripped before parsing, preventing whitespace tags in SingleTagFields (#29)
Fix documentation for quickstart (#41)
Fix
prefetch_related()
on tag fields (#42)Correctly raise an
IntegrityError
when saving a tree tag without a name (#50)
Internal:
Signals have been refactored to global handlers (instead of multiple independent handlers bound to descriptors)
Code linting improved; project now uses black and isort, and flake8 pases
Thanks to:
Khoa Pham (phamk) for
prefetch_related()
fix (#42, #87)Erik Van Kelst (4levels) for division by zero and capitalised table fixes (#60, #61, #62)
hagsteel for weighted values fix (#69, #70)
Michael Röttger (mcrot) for single character tag fix (#81, #82)
Frank Lanitz (frlan) for admin documentation fix (#83)
0.14.1, 2019-09-04
Upgrade notes: Upgrading from 0.14.0
Feature:
Add Django 2.2 support (closes #71)
Upgrade example project to Django 2.2 on Python 3.7
Bugfix:
Correct issue with multiple databases (#72)
Thanks to:
Dmitry Ivanchenko (ivanchenkodmitry) for multiple database fix (#72)
0.14.0, 2019-02-24
Feature:
Add Django 2.0 support (fixes #48, #65)
Add Django 2.1 support (fixes #56, #58)
Bugfix:
Fix example project (fixes #64)
Thanks to:
Diego Ubirajara (dubirajara) for Widget.render() fix (#58)
0.13.2, 2018-05-28
Feature:
Tag fields now support the argument to_base=MyTagModelBase
0.13.1, 2018-05-19
Upgrade notes: Upgrading from 0.13.0
Bugfix:
TagField(null=...)
now raises a warning about theTagField
, rather than the parentManyToManyField
.
Changes:
Reduce support for Python 3.3
0.13.0, 2018-04-30
Upgrade notes: Upgrading from 0.12.0
Feature:
Add Django 1.11 support (fixes #28)
Changes:
Reduce support for Django 1.4 and Python 3.2
Remove deprecated
TagField
manager’s__len__
(#10, fixes #9)
Bugfix:
Fix failed search in select2 v3 widget when pasting multiple tags (fixes #26)
Fix potential race condition when creating new tags (#31)
Temporarily disabled some migration tests which only failed under Python 2.7 with Django 1.9+ due to logic issues in the tests.
Fix deserialization exception for model with
ManyToOneRel
(fixes #14)
Thanks to:
Martín R. Guerrero (slackmart) for removing
__len__
method (#9, #10)Mark London for select2 v3 widget fix when pasting tags (#26)
Peter Baumgartner (ipmb) for fixing race condition (#31)
Raniere Silva (rgaics) for fixing deserialization exeption (#14, #45)
0.12.0, 2017-02-26
Upgrade notes: Upgrading from 0.11.1
Feature:
Add Django 1.10 support (fixes #18, #20)
Bugfix:
Remove
unique=True
from tag tree models’path
field (fixes #1)Implement slug field truncation (fixes #3)
Correct MySQL slug clash detection in tag model save
Correct
.weight(..)
to always return floored integers instead of decimalsCorrect max length calculation when adding and removing a value through assignment
TagDescriptor now has a through attribute to match ManyToManyDescriptor
Deprecates:
TagField manager’s __len__ method is now deprecated and will be removed in 0.13
Thanks to:
Pamela McA’Nulty (PamelaM) for MySQL fixes (#1)
Mary (minidietcoke) for max count fix (#16)
James Pic (jpic) for documentation corrections (#13)
Robert Erb (rerb) at AASHE (http://www.aashe.org/) for Django 1.10 support (#18, #20)
Gaël Utard (gutard) for tag descriptor through fix (#19)
0.11.1, 2015-10-05
Internal:
Fix package configuration in setup.py
0.11.0, 2015-10-04
Feature:
Add support for Python 3.2 to 3.5
Internal:
Change
tagulous.models.initial.field_initialise_tags
andmodel_initialise_tags
to take a file handle asreport
.
0.10.0, 2015-09-28
Upgrade notes: Upgrading from 0.9.0
Feature:
Add fields
level
andlabel
to tagulous.models.TagTreeModel (were properties)Add
TagTreeModel.get_siblings()
Add tagulous.models.TagTreeModelQuerySet methods
with_ancestors()
,with_descendants()
andwith_siblings()
Add space_delimiter tag option to disable space as a delimiter
Tagulous available from pypi as
django-tagulous
TagModel.merge_tags can now accept a tag string
TagTreeModel.merge_tags can now merge recursively with new argument
children=True
Support for recursively merging tree tags in admin site
Internal:
Add support for Django 1.9a1
TagTreeModel.tag_options.tree
will now always beTrue
JavaScript
parseTags
arguments have changedAdded example project to github repository
Bugfix:
TagRelatedManager
instances can be compared to each otherAdmin inlines now correctly suppress popup buttons
Select2 adaptor correctly parses ajax response
Default help text no longer changes for tagulous.models.SingleTagField
0.9.0, 2015-09-14
Upgrade notes: Upgrading from 0.8.0
Internal:
Add support for Django 1.7 and 1.8
Removed:
tagulous.admin.tag_model
has been removed
Bugfix:
Using a tag field with a non-tag model raises exception
0.8.0, 2015-08-22
Upgrade notes: Upgrading from 0.7.0 or earlier
Feature:
Tag cloud support
Improved admin.register
Added tag-aware serializers
Deprecated:
tagulous.admin.tag_model
will be removed in the next version
Bugfix:
Setting tag options twice raises exception
Tagged inline formsets work correctly
Internal:
South migration support improved
Tests moved to top level, tox support added
Many small code improvements and bug fixes
0.7.0, 2015-07-01
Feature:
Added tree support
0.6.0, 2015-05-11
Feature:
Initial public preview