Я переопределяю некоторые методы популярного пакета, django-activity-stream
(я думаю, что пакет в основном не имеет отношения к этому вопросу).
из app/urls.py
Я звоню TeamJSONActivityFeed
urlpatterns = [
...
url(_(r'^feeds/organization/(?P<organization_id>.+)$'), TeamJSONActivityFeed.as_view(name='organization_stream')),
...
]
TeamJSONactivityFeed затем вызывает 'pass', с которым я не слишком знаком, и наследует от двух других классов, OrganizationStreamMixin
и JSONActivityFeed
.
from rest_framework.authentication import TokenAuthentication
class TeamJSONActivityFeed(OrganizationStreamMixin, JSONActivityFeed):
"""
JSON feed of Activity for a custom stream. self.name should be the name of the custom stream as defined in the Manager
and arguments may be passed either in the url or when calling as_view(...)
"""
authentication_classes = (TokenAuthentication,)
pass
Моя проблема в том, что я не могу получить доступ / передать объект запроса в / к этим унаследованным классам. Как я мог бы go передать это? Прямо сейчас, self.request.user
и request.user
являются AnonymousUser
объектами.
class OrganizationStreamMixin(object):
name = None
def get_object(self,request):
# this is printing Anonymous User
pprint(str(self.request.user))
pprint(str(request.user))
return
def get_stream(self):
return getattr(Action.objects, self.name)
def items(self, request, *args, **kwargs):
return self.get_stream()(*args[1:], **kwargs)
class JSONActivityFeed(AbstractActivityStream, View):
"""
Feed that generates feeds compatible with the v1.0 JSON Activity Stream spec
"""
def dispatch(self, request, *args, **kwargs):
for i, v in kwargs.items():
print (" ", i, ": ", v)
return HttpResponse(self.serialize(request, *args, **kwargs),
content_type='application/json')
def serialize(self, request, *args, **kwargs):
pprint(str(self.request.user))
items = self.items(request, *args, **kwargs)
return json.dumps({
'totalItems': len(items),
'items': [self.format(action) for action in items]
})
Примечание: я немного noob django / python, но я уверен, что я правильно звоню из передний конец. Подобные запросы имеют доступ к запросу пользователя.