diff --git a/pagure/templates/master.html b/pagure/templates/master.html
index 9cc7754..b9a7d24 100644
--- a/pagure/templates/master.html
+++ b/pagure/templates/master.html
@@ -23,6 +23,18 @@
diff --git a/pagure/ui/app.py b/pagure/ui/app.py
index 60e8439..33f5477 100644
--- a/pagure/ui/app.py
+++ b/pagure/ui/app.py
@@ -125,9 +125,29 @@ def index():
)
+@APP.route('/search/')
+@APP.route('/search')
+def search():
+ """ Search this pagure instance for projects or users.
+ """
+ stype = flask.request.args.get('type', 'projects')
+ term = flask.request.args.get('term')
+ page = flask.request.args.get('page', 1)
+ try:
+ page = int(page)
+ except ValueError:
+ page = 1
+
+ if stype == 'projects':
+ return flask.redirect(flask.url_for('index'))
+ else:
+ return flask.redirect(flask.url_for('view_users', username=term))
+
+
@APP.route('/users/')
@APP.route('/users')
-def view_users():
+@APP.route('/users/')
+def view_users(username=None):
""" Present the list of users.
"""
page = flask.request.args.get('page', 1)
@@ -136,7 +156,12 @@ def view_users():
except ValueError:
page = 1
- users = pagure.lib.search_user(SESSION)
+ users = pagure.lib.search_user(SESSION, pattern=username)
+
+ if len(users) == 1:
+ flask.flash('Only one result found, redirecting you to it')
+ return flask.redirect(
+ flask.url_for('view_user', username=users[0].username))
limit = APP.config['ITEM_PER_PAGE']
start = limit * (page - 1)