def user_notification_timeline(request, user_id): # todo high don't allow others to see the notifications of another user by changing the url (same with tips) # TODO high more button to load the next activities # I use the low level client (stream_client) instead of the high level feedmanager of the stream django app # without specific reason so I can use the feedmanager instead get_activities_num = 80 per_page = 12 user_notification_feed = stream_client.feed(FeedNames.notification, user_id) # it seems that first the activities are collected and then they are marked as seen. This way I can # check if an activity is currently seen or not activities = user_notification_feed.get(limit=get_activities_num, mark_seen=True, mark_read=True)['results'] # next_activities = user_notification_feed.get(limit=get_activities_num, id_lt=activities[-1]['id'])['results'] enricher = Enrich( fields=['actor', 'object', 'bet_event', 'total_bet', 'event']) enriched_activities = enricher.enrich_aggregated_activities(activities) paginator = Paginator(enriched_activities, per_page) enriched_activities = zakanda.utils.paginate(request, paginator, enriched_activities) context = { 'enriched_activities': enriched_activities, 'not_started': games.models.Event.not_started } return TemplateResponse(request, 'feeds/timeline.html', context)
def notifications(request): user = request.user notification_feed = feed_manager.get_notification_feed(user.id) notification_stats = notification_feed.get(limit=10, mark_seen=True) enricher = Enrich() notifications = enricher.enrich_aggregated_activities( notification_stats['results']) return render(request, 'activity/aggregated/report.html', {'notifications': notifications})
def get(self, request): if request.GET.get('partial') == 'activities': try: enricher = Enrich(('actor', 'object', 'target')) feed = feed_manager.get_global_challenge_feed() activities = feed.get(limit=10)['results'] enriched = enricher.enrich_aggregated_activities(activities) return render(request, 'base/_activities.html', {'activities': enriched}) except Exception as e: return HttpResponse() return super().get(request)
def get(self, request): user = self.request.user if request.GET.get('partial') == 'notifications': try: enricher = Enrich(('actor', 'object', 'target',)) feed = feed_manager.get_notification_feed(user.id) activities = feed.get(limit=10)['results'] enriched = enricher.enrich_aggregated_activities(activities) except Exception: enriched = [] finally: return render(request, 'account/_notifications_card_content.html', {'notifications': enriched}) return super().get(request)
def user_aggregated_timeline(request, user_pk): get_activities_num = 80 per_page = 15 user_aggr_timeline = stream_client.feed(FeedNames.timeline_aggregated, user_pk) activities = user_aggr_timeline.get(limit=get_activities_num)['results'] # logger.debug("activities: %s", activities['activities']) enricher = Enrich( fields=['actor', 'object', 'bet_event', 'total_bet', 'event']) enriched_activities = enricher.enrich_aggregated_activities(activities) paginator = Paginator(enriched_activities, per_page) enriched_activities = zakanda.utils.paginate(request, paginator, enriched_activities) feeds.utils.print_enriched_aggr_activities(enriched_activities) context = { 'enriched_activities': enriched_activities, 'not_started': games.models.Event.not_started } return TemplateResponse(request, 'feeds/timeline.html', context)
def get(self, request): user = self.request.user if request.GET.get("partial") == "notifications": try: enricher = Enrich( ( "actor", "object", "target", ) ) feed = feed_manager.get_notification_feed(user.id) activities = feed.get(limit=10)["results"] enriched = enricher.enrich_aggregated_activities(activities) except Exception: enriched = [] finally: return render( request, "account/_notifications_card_content.html", {"notifications": enriched}, ) return super().get(request)