mirror of
https://github.com/fergalmoran/dss.api.git
synced 2025-12-22 09:18:13 +00:00
57 lines
1.8 KiB
Python
Executable File
57 lines
1.8 KiB
Python
Executable File
import os
|
|
|
|
from django.db import connection
|
|
from django.conf import settings
|
|
|
|
|
|
def terminal_width():
|
|
"""
|
|
Function to compute the terminal width.
|
|
WARNING: This is not my code, but I've been using it forever and
|
|
I don't remember where it came from.
|
|
"""
|
|
width = 0
|
|
try:
|
|
import struct, fcntl, termios
|
|
|
|
s = struct.pack('HHHH', 0, 0, 0, 0)
|
|
x = fcntl.ioctl(1, termios.TIOCGWINSZ, s)
|
|
width = struct.unpack('HHHH', x)[1]
|
|
except:
|
|
pass
|
|
if width <= 0:
|
|
try:
|
|
width = int(os.environ['COLUMNS'])
|
|
except:
|
|
pass
|
|
if width <= 0:
|
|
width = 80
|
|
return width
|
|
|
|
|
|
class SqlPrintingMiddleware(object):
|
|
"""
|
|
Middleware which prints out a list of all SQL queries done
|
|
for each view that is processed. This is only useful for debugging.
|
|
"""
|
|
|
|
def process_response(self, request, response):
|
|
if not settings.DEBUG:
|
|
return
|
|
|
|
indentation = 2
|
|
if len(connection.queries) > 0 and settings.DEBUG:
|
|
width = 10000 #terminal_width()
|
|
total_time = 0.0
|
|
for query in connection.queries:
|
|
nice_sql = query['sql'].replace('"', '').replace(',', ', ')
|
|
sql = "\033[1;31m[%s]\033[0m %s" % (query['time'], nice_sql)
|
|
total_time += float(query['time'])
|
|
while len(sql) > width - indentation:
|
|
print "%s%s" % (" " * indentation, sql[:width - indentation])
|
|
sql = sql[width - indentation:]
|
|
print "%s%s\n" % (" " * indentation, sql)
|
|
replace_tuple = (" " * indentation, str(total_time))
|
|
print "%s\033[1;32m[TOTAL TIME: %s seconds]\033[0m" % replace_tuple
|
|
return response
|