diff options
author | Wojciech Polak <polak@gnu.org> | 2010-05-23 19:55:06 +0200 |
---|---|---|
committer | Wojciech Polak <polak@gnu.org> | 2010-05-23 19:55:06 +0200 |
commit | ceeec5623dbf19d8c96cd1187c5f17ed362cb5fe (patch) | |
tree | b50fa6b76b485e4ce160e9c3fa164d798844dbe5 /dicoweb | |
parent | 051fe63429801418e1c061e1b6a6f41c0470f68b (diff) | |
download | dico-ceeec5623dbf19d8c96cd1187c5f17ed362cb5fe.tar.gz dico-ceeec5623dbf19d8c96cd1187c5f17ed362cb5fe.tar.bz2 |
Improve Dicoweb.
* dicoweb/dicoclient/dicoclient.py (define): Allow for empty
descriptions in response.
* dicoweb/static/opensearch.xml: Move to templates and make it dynamic.
* dicoweb/views.py (opensearch): Add view.
Diffstat (limited to 'dicoweb')
-rw-r--r-- | dicoweb/dicoclient/dicoclient.py | 2 | ||||
-rw-r--r-- | dicoweb/templates/base.html | 2 | ||||
-rw-r--r-- | dicoweb/templates/index.html | 2 | ||||
-rw-r--r-- | dicoweb/templates/opensearch.xml (renamed from dicoweb/static/opensearch.xml) | 5 | ||||
-rw-r--r-- | dicoweb/urls.py | 5 | ||||
-rw-r--r-- | dicoweb/views.py | 10 |
6 files changed, 19 insertions, 7 deletions
diff --git a/dicoweb/dicoclient/dicoclient.py b/dicoweb/dicoclient/dicoclient.py index 75b5bd2..ff97594 100644 --- a/dicoweb/dicoclient/dicoclient.py +++ b/dicoweb/dicoclient/dicoclient.py @@ -303,7 +303,7 @@ class DicoClient: if int (code) < 500: defs_res = res[1:-1] defs = [] - rx = re.compile ('^\d+ ("[^"]+"|\w+) ([a-zA-Z0-9_\-]+) ("[^"]+"|\w+)') + rx = re.compile ('^\d+ ("[^"]+"|\w+) ([a-zA-Z0-9_\-]+) ("[^"]*"|\w+)') for i in defs_res: term, db, db_fullname = rx.search (i[0]).groups () df = {"term": self.__unquote (term), diff --git a/dicoweb/templates/base.html b/dicoweb/templates/base.html index 4b6e08e..33e4491 100644 --- a/dicoweb/templates/base.html +++ b/dicoweb/templates/base.html @@ -8,7 +8,7 @@ <meta name="keywords" content="gnu dico web search interface, dicoweb, dictionaries, dict protocol" /> <meta name="description" content="GNU Dico WebSearch Interface" /> <link rel="stylesheet" type="text/css" href="{% media_prefix %}/dicoweb.css" /> -<link rel="search" type="application/opensearchdescription+xml" title="GNU Dico WebSearch" href="{% media_prefix %}/opensearch.xml" /> +<link rel="search" type="application/opensearchdescription+xml" title="GNU Dico WebSearch" href="{% url opensearch %}" /> <script type="text/javascript" src="{% media_prefix %}/dicoweb.js"></script> </head> diff --git a/dicoweb/templates/index.html b/dicoweb/templates/index.html index 1b92bc8..10c8830 100644 --- a/dicoweb/templates/index.html +++ b/dicoweb/templates/index.html @@ -76,7 +76,7 @@ </h3> {% for df in result.definitions %} <pre> - {% trans "From" %} <a href="?q={{ df.db|urlencode }}&db=dbinfo">{{ df.db_fullname }}</a>: + {% trans "From" %} <a href="?q={{ df.db|urlencode }}&db=dbinfo">{% firstof df.db_fullname df.db %}</a>: <br /><br /> {% if df.format_html %} {{ df.desc|safe }} diff --git a/dicoweb/static/opensearch.xml b/dicoweb/templates/opensearch.xml index 0e8bb6d..70e52de 100644 --- a/dicoweb/static/opensearch.xml +++ b/dicoweb/templates/opensearch.xml @@ -1,7 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"> <ShortName>GNU Dico WebSearch</ShortName> <Description>GNU Dico WebSearch Interface</Description> - <Url type="text/html" method="get" template="http://dicoweb.gnu.org.ua/?q={searchTerms}"/> + <Url type="text/html" method="get" template="{{ url_query }}?q={searchTerms}"/> <InputEncoding>UTF-8</InputEncoding> - <Image width="16" height="16">http://dicoweb.gnu.org.ua/favicon.ico</Image> + <Image width="16" height="16">{{ url_media }}/favicon.ico</Image> </OpenSearchDescription> diff --git a/dicoweb/urls.py b/dicoweb/urls.py index 03c14f5..51bae66 100644 --- a/dicoweb/urls.py +++ b/dicoweb/urls.py @@ -1,5 +1,5 @@ # This file is part of GNU Dico. -# Copyright (C) 2008, 2009 Wojciech Polak +# Copyright (C) 2008, 2009, 2010 Wojciech Polak # # GNU Dico is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,7 +20,8 @@ import views urlpatterns = patterns ( '', - (r'^/?$', views.index), + (r'^/?$', views.index, {}, 'index'), + (r'^opensearch\.xml$', views.opensearch, {}, 'opensearch'), (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}), ) diff --git a/dicoweb/views.py b/dicoweb/views.py index 44c0d77..47b30cd 100644 --- a/dicoweb/views.py +++ b/dicoweb/views.py @@ -15,6 +15,7 @@ # along with GNU Dico. If not, see <http://www.gnu.org/licenses/>. from django.conf import settings +from django.core import urlresolvers from django.shortcuts import render_to_response from django.utils.translation import ugettext as _ @@ -181,6 +182,13 @@ def index (request): 'mtc': mtc, 'result': result, 'selects': selects }) +def opensearch (request): + url_query = request.build_absolute_uri (urlresolvers.reverse ('index')) + url_media = request.build_absolute_uri (settings.MEDIA_URL) + return render_to_response ('opensearch.xml', {'url_query': url_query, + 'url_media': url_media}, + mimetype='application/xml') + def __subs1 (match): s = re.sub (r' +', ' ', match.group (1)) return '<a href="?q=%s" title="Search for %s">%s</a>' \ @@ -194,6 +202,8 @@ class HtmlOptions: buf = [] for opt in self.lst: if len (opt) == 2: + if not opt[1]: + opt[1] = opt[0] if opt[0] == self.value: buf.append ('<option value="%s" selected="selected">%s</option>' % (opt[0], opt[1])) else: |