Reputation: 7310
Using Tastypie and Django User Streams, I am trying to build an activity feed. I have successfully built the functionality for favoriting below:
class LikeResource(ModelResource):
user = fields.ForeignKey(BasicUserResource, 'user', full=True)
class Meta:
queryset = Journalist.objects.all()
allowed_methods = ['get', 'put']
resource_name = 'like'
fields = ['user']
default_format = "application/json"
authorization = Authorization()
authentication = BasicAuthentication()
serializer = Serializer(formats=['json'])
always_return_data = True
include_resource_uri = False
def hydrate(self, bundle):
shot = LifeShot.objects.all().get(id = bundle.data['post id'])
if(bundle.obj.likes.filter(id = bundle.data['post id']).exists()):
bundle.obj.likes.remove(shot)
else:
bundle.obj.likes.add(shot)
user_doing_the_liking=User.objects.get(username=bundle.request.user.username)
user_getting_liked = shot.journalist.user
user_streams.add_stream_item(user_getting_liked, '%s liked your shot %s %s' % (bundle.request.user.username, shot.url, datetime.datetime.utcnow()))
return bundle
def dehydrate(self, bundle):
shot = LifeShot.objects.all().get(id = bundle.data ['post id'])
user_getting_liked = shot.foodie.user
likeitems = user_streams.get_stream_items(user_getting_liked)
list = ''
for likeitem in likeitems:
list = list + likeitem.content +', '
bundle.data['likestream'] = list
return bundle
Now for commenting on a photo, this is what I have so far:
class CommentEntryResource(ModelResource):
user = fields.ForeignKey(BasicJournalistResource, 'user', full =True)
picture = fields.ForeignKey(BasicLifeShotResource, 'picture', full=True)
class Meta:
queryset = Comment.objects.all()
allowed_methods = ['post', 'get','put']
resource_name = 'comment'
fields = ['comment', 'picture', 'user']
authorization = Authorization()
authentication = BasicAuthentication()
serializer = Serializer(formats=['json'])
include_resource_uri = False
always_return_data = True
filtering = {
'picture': ALL_WITH_RELATIONS,
}
def hydrate_user(self, bundle):
bundle.data['user'] = Journalist.objects.get(user = bundle.request.user)
return bundle
The only difference here now is that Tastypie has created a new comment object. How can I retrieve that comment object and implement it with Django User streams so that in my feed, it says "User1 commented on your shot: Looks Nice!" ???
Django User Streams: https://github.com/dabapps/django-user-streams Tastypie: http://django-tastypie.readthedocs.org/en/latest/
Upvotes: 0
Views: 598
Reputation: 11832
Try this as:
bundle.data['user'] = Journalist.objects.get(user = bundle.obj.user)
bundle.obj
will give you the Comment
model object. You can the get the user by bundle.obj.user
.
Upvotes: 1