[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