diff --git a/pagure/templates/index_auth.html b/pagure/templates/index_auth.html
index a967e63..46c75da 100644
--- a/pagure/templates/index_auth.html
+++ b/pagure/templates/index_auth.html
@@ -3,6 +3,7 @@
{% block title %}Home{% endblock %}
{% set tag = "projects" %}
{% from "_browseheader.html" import browse_header %}
+{% from "_render_repo.html" import pagination_link %}
{% block header %}
@@ -23,7 +24,7 @@
{% endfor %}
+ {% if repos_length and repos_length > 1 %}
+ {{ pagination_link('repopage', repopage, total_repo_page, forkpage=forkpage) }}
+ {% endif %}
{% else %}
@@ -112,7 +116,7 @@
{% if forks %}
@@ -179,6 +183,9 @@
{% endfor %}
+ {% if repos_length and repos_length > 1 %}
+ {{ pagination_link('forkpage', forkpage, total_fork_page, repopage=repopage) }}
+ {% endif %}
{% else %}
diff --git a/pagure/ui/app.py b/pagure/ui/app.py
index cabee76..90195ed 100644
--- a/pagure/ui/app.py
+++ b/pagure/ui/app.py
@@ -126,31 +126,63 @@ def index_auth():
except ValueError:
repopage = 1
- forkpage = flask.request.args.get('forkpage', 1)
- try:
- forkpage = int(forkpage)
- if forkpage < 1:
- forkpage = 1
- except ValueError:
- forkpage = 1
+ limit = pagure_config['ITEM_PER_PAGE']
+ # PROJECTS
+ start = limit * (repopage - 1)
repos = pagure.lib.search_projects(
flask.g.session,
username=flask.g.fas_user.username,
exclude_groups=pagure_config.get('EXCLUDE_GROUP_INDEX'),
- fork=False, private=flask.g.fas_user.username)
+ fork=False,
+ private=flask.g.fas_user.username,
+ start=start,
+ limit=limit,
+ )
if repos and acl:
repos = _filter_acls(repos, acl, user)
- repos_length = len(repos)
+ repos_length = pagure.lib.search_projects(
+ flask.g.session,
+ username=flask.g.fas_user.username,
+ exclude_groups=pagure_config.get('EXCLUDE_GROUP_INDEX'),
+ fork=False,
+ private=flask.g.fas_user.username,
+ count=True,
+ )
+ total_repo_page = int(
+ ceil(repos_length / float(limit)) if repos_length > 0 else 1)
+
+ # FORKS
+ forkpage = flask.request.args.get('forkpage', 1)
+ try:
+ forkpage = int(forkpage)
+ if forkpage < 1:
+ forkpage = 1
+ except ValueError:
+ forkpage = 1
+ start = limit * (forkpage - 1)
forks = pagure.lib.search_projects(
flask.g.session,
username=flask.g.fas_user.username,
fork=True,
- private=flask.g.fas_user.username)
+ private=flask.g.fas_user.username,
+ start=start,
+ limit=limit,
+ )
- forks_length = len(forks)
+ forks_length = pagure.lib.search_projects(
+ flask.g.session,
+ username=flask.g.fas_user.username,
+ fork=True,
+ private=flask.g.fas_user.username,
+ start=start,
+ limit=limit,
+ count=True,
+ )
+ total_fork_page = int(
+ ceil(forks_length / float(limit)) if forks_length > 0 else 1)
watch_list = pagure.lib.user_watch_list(
flask.g.session,
@@ -166,9 +198,11 @@ def index_auth():
repos=repos,
watch_list=watch_list,
repopage=repopage,
- forkpage=forkpage,
repos_length=repos_length,
+ total_repo_page=total_repo_page,
+ forkpage=forkpage,
forks_length=forks_length,
+ total_fork_page=total_fork_page,
)
diff --git a/tests/test_pagure_flask_ui_app_index.py b/tests/test_pagure_flask_ui_app_index.py
index 0fc69cd..03734e1 100644
--- a/tests/test_pagure_flask_ui_app_index.py
+++ b/tests/test_pagure_flask_ui_app_index.py
@@ -374,8 +374,9 @@ class PagureFlaskAppIndextests(tests.Modeltests):
output = self.app.get('/?acl=admin')
self.assertEqual(output.status_code, 200)
output_text = output.get_data(as_text=True)
+ # The total number no longer changes
self.assertIn(
- 'Projects 1',
+ 'Projects 2',
output_text)
self.assertIn(
'Forks 0',
@@ -433,7 +434,7 @@ class PagureFlaskAppIndextests(tests.Modeltests):
self.assertEqual(output.status_code, 200)
output_text = output.get_data(as_text=True)
self.assertIn(
- 'Projects 1',
+ 'Projects 2',
output_text)
self.assertIn(
'Forks 0',