As I understand, some parts of Django-Rest-Framework <http://www.django-rest-framework.org/> are being considered for integration into Django (please correct me if I'm mistaken). I'm not sure what specifically core plans to bring in, but in my opinion the feature that core Django needs the most from DRF has no direct connection to APIs or JSON: it's the extremely well-designed class-based permissions system <http://www.django-rest-framework.org/api-guide/permissions/>.
For those who aren't familiar, the bottom line is that it's a system that allows the developer to run their own arbitrary code (in a clean, DRY, and readable way) to determine whether or not to return a 403 given a particular request and view. Any class-based view (with the provided mixin) can be assigned a tuple of permissions to check. In other words, it is the answer to our prayers. Example: MyApp/permissions.py: from rest_framework import permissions class IsFromTexas(permissions.BasePermission): '''Only allow users from Texas. ''' def has_permission(self, request, view): return request.user.state == 'TEXAS' MyApp/views.py: from MyApp.permissions import IsFromTexas # Other imports class MapOfTexasView(ClassPermissionsMixin, TemplateView): # ClassPermissionsMixin does not actually exist yet '''Return a map of Texas. Only allow users from Texas. ''' permission_classes = (IsFromTexas,) template_name = 'map_of_texas.html' Checking against an object is trivial, and DRF's implementation makes it even easier and cleaner by providing a has_object_permission() method that gets passed the result of the view's get_object() if it has one (and makes it so the developer doesn't have to worry about accidentally calling get_object() multiple times). I'm considering applying for Summer of Code with this (adding class-based permissions to Django) as the subject of my proposal. I would also add some features that DRF is missing, such as permission-checking on QuerySets, adding class-based permission checking to default class-based views, and dividing permissions into read and write. A few questions for anyone who can answer them: 1. Is there any chance of getting this accepted as a feature? (through Summer of Code or otherwise) 2. Is this appropriate in scope and significance for a Summer of Code project? I'm guessing it would be relatively little actual code, but could potentially be a fundamental part of a huge number of projects made with Django. 3. I suspect that if this were to be added to Django core, we'd want to use a name other than 'permissions' given that Django already has its own permissions system that uses that name. How does 'authorizations' sound? Connor Boyle Macalester College -- You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscr...@googlegroups.com. To post to this group, send email to django-developers@googlegroups.com. Visit this group at https://groups.google.com/group/django-developers. To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/d89393a0-e8f1-4398-9643-de4cc6d958da%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.