Wrap up steps for new table wizard
it actually works.. :) needs more polish, but will let usage drive that
This commit is contained in:
parent
68ed5942e6
commit
f4bc280da7
2 changed files with 258 additions and 29 deletions
|
@ -32,6 +32,8 @@ import warnings
|
|||
|
||||
import six
|
||||
|
||||
from rattail.util import simple_error
|
||||
|
||||
import colander
|
||||
from deform import widget as dfwidget
|
||||
from webhelpers2.html import HTML
|
||||
|
@ -111,6 +113,13 @@ class TableView(MasterView):
|
|||
# row_count
|
||||
g.sorters['row_count'] = g.make_simple_sorter('row_count')
|
||||
|
||||
def configure_form(self, f):
|
||||
super(TableView, self).configure_form(f)
|
||||
|
||||
# TODO: should render this instead, by inspecting table
|
||||
if not self.creating:
|
||||
f.remove('versioned')
|
||||
|
||||
def get_instance(self):
|
||||
from sqlalchemy_utils import get_mapper
|
||||
|
||||
|
@ -205,6 +214,37 @@ class TableView(MasterView):
|
|||
|
||||
return {'ok': True}
|
||||
|
||||
def write_revision_script(self):
|
||||
data = self.request.json_body
|
||||
script = self.db_handler.generate_revision_script(data['branch'],
|
||||
message=data['message'])
|
||||
return {'ok': True,
|
||||
'script': script.path}
|
||||
|
||||
def upgrade_db(self):
|
||||
self.db_handler.upgrade_db()
|
||||
return {'ok': True}
|
||||
|
||||
def check_table(self):
|
||||
model = self.model
|
||||
data = self.request.json_body
|
||||
table_name = data['table_name']
|
||||
|
||||
table = model.Base.metadata.tables.get(table_name)
|
||||
if table is None:
|
||||
return {'ok': True,
|
||||
'problem': "Table does not exist in model metadata!"}
|
||||
|
||||
try:
|
||||
count = self.Session.query(table).count()
|
||||
except Exception as error:
|
||||
return {'ok': True,
|
||||
'problem': simple_error(error)}
|
||||
|
||||
url = self.request.route_url('{}.view'.format(self.get_route_prefix()),
|
||||
table_name=table_name)
|
||||
return {'ok': True, 'url': url}
|
||||
|
||||
def get_row_data(self, table):
|
||||
data = []
|
||||
for i, column in enumerate(table['table'].columns, 1):
|
||||
|
@ -237,6 +277,7 @@ class TableView(MasterView):
|
|||
g.sorters['nullable'] = g.make_simple_sorter('nullable')
|
||||
|
||||
g.set_renderer('description', self.render_column_description)
|
||||
g.set_searchable('description')
|
||||
|
||||
def render_column_description(self, column, field):
|
||||
text = column[field]
|
||||
|
@ -287,6 +328,33 @@ class TableView(MasterView):
|
|||
renderer='json',
|
||||
permission='{}.create'.format(permission_prefix))
|
||||
|
||||
# generate revision script
|
||||
config.add_route('{}.write_revision_script'.format(route_prefix),
|
||||
'{}/write-revision-script'.format(url_prefix),
|
||||
request_method='POST')
|
||||
config.add_view(cls, attr='write_revision_script',
|
||||
route_name='{}.write_revision_script'.format(route_prefix),
|
||||
renderer='json',
|
||||
permission='{}.create'.format(permission_prefix))
|
||||
|
||||
# upgrade db
|
||||
config.add_route('{}.upgrade_db'.format(route_prefix),
|
||||
'{}/upgrade-db'.format(url_prefix),
|
||||
request_method='POST')
|
||||
config.add_view(cls, attr='upgrade_db',
|
||||
route_name='{}.upgrade_db'.format(route_prefix),
|
||||
renderer='json',
|
||||
permission='{}.create'.format(permission_prefix))
|
||||
|
||||
# check table
|
||||
config.add_route('{}.check_table'.format(route_prefix),
|
||||
'{}/check-table'.format(url_prefix),
|
||||
request_method='POST')
|
||||
config.add_view(cls, attr='check_table',
|
||||
route_name='{}.check_table'.format(route_prefix),
|
||||
renderer='json',
|
||||
permission='{}.create'.format(permission_prefix))
|
||||
|
||||
|
||||
class TablesView(TableView):
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue