mirror of
				https://gitlab.com/brutaldon/brutaldon
				synced 2025-06-05 21:49:32 +02:00 
			
		
		
		
	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:
		
							
								
								
									
										1
									
								
								brutaldon/templates/main/home_timeline.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								brutaldon/templates/main/home_timeline.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
{{% extends "main/timeline.html" %}
 | 
			
		||||
							
								
								
									
										12
									
								
								brutaldon/templates/main/local_timeline.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								brutaldon/templates/main/local_timeline.html
									
									
									
									
									
										Normal file
									
								
							@@ -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 %}
 | 
			
		||||
							
								
								
									
										12
									
								
								brutaldon/templates/main/public_timeline.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								brutaldon/templates/main/public_timeline.html
									
									
									
									
									
										Normal file
									
								
							@@ -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:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user