[Pkg-debile-commits] [debile-web] 01/02: Add the maintainer search + view
Sylvestre Ledru
sylvestre at moszumanska.debian.org
Wed Dec 18 14:13:29 UTC 2013
This is an automated email from the git hooks/post-receive script.
sylvestre pushed a commit to branch update-usuability
in repository debile-web.
commit 202e2ed9c1b497b2c7ec63e4ae34d3e09a056749
Author: Sylvestre Ledru <sylvestre at debian.org>
Date: Wed Dec 18 15:11:36 2013 +0100
Add the maintainer search + view
---
debileweb/blueprints/frontend.py | 41 +++++++++++++++++++++++++++++++---------
templates/macros.inc.html | 2 +-
templates/search.html | 25 ++++++++++++++++++------
3 files changed, 52 insertions(+), 16 deletions(-)
diff --git a/debileweb/blueprints/frontend.py b/debileweb/blueprints/frontend.py
index 78716eb..399cfca 100644
--- a/debileweb/blueprints/frontend.py
+++ b/debileweb/blueprints/frontend.py
@@ -23,9 +23,11 @@
from flask import Blueprint, render_template, send_file, request, redirect
from flask.ext.jsonpify import jsonify
+from sqlalchemy import func
from sqlalchemy.orm import joinedload
from sqlalchemy.sql.expression import bindparam
+
from debilemaster.orm import Source, Binary, Machine, User, Job, Group
from debilemaster.config import Config
from debilemaster.server import Session
@@ -37,6 +39,7 @@ from humanize.time import naturaldelta
from datetime import timedelta
import datetime as dt
import os.path
+import re
from forms import SearchPackageForm
from consts import PREFIXES_DEFAULT
@@ -150,15 +153,25 @@ def source_list():
- at frontend.route("/prefix/<prefix_id>/")
-def prefix_list(prefix_id, page=0):
- page = int(page)
+ at frontend.route("/maintainer/<nameItem>/", methods=['POST','GET'])
+ at frontend.route("/prefix/<nameItem>/")
+def list_packages(nameItem=0):
+ if request.method == 'POST':
+ # Switch a better url
+ return redirect('/maintainer/' + re.search(r".*<(.*)>",request.form['maintainer']).group(1) + '/')
session = Session()
- sources = session.query(Source)\
- .filter(Source.name.startswith(prefix_id))\
- .distinct(Source.name)\
- .order_by(Source.name.desc(), Source.version.desc())
+ if request.path.startswith("/maintainer/"):
+ # Maintainer
+ sources = session.query(Source)\
+ .filter(Source.maintainer.contains(nameItem))\
+ .distinct(Source.name)\
+ .order_by(Source.name.desc(), Source.version.desc())
+ else:
+ sources = session.query(Source)\
+ .filter(Source.name.startswith(nameItem))\
+ .distinct(Source.name)\
+ .order_by(Source.name.desc(), Source.version.desc())
sources_info = []
for s in sources:
@@ -169,8 +182,7 @@ def prefix_list(prefix_id, page=0):
return render_template('prefix.html', **{
"sources": sources_info,
- "prefix": prefix_id,
- "page": page,
+ "prefix": nameItem,
})
@frontend.route("/group/<group_id>/")
@@ -487,6 +499,17 @@ def search_package():
result = [r[0] for r in packages_query]
return jsonify(result)
+ at frontend.route('/_search_maintainer')
+def search_maintainer():
+ search = request.args.get('search[term]')
+ session = Session()
+ print "foo" + search
+ maintainers_query = session.query(Source.maintainer)\
+ .filter(Source.maintainer.contains(search))\
+ .group_by(Source.maintainer).limit(10)
+ result = [r[0] for r in maintainers_query]
+ return jsonify(result)
+
@frontend.route('/about')
def about():
diff --git a/templates/macros.inc.html b/templates/macros.inc.html
index a9e6459..d70c1f7 100644
--- a/templates/macros.inc.html
+++ b/templates/macros.inc.html
@@ -1,7 +1,7 @@
{% macro render_packages_prefixes(prefixes) %}
{%- for prefix in prefixes %}
-{# <a href="{{ url_for('prefix_html', prefix=prefix) }}">{{ prefix }}</a>
+{# <a href="{{ url_for('prefix', prefix_id=prefix) }}">{{ prefix }}</a>
#}
<a href="/prefix/{{ prefix }}">{{ prefix }}</a>
diff --git a/templates/search.html b/templates/search.html
index 64e5870..b9fda0e 100644
--- a/templates/search.html
+++ b/templates/search.html
@@ -19,6 +19,20 @@
$("#searchPackageForm").submit(); }
})
});
+
+ $(function() {
+ $( "#maintainer" ).autocomplete({
+ source: function( request, response ) {
+ $.getJSON($SCRIPT_ROOT + "/_search_maintainer", {
+ search: request
+ }, response);
+ },
+ select: function(event, ui) {
+ $("#maintainer").val(ui.item.label);
+ $("#searchMaintainerForm").submit(); }
+ })
+ });
+
</script>
<style>
@@ -30,15 +44,14 @@
<table><tr><td>By package</td><td>
<form id="searchPackageForm" action="/source/search/" method="POST">
<div class="ui-widget">{{form.package(size=20)}}
- <input type="submit" value="Search" /></div>
+ <input type="submit" value="Search" /></div>
</form>
</td></tr>
-<!--
<tr><td>By maintainer</td><td>
-<form id="searchPackageForm" action="/package/">
- <div class="ui-widget">
- {{form.maintainer(size=20)}} <input type="submit" value="Search" />
+<form id="searchMaintainerForm" action="/maintainer/search/" method="POST">
+ <div class="ui-widget">{{form.maintainer(size=20)}}
+ <input type="submit" value="Search" />
</div>
</form>
-</td></tr>-->
+</td></tr>
</table>
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-debile/debile-web.git
More information about the Pkg-debile-commits
mailing list