コード例 #1
0
ファイル: feed.py プロジェクト: joachimesque/bookwyrm
    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)
コード例 #2
0
ファイル: goal.py プロジェクト: arkhi/bookwyrm
    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", "/"))
コード例 #3
0
    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)
コード例 #4
0
ファイル: feed.py プロジェクト: jrubenoff/bookwyrm
    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)
コード例 #5
0
ファイル: feed.py プロジェクト: reesporte/bookwyrm
    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)
コード例 #6
0
ファイル: feed.py プロジェクト: tastytea/bookwyrm
    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)
コード例 #7
0
ファイル: goal.py プロジェクト: tastytea/bookwyrm
    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', '/'))
コード例 #8
0
ファイル: feed.py プロジェクト: reesporte/bookwyrm
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(),
    }
コード例 #9
0
ファイル: feed.py プロジェクト: tastytea/bookwyrm
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(),
    }
コード例 #10
0
    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)
コード例 #11
0
ファイル: goal.py プロジェクト: tastytea/bookwyrm
    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)
コード例 #12
0
ファイル: feed.py プロジェクト: arkhi/bookwyrm
    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)