diff options
author | Wojciech Polak <polak@gnu.org> | 2013-03-08 20:21:32 +0100 |
---|---|---|
committer | Wojciech Polak <polak@gnu.org> | 2013-03-08 20:42:56 +0100 |
commit | 8f61a0bf3cd35445dc5cb5c18faf69d3a1d32680 (patch) | |
tree | 2c4f046ee1a2c82c400b47ad9ace60c73aac3f9c /dicoweb/views.py | |
parent | 9d08cdfd73267b2fcd84b968258536cbdfad9af2 (diff) | |
download | dico-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.py | 202 |
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) |