From 7701120f30c89e1d00c662f7a43751aff517345b Mon Sep 17 00:00:00 2001 From: Ryan Lerch Date: Feb 23 2016 09:23:13 +0000 Subject: 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, )