mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
Refactored views into new views/ modules, refs #256
This commit is contained in:
parent
4301a8f3ac
commit
1f69269fe9
6 changed files with 1165 additions and 1132 deletions
45
datasette/views/database.py
Normal file
45
datasette/views/database.py
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
from .base import BaseView
|
||||
from datasette.utils import (
|
||||
validate_sql_select,
|
||||
to_css_class,
|
||||
)
|
||||
from sanic import response
|
||||
import os
|
||||
|
||||
|
||||
class DatabaseView(BaseView):
|
||||
async def data(self, request, name, hash):
|
||||
if request.args.get('sql'):
|
||||
sql = request.raw_args.pop('sql')
|
||||
validate_sql_select(sql)
|
||||
return await self.custom_sql(request, name, hash, sql)
|
||||
info = self.ds.inspect()[name]
|
||||
metadata = self.ds.metadata.get('databases', {}).get(name, {})
|
||||
self.ds.update_with_inherited_metadata(metadata)
|
||||
tables = list(info['tables'].values())
|
||||
tables.sort(key=lambda t: (t['hidden'], t['name']))
|
||||
return {
|
||||
'database': name,
|
||||
'tables': tables,
|
||||
'hidden_count': len([t for t in tables if t['hidden']]),
|
||||
'views': info['views'],
|
||||
'queries': [{
|
||||
'name': query_name,
|
||||
'sql': query_sql,
|
||||
} for query_name, query_sql in (metadata.get('queries') or {}).items()],
|
||||
}, {
|
||||
'database_hash': hash,
|
||||
'show_hidden': request.args.get('_show_hidden'),
|
||||
'editable': True,
|
||||
'metadata': metadata,
|
||||
}, ('database-{}.html'.format(to_css_class(name)), 'database.html')
|
||||
|
||||
|
||||
class DatabaseDownload(BaseView):
|
||||
async def view_get(self, request, name, hash, **kwargs):
|
||||
filepath = self.ds.inspect()[name]['file']
|
||||
return await response.file_stream(
|
||||
filepath,
|
||||
filename=os.path.basename(filepath),
|
||||
mime_type='application/octet-stream',
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue