- Added Python 3.13, Django 5.2a1.
- Made the domain handling case insensitive.
- Handle the case when a page's site and its parent's site do not match.
- Added Python 3.12, Django 5.0.
- Dropped support for Django before 4.2.
- Changed the
DefaultLanguageListFilter
to use the model admin's default empty value display, and allowed filtering for sites where a default value isn't set. - Raised the minimum feincms3 version to 5.0 and added support for the new move node interface.
- Made
Site.languages
return all languages instead of nonsense whenlanguage_codes
is empty. - Added a system check which ensures that a unique index for
(site, path)
exists on pages. - Fixed the applications clash check.
- Started running tests at least once every month.
- Added an optional language codes field which allows defining the list of languages per site.
- Added an undocumented
reverse_site_app
wrapper aroundreverse_app
andbuild_absolute_uri
which allows reversing URLs from the current and other sites, without caring if a site is active currently. - Added a default
get_absolute_url
method to sites. - Added an overrideable
get_host
method to sites. The method can be overridden either in a swappable model or by using theFEINCMS3_SITES_SITE_GET_HOST
setting. The setting should be either a callable or the Python module path to a callable which accepts the site instance and should return a hostname. It's especially useful for local development since you can easily change the host values to work in your local environment. For example, if you're using feincms3-sites with subdomains you could setFEINCMS3_SITES_SITE_GET_HOST = lambda site: site.host.replace("example.com", "localhost:8000")
.
- Stopped requiring users of the library to set
FEINCMS3_SITES_SITE_MODEL
themselves if they are happy with the default site model. - Changed the model definitions to avoid even more migrations because of changing choices, hide irrelevant field subclasses.
- Added utilities for only showing objects for some parent object's site in the
admin interface, see
feincms3_sites.fields
. Everything is ugly and subject to change. - Stopped calling
get_site_model
for each request, once on startup is enough. - Added utilities for building absolute URIs; for example you can now call
feincms3_sites.middleware.build_absolute_uri(url, site=...)
in your code to hopefully add an appropriate protocol and host to a given URL. - Dropped support for Python 3.8.
- Stopped
redirect_to_site_middleware
from using permanent redirects ifDEBUG
isTrue
.
- Added basic support for
i18n_patterns
to thedefault_language_middleware
.
- Added Python 3.11, Django 4.2 to the CI. Removed Django 4.0.
- Switched to hatchling and ruff.
- Stopped setting
request.site
; the current site is available usingcurrent_site()
.
0.14 (2022-08-13)
- Add DefaultLanguageListFilter to limit choices to settings.LANGUAGE
- Add default list_filter to SiteAdmin (is_active, host, default_language)
- Added Python 3.10, Django 4.0 and 4.1 to the CI.
- Raised the requirements to Python >= 3.8, Django >= 3.2.
- Fixed exception when using custom site models.
0.13 (2021-10-08)
- The site model is now swappable. (#4, #5)
0.12 (2021-08-12)
- Switched from Travis CI to GitHub actions.
- Updated feincms3-sites for the latest version of feincms3.
0.11 (2020-09-23)
- Raised the minimum supported feincms3 version to 0.38.1.
- Verified compatibility with Django 3.1.
- Dropped compatibility with Django<2.2.
0.10 (2020-01-09)
- Verified compatibility with Django 3.0.
- Replaced
ugettext*
withgettext*
.
0.9 (2019-09-20)
- Removed the requirement to anchor site regular expressions at the
beginning (meaning that e.g.
example\.com$
now works as it should). - Fixed a possible path uniqueness problem with descendants with static paths.
0.8 (2019-02-07)
- Removed
apps_urlconf_for_site
andapps_middleware
since feincms3'sapps_middleware
now automatically does the right thing when used aftersite_middleware
. - Made the
site
argument toAbstractPage.objects.active()
keyword-only.
0.7 (2019-02-06)
- Added an
is_active
flag to sites. - Removed the check that only one site is the default, making it possible to change the default through the admin interface.
- Made it possible to edit
is_active
andis_default
through the changelist. - Updated the Travis CI configuration to cover a greater range of Python and Django version combinations.
0.6 (2019-01-17)
- Added validation of the
host_re
so that invalid input is catched early. - Sort non-default sites by host in the administration interface.
- Added ordering by
position
to the abstract page (necessary for newer versions of django-tree-queries). - Added support for using feincms3-sites without explicitly specifying the site everywhere by taking advantage of the upcoming contextvars module and its backports.
0.5 (2018-10-02)
- Raised test coverage to 100% again.
- Added the possibility to define a default language per site.
- Switched the preferred quote to
"
and started using black to automatically format Python code.
0.4 (2018-04-18)
- Fixed a bug where path uniqueness was erroneously checked across websites.
- Replaced the default
Page.objects.active()
manager method with our ownPage.objects.active(site)
so that filtering by site is less easily forgotten.
0.3 (2018-04-18)
- Converted middleware to function-based middleware and renamed them to conform to function naming.
- Replaced
CanonicalDomainMiddleware
with aredirect_to_site_middleware
(which does not inherit any functionality fromSecurityMiddleware
-- add theSecurityMiddleware
yourself).
0.2 (2018-04-17)
- Added documentation (README only for now).
- Made
AppsMiddleware
raise a 404 error if no site matches the current requests' host. - Added a
SiteMiddleware
for using feincms3-sites without feincms3 apps. - Fixed a bug where creating a root page without a site would crash insteaf of showing the field required validation error.
- Fixed the
verbose_name
of the site foreign key (it only points to a single site). - Added a
CanonicalDomainMiddleware
which works the same way as the middleware in django-canonical-domain, except that it takes the site from a previousAppsMiddleware
orSiteMiddleware
instead of from aCANONICAL_DOMAIN
setting.
0.1 (2018-04-12)
- Initial release!