aboutsummaryrefslogtreecommitdiff
path: root/dicoweb/views.py
diff options
context:
space:
mode:
authorWojciech Polak <polak@gnu.org>2013-03-08 20:21:32 +0100
committerWojciech Polak <polak@gnu.org>2013-03-08 20:42:56 +0100
commit8f61a0bf3cd35445dc5cb5c18faf69d3a1d32680 (patch)
tree2c4f046ee1a2c82c400b47ad9ace60c73aac3f9c /dicoweb/views.py
parent9d08cdfd73267b2fcd84b968258536cbdfad9af2 (diff)
downloaddico-8f61a0bf3cd35445dc5cb5c18faf69d3a1d32680.tar.gz
dico-8f61a0bf3cd35445dc5cb5c18faf69d3a1d32680.tar.bz2
PEP8 code formatting changes.
Update Dicoweb for Django 1.4+ Add requirements.txt file for PIP.
Diffstat (limited to 'dicoweb/views.py')
-rw-r--r--dicoweb/views.py202
1 files changed, 105 insertions, 97 deletions
diff --git a/dicoweb/views.py b/dicoweb/views.py
index e5a168c..6cf5349 100644
--- a/dicoweb/views.py
+++ b/dicoweb/views.py
@@ -1,5 +1,5 @@
# This file is part of GNU Dico.
-# Copyright (C) 2008-2010, 2012 Wojciech Polak
+# Copyright (C) 2008-2010, 2012, 2013 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
@@ -26,7 +26,8 @@ from django.utils.translation import ugettext as _
import dicoclient
from wit import wiki2html
-def index (request):
+
+def index(request):
page = {
'robots': 'index',
}
@@ -36,28 +37,28 @@ def index (request):
markup_style = 'default'
port = 2628
- sid = request.COOKIES.get ('dicoweb_sid', '')
- request.session.set_expiry (0)
+ sid = request.COOKIES.get('dicoweb_sid', '')
+ request.session.set_expiry(0)
- accept_lang = request.META.get ('HTTP_ACCEPT_LANGUAGE', '').split (',')
- for i, lang in enumerate (accept_lang):
- accept_lang[i] = lang.split (';')[0]
+ accept_lang = request.META.get('HTTP_ACCEPT_LANGUAGE', '').split(',')
+ for i, lang in enumerate(accept_lang):
+ accept_lang[i] = lang.split(';')[0]
if 'server' in request.session:
server = request.session['server']
else:
server = settings.DICT_SERVERS[0]
- server = request.GET.get ('server', server)
+ server = request.GET.get('server', server)
if not server in settings.DICT_SERVERS:
server = settings.DICT_SERVERS[0]
- request.session['server'] = server;
+ request.session['server'] = server
- if len (settings.DICT_SERVERS) > 1:
- selects['sv'] = HtmlOptions (settings.DICT_SERVERS, server)
+ if len(settings.DICT_SERVERS) > 1:
+ selects['sv'] = HtmlOptions(settings.DICT_SERVERS, server)
- key = hashlib.md5 ('%s/%s' % (sid, server.encode ('ascii',
- 'backslashreplace')))
- sid = key.hexdigest ()
+ key = hashlib.md5('%s/%s' % (sid, server.encode('ascii',
+ 'backslashreplace')))
+ sid = key.hexdigest()
type = 'search'
if 'define' in request.GET:
@@ -65,91 +66,92 @@ def index (request):
else:
type = 'search'
- database = request.GET.get ('db', '*')
- strategy = request.GET.get ('strategy', '.')
+ database = request.GET.get('db', '*')
+ strategy = request.GET.get('strategy', '.')
- key_databases = str ('dicoweb/databases/' + server)
- key_strategies = str ('dicoweb/strategies/' + server)
+ key_databases = str('dicoweb/databases/' + server)
+ key_strategies = str('dicoweb/strategies/' + server)
- databases = cache.get (key_databases)
- strategies = cache.get (key_strategies)
+ databases = cache.get(key_databases)
+ strategies = cache.get(key_strategies)
- if server.find (':') != -1:
- s = server.split (':', 1)
+ if server.find(':') != -1:
+ s = server.split(':', 1)
server = s[0]
- port = int (s[1])
+ port = int(s[1])
if not databases or not strategies:
- dc = dicoclient.DicoClient ()
+ dc = dicoclient.DicoClient()
try:
- dc.open (server, port)
+ dc.open(server, port)
dc.timeout = settings.DICT_TIMEOUT
- databases = dc.show_databases ()['databases']
- strategies = dc.show_strategies ()['strategies']
- dc.close ()
+ databases = dc.show_databases()['databases']
+ strategies = dc.show_strategies()['strategies']
+ dc.close()
except (socket.timeout, socket.error, dicoclient.DicoNotConnectedError):
- return render_to_response ('index.html', {'selects': selects})
+ return render_to_response('index.html', {'selects': selects})
- cache.set (key_databases, databases, timeout=86400)
- cache.set (key_strategies, strategies, timeout=86400)
+ cache.set(key_databases, databases, timeout=86400)
+ cache.set(key_strategies, strategies, timeout=86400)
for s in strategies:
s[1] = _(s[1])
- databases.insert (0, ['!', _('First match')])
- databases.insert (0, ['*', _('All')])
- strategies.insert (0, ['.', _('Default')])
+ databases.insert(0, ['!', _('First match')])
+ databases.insert(0, ['*', _('All')])
+ strategies.insert(0, ['.', _('Default')])
- selects['db'] = HtmlOptions (databases, database)
- selects['st'] = HtmlOptions (strategies, strategy)
+ selects['db'] = HtmlOptions(databases, database)
+ selects['st'] = HtmlOptions(strategies, strategy)
- q = request.GET.get ('q', '')
+ q = request.GET.get('q', '')
if 'q' in request.GET and q != '':
- langkey = '*';
- if database == '*': langkey = ','.join (accept_lang)
+ langkey = '*'
+ if database == '*':
+ langkey = ','.join(accept_lang)
- key = hashlib.md5 ('%s:%d/%s/%s/%s/%s/%s' %
- (server, port, langkey, type, database, strategy,
- q.encode ('ascii', 'backslashreplace')))
- key = key.hexdigest ()
- result = cache.get ('dicoweb/' + key)
+ key = hashlib.md5('%s:%d/%s/%s/%s/%s/%s' %
+ (server, port, langkey, type, database, strategy,
+ q.encode('ascii', 'backslashreplace')))
+ key = key.hexdigest()
+ result = cache.get('dicoweb/' + key)
if not result:
try:
- dc = dicoclient.DicoClient ()
+ dc = dicoclient.DicoClient()
dc.timeout = settings.DICT_TIMEOUT
- dc.open (server, port)
- dc.option ('MIME')
+ dc.open(server, port)
+ dc.option('MIME')
if database == '*' and 'lang' in dc.server_capas:
- dc.option ('LANG', ': ' + ' '.join (accept_lang))
+ dc.option('LANG', ': ' + ' '.join(accept_lang))
if 'markup-wiki' in dc.server_capas:
- if dc.option ('MARKUP', 'wiki'):
+ if dc.option('MARKUP', 'wiki'):
markup_style = 'wiki'
if database == 'dbinfo':
- result = dc.show_info (q)
+ result = dc.show_info(q)
elif type == 'define':
- result = dc.define (database, q)
+ result = dc.define(database, q)
else:
- result = dc.match (database, strategy, q)
- dc.close ()
+ result = dc.match(database, strategy, q)
+ dc.close()
result['markup_style'] = markup_style
- cache.set ('dicoweb/' + key, result, timeout=3600)
+ cache.set('dicoweb/' + key, result, timeout=3600)
except (socket.timeout, socket.error,
dicoclient.DicoNotConnectedError):
- return render_to_response ('index.html',
- {'selects': selects})
+ return render_to_response('index.html',
+ {'selects': selects})
# get last match results
if sid and type == 'search':
- cache.set ('dicoweb/%s/last_match' % sid, key, timeout=3600)
+ cache.set('dicoweb/%s/last_match' % sid, key, timeout=3600)
else:
- key = cache.get ('dicoweb/%s/last_match' % sid)
+ key = cache.get('dicoweb/%s/last_match' % sid)
if key != None:
- mtc = cache.get ('dicoweb/' + key)
+ mtc = cache.get('dicoweb/' + key)
mtc['dbnames'] = {}
if 'matches' in mtc:
@@ -159,65 +161,71 @@ def index (request):
mtc['dbnames'][m] = d[1]
break
- if database == 'dbinfo': q = ''
+ if database == 'dbinfo':
+ q = ''
if q != '':
page['title'] = q + ' - '
page['robots'] = 'noindex,nofollow'
if 'definitions' in result:
- rx1 = re.compile ('{+(.*?)}+', re.DOTALL)
+ rx1 = re.compile('{+(.*?)}+', re.DOTALL)
for df in result['definitions']:
- if df.has_key ('content-type') \
- and df['content-type'].startswith ('text/x-wiki'):
+ if 'content-type' in df \
+ and df['content-type'].startswith('text/x-wiki'):
lang = df['x-wiki-language'] \
- if df.has_key ('x-wiki-language') else 'en'
- wikiparser = wiki2html.HtmlWiktionaryMarkup (text=df['desc'],
- html_base='?q=',
- lang=lang)
- wikiparser.parse ()
- df['desc'] = str (wikiparser)
+ if 'x-wiki-language' in df else 'en'
+ wikiparser = wiki2html.HtmlWiktionaryMarkup(text=df['desc'],
+ html_base='?q=',
+ lang=lang)
+ wikiparser.parse()
+ df['desc'] = str(wikiparser)
df['format_html'] = True
else:
- df['desc'] = re.sub ('_(.*?)_', '<b>\\1</b>', df['desc'])
- df['desc'] = re.sub (rx1, __subs1, df['desc'])
-
- return render_to_response ('index.html', {'page': page,
- 'q': q,
- '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))
+ df['desc'] = re.sub('_(.*?)_', '<b>\\1</b>', df['desc'])
+ df['desc'] = re.sub(rx1, __subs1, df['desc'])
+
+ return render_to_response('index.html', {'page': page,
+ 'q': q,
+ '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>' \
- % (s.replace ('\n', ''), s.replace ('\n', ''), s)
+ % (s.replace('\n', ''), s.replace('\n', ''), s)
+
class HtmlOptions:
- def __init__ (self, lst=[], value=''):
+ def __init__(self, lst=[], value=''):
self.lst = lst
self.value = value
- def html (self):
+ def html(self):
buf = []
for opt in self.lst:
- if len (opt) == 2:
+ 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]))
+ buf.append('<option value="%s" selected="selected">%s</option>' % (
+ opt[0], opt[1]))
else:
- buf.append ('<option value="%s">%s</option>' % (opt[0],
- opt[1]))
+ buf.append('<option value="%s">%s</option>' % (opt[0],
+ opt[1]))
else:
if opt == self.value:
- buf.append ('<option value="%s" selected="selected">%s</option>' % (opt, opt))
+ buf.append(
+ '<option value="%s" selected="selected">%s</option>' % (opt, opt))
else:
- buf.append ('<option value="%s">%s</option>' % (opt, opt))
- return '\n'.join (buf)
+ buf.append('<option value="%s">%s</option>' % (opt, opt))
+ return '\n'.join(buf)

Return to:

Send suggestions and report system problems to the System administrator.