2013-09-28 87 views
2

我剛剛設置了django-activity-stream,但無法顯示我的操作時,我得到了內置模板mysite.com/activity/。但是,如果我查看管理網站,我可以看到這些操作已按預期保存。我使用的Django allauth認證/授權django-activity-stream操作不顯示

MYAPP/Settings.py

ACTSTREAM_SETTINGS = { 
    'MODELS': ('auth.user', 'auth.group'), 
    'MANAGER': 'actstream.managers.ActionManager', 
    'FETCH_RELATIONS': True, 
    'USE_PREFETCH': True, 
    'USE_JSONFIELD': True, 
    'GFK_FETCH_DEPTH': 0, 
} 

MYAPP/receivers.py

from actstream import action 
    @receiver(user_logged_in) 
    def handle_user_logged_in(sender, **kwargs): 
     request = kwargs.get("request") 
     user = kwargs['user'] 
     action.send(user, verb='logged in') 

在Django的活動流views.py看來models.user_stream(request.user)正在返回空。但我不知道爲什麼。

actstream/views.py

@login_required 
    def stream(request): 
     """ 
     Index page for authenticated user's activity stream. (Eg: Your feed at 
     github.com) 
     """ 
     return render_to_response(('actstream/actor.html', 'activity/actor.html'), { 
      'ctype': ContentType.objects.get_for_model(User), 
      'actor': request.user, 'action_list': models.user_stream(request.user) 
     }, context_instance=RequestContext(request)) 

調試從models.userstream(request.user)似乎我已找到它的返回任何結果:

actstream/managers.py

@stream 
    def user(self, object, **kwargs): 
     """ 
     Stream of most recent actions by objects that the passed User object is 
     following. 
     """ 
     q = Q() 
     qs = self.filter(public=True) 
     actors_by_content_type = defaultdict(lambda: []) 
     others_by_content_type = defaultdict(lambda: []) 

     follow_gfks = get_model('actstream', 'follow').objects.filter(
      user=object).values_list('content_type_id', 
            'object_id', 'actor_only') 

     if not follow_gfks: 
      return qs.none() 

當我查看q = self.filter的值時實際上可以爲我通過的用戶看到所有正確的「已登錄」活動,但是當它達到follow_gfks = get_model時,因爲有問題的用戶沒有關注其他任何人follow_gfks最終成爲無,並且查詢集qs在最後一行被刪除。

爲什麼這個工作方式,當我只是試圖查看我自己的用戶活動飼料我不知道。

下面是從我actstream_action表中的一行是什麼樣子:

id        1 
actor_content_type_id   [fk]3 
actor_object_id     2 
verb       logged in 
description      NULL 
target_content_type_id   NULL 
target_object_id    NULL 
action_object_content_type_id NULL  
action_object_object_id   NULL 
timestamp      2013-09-28 12:58:41.499694+00 
public       TRUE 
data       NULL 

回答

1

我已經成功通過傳遞useractor_stream()而不是user_stream()獲得登錄用戶當前的行動/活動列表。但我不知道爲什麼user_stream不按預期工作

0

如果您的用戶想要顯示的動作,您需要通過with_user_activity=Trueuser_stream;如果是用於其他用戶,則需要先關注他們。