Created
December 12, 2011 20:28
-
-
Save dstufft/1468945 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class UserOwned(object): | |
user_field = "user" | |
def get_user_field(self): | |
return self.user_field | |
def get_user(self): | |
return self.request.user if self.request.user.is_authenticated() else None | |
def filter_by_user(self, queryset): | |
# Filter the Query down to only objects owned by this user | |
queryset = queryset.filter(**{self.get_user_field(): self.get_user()}) | |
return queryset | |
def get_queryset(self): | |
""" | |
Get the list of items for this view. This must be an queryset. | |
""" | |
if self.queryset is not None: | |
queryset = self.queryset._clone() | |
elif self.model is not None: | |
queryset = self.model._default_manager.all() | |
else: | |
raise ImproperlyConfigured(u"'%s' must define 'queryset' or 'model'" | |
% self.__class__.__name__) | |
queryset = self.filter_by_user(queryset) | |
return queryset | |
def form_valid(self, form): | |
self.object = form.save(commit=False) | |
setattr(self.object, self.get_user_field(), self.get_user()) | |
self.object.save() | |
return HttpResponseRedirect(self.get_success_url()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment