From 4db914689dbe9f6634e3d7d6d08f6d282a627e72 Mon Sep 17 00:00:00 2001 From: Ryan Lerch Date: Feb 23 2016 09:23:13 +0000 Subject: [PATCH 1/10] made browse projects not paginate for now --- diff --git a/pagure/ui/app.py b/pagure/ui/app.py index 0e14c36..da42c00 100644 --- a/pagure/ui/app.py +++ b/pagure/ui/app.py @@ -46,9 +46,7 @@ def index(): repos = pagure.lib.search_projects( SESSION, - fork=False, - start=start, - limit=limit) + fork=False) num_repos = pagure.lib.search_projects( SESSION, fork=False, @@ -64,8 +62,6 @@ def index(): select="projects", repos=repos, repos_length=num_repos, - total_page=total_page, - page=page, ) From 7701120f30c89e1d00c662f7a43751aff517345b Mon Sep 17 00:00:00 2001 From: Ryan Lerch Date: Feb 23 2016 09:23:13 +0000 Subject: [PATCH 2/10] added the latest endpoint to sort by project creation date also brought bat paginiation --- diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index 6e1ad39..43a3123 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -1353,7 +1353,7 @@ def fork_project(session, user, repo, gitfolder, def search_projects( session, username=None, fork=None, tags=None, pattern=None, - start=None, limit=None, count=False): + start=None, limit=None, count=False, sort=None): '''List existing projects ''' projects = session.query( @@ -1436,14 +1436,22 @@ def search_projects( projects = projects.filter( model.Project.name == pattern ) - - query = session.query( - model.Project - ).filter( - model.Project.id.in_(projects.subquery()) - ).order_by( - asc(func.lower(model.Project.name)) - ) + if sort == None or sort == 'projectname': + query = session.query( + model.Project + ).filter( + model.Project.id.in_(projects.subquery()) + ).order_by( + asc(func.lower(model.Project.name)) + ) + elif sort == 'date_created': + query = session.query( + model.Project + ).filter( + model.Project.id.in_(projects.subquery()) + ).order_by( + model.Project.date_created.desc() + ) if start is not None: query = query.offset(start) diff --git a/pagure/ui/app.py b/pagure/ui/app.py index da42c00..d794bb5 100644 --- a/pagure/ui/app.py +++ b/pagure/ui/app.py @@ -29,8 +29,9 @@ from pagure import (APP, SESSION, login_required, @APP.route('/browse/projects', endpoint='browse_projects') @APP.route('/browse/projects/', endpoint='browse_projects') +@APP.route('/browse/projects/') @APP.route('/') -def index(): +def index(sorting=None): """ Front page of the application. """ page = flask.request.args.get('page', 1) @@ -44,9 +45,20 @@ def index(): limit = APP.config['ITEM_PER_PAGE'] start = limit * (page - 1) - repos = pagure.lib.search_projects( - SESSION, - fork=False) + if sorting == 'latest': + repos = pagure.lib.search_projects( + SESSION, + fork=False, + start=start, + limit=limit, + sort='date_created') + else: + repos = pagure.lib.search_projects( + SESSION, + fork=False, + start=start, + limit=limit) + num_repos = pagure.lib.search_projects( SESSION, fork=False, @@ -62,6 +74,8 @@ def index(): select="projects", repos=repos, repos_length=num_repos, + total_page=total_page, + page=page, ) From 00bead6b74c853d031db38a0c4df93cdf68757c7 Mon Sep 17 00:00:00 2001 From: Ryan Lerch Date: Feb 23 2016 09:23:13 +0000 Subject: [PATCH 3/10] added sorting button --- diff --git a/pagure/templates/_render_repo.html b/pagure/templates/_render_repo.html index a288c2d..fe5e4c0 100644 --- a/pagure/templates/_render_repo.html +++ b/pagure/templates/_render_repo.html @@ -54,10 +54,10 @@ {% macro render_repos( list, total, pagetitle, page, title, count, id, - username=None, hide=True) %} + username=None, hide=True, sorting=None) %}
-

{{ +

{{ title }} {{ count }} {%- if username -%} @@ -68,9 +68,37 @@ {%- endif -%}

- {% if total and total > 1 %} - {{ pagination_link(pagetitle, page, total) }} - {% endif %} +
+
+ {% if total and total > 1 %} + {{ pagination_link(pagetitle, page, total) }} + {% endif %} +
+ +
{{ render_row(list) }}
diff --git a/pagure/templates/index.html b/pagure/templates/index.html index 4dfda3c..efea13c 100644 --- a/pagure/templates/index.html +++ b/pagure/templates/index.html @@ -21,7 +21,7 @@
{{ render_repos( repos, total_page, 'page', page, - 'All Projects', repos_length, 'repos', username) }} + 'All Projects', repos_length, 'repos', username, sorting=sorting) }}
{% endblock %} diff --git a/pagure/ui/app.py b/pagure/ui/app.py index d794bb5..d23ae7d 100644 --- a/pagure/ui/app.py +++ b/pagure/ui/app.py @@ -53,6 +53,7 @@ def index(sorting=None): limit=limit, sort='date_created') else: + sorting = 'name' repos = pagure.lib.search_projects( SESSION, fork=False, @@ -63,7 +64,8 @@ def index(sorting=None): SESSION, fork=False, count=True) - + print "app.py" + print sorting total_page = int(ceil(num_repos / float(limit))) if authenticated() and flask.request.path == '/': @@ -76,6 +78,7 @@ def index(sorting=None): repos_length=num_repos, total_page=total_page, page=page, + sorting=sorting, ) From 74f8ffab6cfdc1553bf438ed14440125f22374b0 Mon Sep 17 00:00:00 2001 From: Ryan Lerch Date: Feb 23 2016 09:23:13 +0000 Subject: [PATCH 4/10] removed extra items from the dropdown --- diff --git a/pagure/templates/_render_repo.html b/pagure/templates/_render_repo.html index fe5e4c0..d2496a1 100644 --- a/pagure/templates/_render_repo.html +++ b/pagure/templates/_render_repo.html @@ -92,9 +92,6 @@ {%endif%} Date Created - Something else here - - Separated link From 0259f8f379d680103831a81d9ac00fecba08e769 Mon Sep 17 00:00:00 2001 From: Ryan Lerch Date: Feb 23 2016 09:23:13 +0000 Subject: [PATCH 5/10] added creation date to browse repo listings --- diff --git a/pagure/static/pagure.css b/pagure/static/pagure.css index 6ee6c6f..5967d1a 100644 --- a/pagure/static/pagure.css +++ b/pagure/static/pagure.css @@ -245,7 +245,7 @@ color: #bbb; bottom:0; background:#eee; width:100%; - margin-top:2px; + margin-top:10px; } /*@media (min-width:768px) { diff --git a/pagure/templates/_render_repo.html b/pagure/templates/_render_repo.html index d2496a1..7d73f22 100644 --- a/pagure/templates/_render_repo.html +++ b/pagure/templates/_render_repo.html @@ -19,7 +19,8 @@ {% if repo.description %}{{ repo.description }}{%else%}no description{% endif %} From f6ea15a5f95e6219e3e48c57a296002f2ed49798 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Feb 23 2016 09:34:14 +0000 Subject: [PATCH 6/10] Reduce code duplication a little bit --- diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index 43a3123..e1d8a0d 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -1436,22 +1436,20 @@ def search_projects( projects = projects.filter( model.Project.name == pattern ) - if sort == None or sort == 'projectname': - query = session.query( - model.Project - ).filter( - model.Project.id.in_(projects.subquery()) - ).order_by( + query = session.query( + model.Project + ).filter( + model.Project.id.in_(projects.subquery()) + ) + + if sort in [None, 'projectname']: + query = query.order_by( asc(func.lower(model.Project.name)) - ) + ) elif sort == 'date_created': - query = session.query( - model.Project - ).filter( - model.Project.id.in_(projects.subquery()) - ).order_by( + query = query.order_by( model.Project.date_created.desc() - ) + ) if start is not None: query = query.offset(start) From 1e781fb133e95a8ac3523797081bcae6b21f10fe Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Feb 23 2016 09:35:35 +0000 Subject: [PATCH 7/10] Put the sorting as an extra argument rather than in the url and remove debugging code --- diff --git a/pagure/templates/_render_repo.html b/pagure/templates/_render_repo.html index 7d73f22..b325d0d 100644 --- a/pagure/templates/_render_repo.html +++ b/pagure/templates/_render_repo.html @@ -81,13 +81,15 @@ Sort