def get(self, request, tab): """ user's homepage with activity feed """ try: page = int(request.GET.get("page", 1)) except ValueError: page = 1 if not tab in STREAMS: tab = "home" activities = activitystreams.streams[tab].get_activity_stream( request.user) paginated = Paginator(activities, PAGE_LENGTH) suggested_users = get_suggested_users(request.user) data = { **feed_page_data(request.user), **{ "user": request.user, "activities": paginated.get_page(page), "suggested_users": suggested_users, "tab": tab, "goal_form": forms.GoalForm(), "path": "/%s" % tab, }, } return TemplateResponse(request, "feed/feed.html", data)
def post(self, request, username, year): """update or create an annual goal""" user = get_user_from_username(request.user, username) if user != request.user: return HttpResponseNotFound() year = int(year) goal = models.AnnualGoal.objects.filter(year=year, user=request.user).first() form = forms.GoalForm(request.POST, instance=goal) if not form.is_valid(): data = { "goal_form": form, "goal": goal, "year": year, } return TemplateResponse(request, "goal.html", data) goal = form.save() if request.POST.get("post-status"): # create status, if appropraite template = get_template("snippets/generated_status/goal.html") create_generated_note( request.user, template.render({"goal": goal, "user": request.user}).strip(), privacy=goal.privacy, ) return redirect(request.headers.get("Referer", "/"))
def get(self, request, tab): """ user's homepage with activity feed """ try: page = int(request.GET.get("page", 1)) except ValueError: page = 1 if tab == "home": activities = get_activity_feed(request.user, following_only=True) tab_title = _("Home") elif tab == "local": activities = get_activity_feed(request.user, privacy=["public", "followers"], local_only=True) tab_title = _("Local") else: activities = get_activity_feed(request.user, privacy=["public", "followers"]) tab_title = _("Federated") paginated = Paginator(activities, PAGE_LENGTH) data = { **feed_page_data(request.user), **{ "user": request.user, "activities": paginated.page(page), "tab": tab, "tab_title": tab_title, "goal_form": forms.GoalForm(), "path": "/%s" % tab, }, } return TemplateResponse(request, "feed/feed.html", data)
def get(self, request, tab): """ user's homepage with activity feed """ try: page = int(request.GET.get("page", 1)) except ValueError: page = 1 if not tab in STREAMS: tab = "home" activities = activitystreams.streams[tab].get_activity_stream( request.user) paginated = Paginator(activities, PAGE_LENGTH) suggested_users = (get_suggested_users( request.user, ~Q(id=request.user.id), ~Q(followers=request.user), bookwyrm_user=True, ).order_by("-mutuals", "-last_active_date").all()[:5]) data = { **feed_page_data(request.user), **{ "user": request.user, "activities": paginated.page(page), "suggested_users": suggested_users, "tab": tab, "goal_form": forms.GoalForm(), "path": "/%s" % tab, }, } return TemplateResponse(request, "feed/feed.html", data)
def get(self, request, tab, filters_applied=False): """user's homepage with activity feed""" tab = [s for s in STREAMS if s["key"] == tab] tab = tab[0] if tab else STREAMS[0] activities = activitystreams.streams[tab["key"]].get_activity_stream( request.user ) filtered_activities = filter_stream_by_status_type( activities, allowed_types=request.user.feed_status_types, ) paginated = Paginator(filtered_activities, PAGE_LENGTH) suggestions = suggested_users.get_suggestions(request.user) data = { **feed_page_data(request.user), **{ "user": request.user, "activities": paginated.get_page(request.GET.get("page")), "suggested_users": suggestions, "tab": tab, "streams": STREAMS, "goal_form": forms.GoalForm(), "feed_status_types_options": FeedFilterChoices, "filters_applied": filters_applied, "path": f"/{tab['key']}", "annual_summary_year": get_annual_summary_year(), }, } return TemplateResponse(request, "feed/feed.html", data)
def get(self, request, tab): ''' user's homepage with activity feed ''' try: page = int(request.GET.get('page', 1)) except ValueError: page = 1 if tab == 'home': activities = get_activity_feed(request.user, ['public', 'unlisted', 'followers'], following_only=True) elif tab == 'local': activities = get_activity_feed(request.user, ['public', 'followers'], local_only=True) else: activities = get_activity_feed(request.user, ['public', 'followers']) paginated = Paginator(activities, PAGE_LENGTH) data = { **feed_page_data(request.user), **{ 'title': 'Updates Feed', 'user': request.user, 'activities': paginated.page(page), 'tab': tab, 'goal_form': forms.GoalForm(), 'path': '/%s' % tab, } } return TemplateResponse(request, 'feed/feed.html', data)
def post(self, request, username, year): ''' update or create an annual goal ''' user = get_user_from_username(request.user, username) if user != request.user: return HttpResponseNotFound() year = int(year) goal = models.AnnualGoal.objects.filter(year=year, user=request.user).first() form = forms.GoalForm(request.POST, instance=goal) if not form.is_valid(): data = { 'title': '%s\'s %d Reading' % (request.user.display_name, year), 'goal_form': form, 'goal': goal, 'year': year, } return TemplateResponse(request, 'goal.html', data) goal = form.save() if request.POST.get('post-status'): # create status, if appropraite template = get_template('snippets/generated_status/goal.html') create_generated_note(request.user, template.render({ 'goal': goal, 'user': request.user }).strip(), privacy=goal.privacy) return redirect(request.headers.get('Referer', '/'))
def feed_page_data(user): """info we need for every feed page""" if not user.is_authenticated: return {} goal = models.AnnualGoal.objects.filter(user=user, year=timezone.now().year).first() return { "goal": goal, "goal_form": forms.GoalForm(), }
def feed_page_data(user): ''' info we need for every feed page ''' if not user.is_authenticated: return {} goal = models.AnnualGoal.objects.filter(user=user, year=timezone.now().year).first() return { 'suggested_books': get_suggested_books(user), 'goal': goal, 'goal_form': forms.GoalForm(), }
def get(self, request, username, year): """reading goal page""" user = get_user_from_username(request.user, username) year = int(year) goal = models.AnnualGoal.objects.filter(year=year, user=user).first() if not goal and user != request.user: return HttpResponseNotFound() if goal and not goal.visible_to_user(request.user): return HttpResponseNotFound() data = { "goal_form": forms.GoalForm(instance=goal), "goal": goal, "user": user, "year": year, "is_self": request.user == user, } return TemplateResponse(request, "goal.html", data)
def get(self, request, username, year): ''' reading goal page ''' user = get_user_from_username(request.user, username) year = int(year) goal = models.AnnualGoal.objects.filter(year=year, user=user).first() if not goal and user != request.user: return HttpResponseNotFound() if goal and not object_visible_to_user(request.user, goal): return HttpResponseNotFound() data = { 'title': '%s\'s %d Reading' % (user.display_name, year), 'goal_form': forms.GoalForm(instance=goal), 'goal': goal, 'user': user, 'year': year, 'is_self': request.user == user, } return TemplateResponse(request, 'goal.html', data)
def get(self, request, tab): """user's homepage with activity feed""" tab = [s for s in STREAMS if s["key"] == tab] tab = tab[0] if tab else STREAMS[0] activities = activitystreams.streams[tab["key"]].get_activity_stream( request.user) paginated = Paginator(activities, PAGE_LENGTH) suggestions = suggested_users.get_suggestions(request.user) data = { **feed_page_data(request.user), **{ "user": request.user, "activities": paginated.get_page(request.GET.get("page")), "suggested_users": suggestions, "tab": tab, "streams": STREAMS, "goal_form": forms.GoalForm(), "path": "/%s" % tab["key"], }, } return TemplateResponse(request, "feed/feed.html", data)