- unpin max django version
- convert to uv
- python3.11 support
- python3.10 support
- django4 support
- django4.2 support
- django3.2 support
- python3.6 support
- python3.7 support
- django2.2 support
- django3.0 support
- django3.1 support
- bug where group permissions overwrote direct permissions
- python3.9 support
- django3.1 support
- added rest.ModelViewSetPermission django-rest-framework permission class
- added grainy_namespace property to decorated models
- added util.check_permissions helper function
- added util.get_permissions helper function
- added GRAINY_ANONYMOUS_GROUP setting
- fix django-admin user and group admin view unregister
- fix instance namespacing on decorated models that have a grainy parent defined
- grainy handler classes moved to handlers.py to prevent circular depdendency issue
- remote grainy permissions
- field level permission checks when POST/PUT/PATCHing to REST api (#14)
- python3.8 support
- fix #36: Grainy decorators should allow setting of Permissions class to use for permission checks
- python2.7 support
- python3.4 support
- python3.5 support
- django1.11 support
- tests for django 2.1
- fix #33: easy namespace inheritance through related models
- fix #31: add delete_permission function to grainy manager
- fix #35: Custom permission holder implementation
- admin inlines: sort by namespace alphabetically (#24)
- move from facsimile to Ctl (#32)
- when applying perms to a grainy view response, make sure to return the proper container when it is empty
- Fixed issue with namespace formatting for grainy views that was introduced in 1.6.0 where trying to format using url parameters would raise a KeyError
- grainy view decorators can now access the request object when formatting namespaces
- you can now use extra keyword arguments passed to
Grainy.namespace
andhelpers.namespace
to further format the namespace string
- grainy view decorators: renamed
explicit_object
toexplicit_instance
util.Permissions.get
now accepts theexplicit
keyword argumentdecorators.grainy_view
now accepts theexplicit_object
keyword argument
util.Permissions.get
now works correctly
decorators.grainy_view
request GET parameters now available for namespace formattingdecorators.grainy_view
get_object() now available asinstance
for base namespace formatting if it existsdecorators.grainy_decorator
decorator namespaces can now be passed as lists in which case the resulting namespace is a joint namespace of all the elements
- implemented
decorators.grainy_view_response
- implemented
decorators.grainy_json_view_response
- implemented
decorators.grainy_rest_viewset_response
decorators.grainy_view
now simply decorates all response handlersdecorators.grainy_json_view
now simply decorates all response handlersdecorators.grainy_rest_viewset
now simply decorates all response handlers
- grainy_model: allow specifying of custom instance namespace formatting
- grainy_view: impl explicit namespace handling during request gating
- Template files not being installed
- Permissions.instances(): add
explicit
keyword argument - Permissions.instances(): add
ignore_grant_all
keyword argument - Permissions.check(): add
ignore_grant_all
keyword argument
- Passing a
tuple
orlist
tohelpers.namespace
will now return a joint namespace of all contained elements - Implemented
util.Permissions.instances
method to retrieve all instances of a model according to permissions decorators.grainy_view
decorator can now use url parameters to format it s namespace
- grainy authentication backend
- django admin integration
- str_flags function
- PermissioManager.add_permission
- Default permissions for AnonymousUser
- decorators.grainy_view
- decorators.grainy_rest_viewset
- helpers.dict_get_namespace
- helpers.request_method_to_flag
- helpers.request_to_flag
- util.Permissions.grant_all property
- conf.REQUEST_METHOD_TO_FLAG
- util.Permissions now accepts AnonynmousUser as object
- renamed
convert_flags
toint_flags
- moved
str_flags
andint_flags
functions from util.py to helpers.py - moved
namespace
function from util.py to models.py - removed
clear
argument fromPermissionManager.add_permission_set