summaryrefslogtreecommitdiff
path: root/extras/appengine/sqlformat/legacy.py
diff options
context:
space:
mode:
Diffstat (limited to 'extras/appengine/sqlformat/legacy.py')
-rw-r--r--extras/appengine/sqlformat/legacy.py166
1 files changed, 0 insertions, 166 deletions
diff --git a/extras/appengine/sqlformat/legacy.py b/extras/appengine/sqlformat/legacy.py
deleted file mode 100644
index 7f6c161..0000000
--- a/extras/appengine/sqlformat/legacy.py
+++ /dev/null
@@ -1,166 +0,0 @@
-"""Legacy URLs."""
-
-# This module reflects the URLs and behavior of the former Django
-# application.
-
-import logging
-import os
-import time
-
-from google.appengine.api import memcache
-
-from flask import Blueprint, make_response, render_template, Response, request
-
-from pygments import highlight
-from pygments.formatters import HtmlFormatter
-from pygments.lexers import SqlLexer, PythonLexer, PhpLexer
-
-import simplejson as json
-
-import sqlparse
-
-
-legacy = Blueprint('', 'legacy')
-
-
-EXAMPLES_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '../examples'))
-
-
-@legacy.route('/', methods=['POST', 'GET'])
-def index():
- data = {'examples': _get_examples()}
- extra = {'highlight': True, 'comments': False,
- 'keywords': 'upper', 'idcase': '',
- 'n_indents': '2',
- 'lang': 'sql'}
- sql_orig = 'select * from foo join bar on val1 = val2 where id = 123;'
- if request.method == 'POST':
- oformat = request.form.get('format', 'html')
- extra['highlight'] = 'highlight' in request.form
- extra['comments'] = 'remove_comments' in request.form
- extra['keywords'] = request.form.get('keyword_case', '')
- extra['idcase'] = request.form.get('identifier_case', '')
- extra['n_indents'] = request.form.get('n_indents', '2')
- extra['lang'] = request.form.get('output_format', 'sql')
- sql = _get_sql(request.form, request.files)
- sql_orig = sql
- start = time.time()
- data['output'] = _format_sql(sql, request.form, format=oformat)
- data['proc_time'] = '%.3f' % (time.time()-start)
- if oformat == 'json':
- data['errors'] = ''
- return make_response(Response(json.dumps(data),
- content_type='text/x-json'))
- elif oformat == 'text':
- return make_response(Response(data['output'], content_type='text/plain'))
- data['sql_orig'] = sql_orig
- data['extra'] = extra
- return render_template('index.html', **data)
-
-
-@legacy.route('/source/')
-def source():
- return render_template('source.html')
-
-
-@legacy.route('/about/')
-def about():
- return render_template('about.html')
-
-@legacy.route('/api/')
-def api():
- return render_template('api.html')
-
-
-@legacy.route('/format/', methods=['GET', 'POST'])
-@legacy.route('/format', methods=['GET', 'POST'])
-def format_():
- if request.method == 'POST':
- sql = _get_sql(request.form, request.files)
- data = request.form
- else:
- sql = _get_sql(request.args)
- data = request.args
- formatted = _format_sql(sql, data, format='text')
- return make_response(Response(formatted, content_type='text/plain'))
-
-
-@legacy.route('/load_example', methods=['GET', 'POST'])
-def load_example():
- fname = request.form.get('fname')
- if fname is None:
- answer = 'Uups, I\'ve got no filename...'
- elif fname not in _get_examples():
- answer = 'Hmm, I think you don\'t want to do that.'
- else:
- answer = open(os.path.join(EXAMPLES_DIR, fname)).read()
- data = json.dumps({'answer': answer})
- return make_response(Response(data, content_type='text/x-json'))
-
-
-def _get_examples():
- examples = memcache.get('legacy_examples')
- if examples is None:
- examples = os.listdir(EXAMPLES_DIR)
- memcache.set('legacy_examples', examples)
- return examples
-
-
-def _get_sql(data, files=None):
- sql = None
- if files is not None and 'datafile' in files:
- raw = files['datafile'].read()
- try:
- sql = raw.decode('utf-8')
- except UnicodeDecodeError, err:
- logging.error(err)
- logging.debug(repr(raw))
- sql = (u'-- UnicodeDecodeError: %s\n'
- u'-- Please make sure to upload UTF-8 encoded data for now.\n'
- u'-- If you want to help improving this part of the application\n'
- u'-- please file a bug with some demo data at:\n'
- u'-- http://code.google.com/p/python-sqlparse/issues/entry\n'
- u'-- Thanks!\n' % err)
- if not sql:
- sql = data.get('data')
- return sql or ''
-
-
-def _format_sql(sql, data, format='html'):
- popts = {}
- if data.get('remove_comments'):
- popts['strip_comments'] = True
- if data.get('keyword_case', 'undefined') not in ('undefined', ''):
- popts['keyword_case'] = data.get('keyword_case')
- if data.get('identifier_case', 'undefined') not in ('undefined', ''):
- popts['identifier_case'] = data.get('identifier_case')
- if data.get('n_indents', None) is not None:
- val = data.get('n_indents')
- try:
- popts['indent_width'] = max(1, min(1000, int(val)))
- popts['reindent'] = True
- except (ValueError, TypeError):
- pass
- if (not 'indent_width' in popts and
- data.get('reindent', '').lower() in ('1', 'true', 't')):
- popts['indent_width'] = 2
- popts['reindent'] = True
- if data.get('output_format', None) is not None:
- popts['output_format'] = data.get('output_format')
- logging.debug('Format: %s, POPTS: %r', format, popts)
- logging.debug(sql)
- sql = sqlparse.format(sql, **popts)
- if format in ('html', 'json'):
- if data.get('highlight', False):
- if popts['output_format'] == 'python':
- lexer = PythonLexer()
- elif popts['output_format'] == 'php':
- lexer = PhpLexer()
- else:
- lexer = SqlLexer()
- sql = highlight(sql, lexer, HtmlFormatter())
- else:
- sql = ('<textarea class="resizable" '
- 'style="height: 350px; margin-top: 1em;">%s</textarea>'
- % sql)
- return sql