Change Log
0.9.0 (unreleased)
The minimum supported version of Python is now 3.9.
This release contains the following backwards incompatible changes:
Migrated from
pytztozoneinfoforTimeZoneField/TimeZoneHelper.
In addition, it also contains:
Added compatibility with Django versions 4.2 through 6.0
Improved customisability of pagination template
Updated
UNDEFINEDto ensure it cannot be deep copied (it will always be the same instance)Updated the
Archivable.archive()method to raiseProtectedErrorandRestrictedErrorasdelete()would, when inbound foreign keys usingon_delete=models.PROTECToron_delete=models.RESTRICTare detected against unarchived recordsUpdated
Loggableto support tagging individual log entries and subsequently filtering retrieved log entriesUpdated
Developerhelper class to support looking up the associated user via theDJEM_DEV_USERsetting.Updated
Developerhelper class withadd_permissions()andremove_permissions()methods.Updated and documented
M,Mon, andmon()performance monitoring utilities.
0.8.0 (2022-12-12)
Added compatibility with Django versions 4.0 and 4.1
Dropped support for Django versions below 3.2
Updated
AuditableandVersionableto useself._state.addingto differentiate between records being added or updatedSwitched development environment from Vagrant to Docker
Note: As of this release, TimeZoneField/TimeZoneHelper still require pytz, despite the Django 4.0+ move to zoneinfo.
0.7.2 (2021-10-05)
Removed public
djem.auth.get_user_log_verbosity()function due to the apparent potential for causing cyclic imports, as observed in real world usage.
0.7.1 (2021-08-25)
Fixed readthedocs configuration
Fixed README badges
0.7 (2021-08-24)
A number of features are renamed. In all cases, the old names remain available for backwards compatibility, but are deprecated.
Dropped support for Python 2 (minimum supported version is 3.6)
Dropped support for Django versions below 2.2
Renamed
CommonInfoMixinandCommonInfoQuerySettoAuditableandAuditableQuerySet, respectivelyRenamed
ArchivableMixintoArchivableRenamed
VersioningMixinandVersioningQuerySettoVersionableandVersionableQuerySet, respectivelyRenamed
CommonInfoFormtoAuditableFormRenamed
DJEM_COMMON_INFO_USER_REQUIRED_ON_SAVEsetting toDJEM_AUDITABLE_USER_REQUIRED_ON_SAVEAdded
UNDEFINEDconstantAdded
Loggablefor instance-based loggingAdded
OLPMixinfor custom user models, to support advanced OLP-related functionalityAdded
MixableQuerySetmixin for customQuerySetclassesAdded
DJEM_UNIVERSAL_OLPsettingAdded
DJEM_PERM_LOG_VERBOSITYsettingAdded
AuditableQuerySetcreate(),get_or_create(), andupdate_or_create()methodsAdded
ArchivableQuerySetarchived()andunarchived()methodsAdded
ajax_login_required()decoratorAdded
UserSavablemixin for formsRemoved default implementations of
_user_can_change_*()and_user_can_delete_*()onAuditable- this was far too specific a use-case to be the defaultRemoved
ArchivableQuerySet’sarchive()andunarchive()methodsRemoved
Archivable’sliveandarchivedManagersRemoved explicit
Managerclasses for mixinsMoved custom
QuerySetclasses for mixins intodjem.models.models
0.6.4 (2018-12-06)
Fixed setup.py to include
include_package_data=True
0.6.3 (2018-12-06)
Updated MANIFEST.in to include the templates directory
0.6.2 (2018-03-25)
Fixed #2: Object level access now defaults open when no model method exists to define it explicitly
0.6.1 (2018-03-02)
Updated PyPi details
0.6 (2018-03-02)
Renamed project
Added
csrfify_ajaxtemplate tagAdded
paginatetemplate tagAdded
form_fieldandcheckboxtemplate tagsAdded
MessageMiddlewareAdded
MessagingRequestFactoryAdded
TemplateRendererMixinUpdated
AjaxResponseto allow message strings marked as safe to skip being escapedMoved
AjaxResponsefromdjem.misc.AjaxResponsetodjem.ajax.AjaxResponse. Also removed shortcut importdjem.AjaxResponse.Moved
get_page()fromdjem.misc.get_pagetodjem.pagination.get_page. Also removed shortcut importdjem.get_page.
0.5 (unreleased)
Never released: project renaming took precedence. These features were released under 0.6, and the new project name, instead.
Added replacements for
permission_requireddecorator andPermissionRequiredMixinthat support object-level permissionsAdded
get_page()helper functionAdded
Tablehelper classAdded
MandMonhelper classes for simple code performance debuggingAdded
mon()decorator as a shortcut for monitoring a functionAdded inspection/prettyprint utilities for debugging
Added extensible
Developerclass as a home for shortcuts to common user-based operations useful to developers
0.4.3 (2016-09-17)
Added
authenticate()method toObjectPermissionsBackend, fixing a bug where it broke authentication if a user’s credentials were not authenticated by earlier backends
0.4.2 (2016-06-21)
Fixed missing commits under 0.4.1 tag
0.4.1 (2016-06-21)
Fixed documentation build issues on
readthedocs.org
0.4 (2016-06-21)
Added
AjaxResponseAdded
GOODIES_COMMON_INFO_REQUIRE_USER_ON_SAVEsettingAdded object-level permission support (
ObjectPermissionsBackend,ifpermandifnotpermtemplate tags)Updated
CommonInfoMixinto provide default object-level permissions for subclasses, based on ownership
0.3 (2016-03-19)
Added
TimeZoneField/TimeZoneHelperCleaned code as per
isortandflake8
Pre-0.3
CommonInfoMixin, with associated manager and querysetArchivableMixin, with associated manager and querysetVersioningMixin, with associated manager and querysetStaticAbstractparent model, with associated manager and querysetCommonInfoFormfor ModelForms based onCommonInfoMixinmodels