aboutsummaryrefslogtreecommitdiff
path: root/dicoweb
diff options
context:
space:
mode:
authorWojciech Polak <polak@gnu.org>2010-05-23 19:55:06 +0200
committerWojciech Polak <polak@gnu.org>2010-05-23 19:55:06 +0200
commitceeec5623dbf19d8c96cd1187c5f17ed362cb5fe (patch)
treeb50fa6b76b485e4ce160e9c3fa164d798844dbe5 /dicoweb
parent051fe63429801418e1c061e1b6a6f41c0470f68b (diff)
downloaddico-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.py2
-rw-r--r--dicoweb/templates/base.html2
-rw-r--r--dicoweb/templates/index.html2
-rw-r--r--dicoweb/templates/opensearch.xml (renamed from dicoweb/static/opensearch.xml)5
-rw-r--r--dicoweb/urls.py5
-rw-r--r--dicoweb/views.py10
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 }}&amp;db=dbinfo">{{ df.db_fullname }}</a>:
+ {% trans "From" %} <a href="?q={{ df.db|urlencode }}&amp;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:

Return to:

Send suggestions and report system problems to the System administrator.