Home, local, and public timelines have simple pagination.
Notification and tag timelines should also have pagination, but they have to be done separately.
This commit is contained in:
parent
ad334315dc
commit
dd88bcea29
|
@ -0,0 +1 @@
|
|||
{{% extends "main/timeline.html" %}
|
|
@ -0,0 +1,12 @@
|
|||
{% extends "main/timeline.html" %}
|
||||
|
||||
{% block pagination %}
|
||||
<nav class="pagination is-centered" role="navigation" aria-label="pagination">
|
||||
{% if prev %}
|
||||
<a class="pagination-next" href="{% url 'local_prev' prev.since_id %}">Newer</a>
|
||||
{% endif %}
|
||||
{% if next %}
|
||||
<a class="pagination-previous" href="{% url 'local_next' next.max_id %}">Older</a>
|
||||
{% endif %}
|
||||
</nav>
|
||||
{% endblock %}
|
|
@ -0,0 +1,12 @@
|
|||
{% extends "main/timeline.html" %}
|
||||
|
||||
{% block pagination %}
|
||||
<nav class="pagination is-centered" role="navigation" aria-label="pagination">
|
||||
{% if prev %}
|
||||
<a class="pagination-next" href="{% url 'fed_prev' prev.since_id %}">Newer</a>
|
||||
{% endif %}
|
||||
{% if next %}
|
||||
<a class="pagination-previous" href="{% url 'fed_next' next.max_id %}">Older</a>
|
||||
{% endif %}
|
||||
</nav>
|
||||
{% endblock %}
|
|
@ -2,7 +2,7 @@
|
|||
{% load humanize %}
|
||||
|
||||
{% block title %}
|
||||
Brutaldon - {{ timeline }} timelime
|
||||
Brutaldon - {{ timeline_name }} timelime
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
@ -13,7 +13,7 @@
|
|||
</div>
|
||||
<hr class="is-hidden">
|
||||
{% endif %}
|
||||
<h1 class="title">Your {{ timeline }} timeline</h1>
|
||||
<h1 class="title">Your {{ timeline_name }} timeline</h1>
|
||||
{% for toot in toots %}
|
||||
<div class="box">
|
||||
{% if toot.reblog %}
|
||||
|
@ -25,4 +25,14 @@
|
|||
<hr class="is-hidden">
|
||||
{% endfor %}
|
||||
|
||||
{% block pagination %}
|
||||
<nav class="pagination is-centered" role="navigation" aria-label="pagination">
|
||||
{% if prev %}
|
||||
<a class="pagination-next" href="{% url 'home_prev' prev.since_id %}">Newer</a>
|
||||
{% endif %}
|
||||
{% if next %}
|
||||
<a class="pagination-previous" href="{% url 'home_next' next.max_id %}">Older</a>
|
||||
{% endif %}
|
||||
</nav>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -19,6 +19,8 @@ from brutaldon import views
|
|||
|
||||
urlpatterns = [
|
||||
path('admin/', admin.site.urls),
|
||||
path('home/next/<int:next>', views.home, name='home_next'),
|
||||
path('home/prev/<int:prev>', views.home, name='home_prev'),
|
||||
path('home', views.home, name='home'),
|
||||
path('login', views.login, name="login"),
|
||||
path('oldlogin', views.old_login, name="oldlogin"),
|
||||
|
@ -27,7 +29,11 @@ urlpatterns = [
|
|||
path('error', views.error, name='error'),
|
||||
path('note', views.note, name='note'),
|
||||
path('local', views.local, name='local'),
|
||||
path('local/next/<int:next>', views.local, name='local_next'),
|
||||
path('local/prev/<int:prev>', views.local, name='local_prev'),
|
||||
path('fed', views.fed, name='fed'),
|
||||
path('fed/next/<int:next>', views.fed, name='fed_next'),
|
||||
path('fed/prev/<int:prev>', views.fed, name='fed_prev'),
|
||||
path('settings', views.settings, name='settings'),
|
||||
path('thread/<int:id>', views.thread, name='thread'),
|
||||
path('tags/<tag>', views.tag, name='tag'),
|
||||
|
|
|
@ -2,7 +2,7 @@ from django.http import HttpResponse, Http404
|
|||
from django.shortcuts import render, redirect
|
||||
from django.views.decorators.cache import never_cache
|
||||
from django.urls import reverse
|
||||
from django.core.files.uploadhandler import TemporaryFileUploadHandler
|
||||
from django.core.files.uploadhandler import TemporaryFileUploadHandler
|
||||
from brutaldon.forms import LoginForm, OAuthLoginForm, SettingsForm, PostForm
|
||||
from brutaldon.models import Client, Account
|
||||
from mastodon import Mastodon
|
||||
|
@ -51,25 +51,37 @@ def fullbrutalism_p(request):
|
|||
fullbrutalism = False
|
||||
return fullbrutalism
|
||||
|
||||
def timeline(request, timeline='home', timeline_name='Home'):
|
||||
def timeline(request, timeline='home', timeline_name='Home', max_id=None, since_id=None):
|
||||
try:
|
||||
mastodon = get_mastodon(request)
|
||||
except NotLoggedInException:
|
||||
return redirect(login)
|
||||
data = mastodon.timeline(timeline)
|
||||
data = mastodon.timeline(timeline, limit=100, max_id=max_id, since_id=since_id)
|
||||
form = PostForm()
|
||||
return render(request, 'main/timeline.html',
|
||||
{'toots': data, 'form': form, 'timeline': timeline_name,
|
||||
'fullbrutalism': fullbrutalism_p(request)})
|
||||
try:
|
||||
prev = data[0]._pagination_prev
|
||||
if len(mastodon.timeline(since_id=prev['since_id'])) == 0:
|
||||
prev = None
|
||||
except IndexError:
|
||||
prev = None
|
||||
try:
|
||||
next = data[-1]._pagination_next
|
||||
except IndexError:
|
||||
next = None
|
||||
return render(request, 'main/%s_timeline.html' % timeline,
|
||||
{'toots': data, 'form': form, 'timeline': timeline,
|
||||
'timeline_name': timeline_name,
|
||||
'fullbrutalism': fullbrutalism_p(request),
|
||||
'prev': prev, 'next': next})
|
||||
|
||||
def home(request):
|
||||
return timeline(request, 'home', 'Home')
|
||||
def home(request, next=None, prev=None):
|
||||
return timeline(request, 'home', 'Home', max_id=next, since_id=prev)
|
||||
|
||||
def local(request):
|
||||
return timeline(request, 'local', 'Local')
|
||||
def local(request, next=None, prev=None):
|
||||
return timeline(request, 'local', 'Local', max_id=next, since_id=prev)
|
||||
|
||||
def fed(request):
|
||||
return timeline(request, 'public', 'Federated')
|
||||
def fed(request, next=None, prev=None):
|
||||
return timeline(request, 'public', 'Federated', max_id=next, since_id=prev)
|
||||
|
||||
def tag(request, tag):
|
||||
try:
|
||||
|
|
Loading…
Reference in New Issue