Remove all deprecated use_buefy logic

also remove some static files no longer used, etc.
This commit is contained in:
Lance Edgar 2023-02-03 12:05:17 -06:00
parent 01e5eee981
commit 9faaea881d
112 changed files with 2079 additions and 7039 deletions

View file

@ -24,8 +24,6 @@
Model Master View
"""
from __future__ import unicode_literals, absolute_import
import os
import csv
import datetime
@ -252,7 +250,7 @@ class MasterView(View):
def set_labels(self, obj):
labels = self.collect_labels()
for key, label in six.iteritems(labels):
for key, label in labels.items():
obj.set_label(key, label)
def collect_labels(self):
@ -283,7 +281,7 @@ class MasterView(View):
def set_row_labels(self, obj):
labels = self.collect_row_labels()
for key, label in six.iteritems(labels):
for key, label in labels.items():
obj.set_label(key, label)
def collect_row_labels(self):
@ -333,7 +331,6 @@ class MasterView(View):
"""
self.listing = True
grid = self.make_grid()
use_buefy = self.get_use_buefy()
# If user just refreshed the page with a reset instruction, issue a
# redirect in order to clear out the query string.
@ -346,14 +343,9 @@ class MasterView(View):
# return grid only, if partial page was requested
if self.request.params.get('partial'):
if use_buefy:
# render grid data only, as JSON
return render_to_response('json', grid.get_buefy_data(),
request=self.request)
else: # just do traditional thing, render grid HTML
self.request.response.content_type = str('text/html')
self.request.response.text = grid.render_grid()
return self.request.response
# render grid data only, as JSON
return render_to_response('json', grid.get_buefy_data(),
request=self.request)
context = {
'grid': grid,
@ -552,17 +544,16 @@ class MasterView(View):
if self.has_rows and 'main_actions' not in defaults:
actions = []
use_buefy = self.get_use_buefy()
# view action
if self.rows_viewable:
icon = 'eye' if use_buefy else 'zoomin'
actions.append(self.make_action('view', icon=icon, url=self.row_view_action_url))
actions.append(self.make_action('view', icon='eye',
url=self.row_view_action_url))
# edit action
if self.rows_editable and self.has_perm('edit_row'):
icon = 'edit' if use_buefy else 'pencil'
actions.append(self.make_action('edit', icon=icon, url=self.row_edit_action_url))
actions.append(self.make_action('edit', icon='edit',
url=self.row_edit_action_url))
# delete action
if self.rows_deletable and self.has_perm('delete_row'):
@ -626,7 +617,6 @@ class MasterView(View):
Return a dictionary of kwargs to be passed to the factory when
constructing a new version grid.
"""
use_buefy = self.get_use_buefy()
instance = kwargs.get('instance') or self.get_instance()
route = '{}.version'.format(self.get_route_prefix())
defaults = {
@ -638,7 +628,7 @@ class MasterView(View):
if 'main_actions' not in kwargs:
url = lambda txn, i: self.request.route_url(route, uuid=instance.uuid, txnid=txn.id)
defaults['main_actions'] = [
self.make_action('view', icon='eye' if use_buefy else 'zoomin', url=url),
self.make_action('view', icon='eye', url=url),
]
defaults.update(kwargs)
return defaults
@ -735,11 +725,10 @@ class MasterView(View):
delete=False, schema=None, importer_host_title=None):
handler = handler_factory(self.rattail_config)
use_buefy = self.get_use_buefy()
if not schema:
schema = forms.SimpleFileImport().bind(request=self.request)
form = forms.Form(schema=schema, request=self.request, use_buefy=use_buefy)
form = forms.Form(schema=schema, request=self.request)
form.save_label = "Upload"
form.cancel_url = self.get_index_url()
if form.validate(newstyle=True):
@ -771,7 +760,7 @@ class MasterView(View):
value = getattr(obj, field)
if value is None:
return ""
value = six.text_type(value)
value = str(value)
if len(value) > 100:
value = value[:100] + '...'
return value
@ -841,7 +830,7 @@ class MasterView(View):
product = getattr(obj, field)
if not product:
return ""
text = six.text_type(product)
text = str(product)
url = self.request.route_url('products.view', uuid=product.uuid)
return tags.link_to(text, url)
@ -849,7 +838,7 @@ class MasterView(View):
pending = getattr(obj, field)
if not pending:
return
text = six.text_type(pending)
text = str(pending)
url = self.request.route_url('pending_products.view', uuid=pending.uuid)
return tags.link_to(text, url,
class_='has-background-warning')
@ -862,7 +851,7 @@ class MasterView(View):
if short:
text = "({}) {}".format(short, vendor.name)
else:
text = six.text_type(vendor)
text = str(vendor)
url = self.request.route_url('vendors.view', uuid=vendor.uuid)
return tags.link_to(text, url)
@ -918,7 +907,7 @@ class MasterView(View):
person = getattr(obj, field)
if not person:
return ""
text = six.text_type(person)
text = str(person)
url = self.request.route_url('people.view', uuid=person.uuid)
return tags.link_to(text, url)
@ -926,7 +915,7 @@ class MasterView(View):
person = getattr(obj, field)
if not person:
return ""
text = six.text_type(person)
text = str(person)
url = self.request.route_url('people.view_profile', uuid=person.uuid)
return tags.link_to(text, url)
@ -934,7 +923,7 @@ class MasterView(View):
user = getattr(obj, field)
if not user:
return ""
text = six.text_type(user)
text = str(user)
url = self.request.route_url('users.view', uuid=user.uuid)
return tags.link_to(text, url)
@ -954,7 +943,7 @@ class MasterView(View):
customer = getattr(obj, field)
if not customer:
return ""
text = six.text_type(customer)
text = str(customer)
url = self.request.route_url('customers.view', uuid=customer.uuid)
return tags.link_to(text, url)
@ -984,7 +973,7 @@ class MasterView(View):
value = obj.status_code
if value is None:
return ""
status_code_text = enum.get(value, six.text_type(value))
status_code_text = enum.get(value, str(value))
if obj.status_text:
return HTML.tag('span', title=obj.status_text, c=status_code_text)
return status_code_text
@ -1072,7 +1061,6 @@ class MasterView(View):
View for viewing details of an existing model record.
"""
self.viewing = True
use_buefy = self.get_use_buefy()
if instance is None:
instance = self.get_instance()
form = self.make_form(instance)
@ -1090,14 +1078,9 @@ class MasterView(View):
# return grid only, if partial page was requested
if self.request.params.get('partial'):
if use_buefy:
# render grid data only, as JSON
return render_to_response('json', grid.get_buefy_data(),
request=self.request)
else: # just do traditional thing, render grid HTML
self.request.response.content_type = str('text/html')
self.request.response.text = grid.render_grid()
return self.request.response
# render grid data only, as JSON
return render_to_response('json', grid.get_buefy_data(),
request=self.request)
context = {
'instance': instance,
@ -1112,12 +1095,8 @@ class MasterView(View):
context['dform'] = form.make_deform_form()
if self.has_rows:
if use_buefy:
context['rows_grid'] = grid
context['rows_grid_tools'] = HTML(self.make_row_grid_tools(instance) or '').strip()
else:
context['rows_grid'] = grid.render_complete(allow_save_defaults=False,
tools=self.make_row_grid_tools(instance))
context['rows_grid'] = grid
context['rows_grid_tools'] = HTML(self.make_row_grid_tools(instance) or '').strip()
return self.render_to_response('view', context)
@ -1224,18 +1203,12 @@ class MasterView(View):
instance = self.get_instance()
instance_title = self.get_instance_title(instance)
grid = self.make_version_grid(instance=instance)
use_buefy = self.get_use_buefy()
# return grid only, if partial page was requested
if self.request.params.get('partial'):
if use_buefy:
# render grid data only, as JSON
return render_to_response('json', grid.get_buefy_data(),
request=self.request)
else: # just do traditional thing, render grid HTML
self.request.response.content_type = str('text/html')
self.request.response.text = grid.render_grid()
return self.request.response
# render grid data only, as JSON
return render_to_response('json', grid.get_buefy_data(),
request=self.request)
return self.render_to_response('versions', {
'instance': instance,
@ -1567,15 +1540,10 @@ class MasterView(View):
response.content_length = os.path.getsize(path)
content_type = self.download_content_type(path, filename)
if content_type:
if six.PY3:
response.content_type = content_type
else:
response.content_type = six.binary_type(content_type)
response.content_type = content_type
# content-disposition
filename = os.path.basename(path)
if six.PY2:
filename = filename.encode('ascii', 'replace')
response.content_disposition = str('attachment; filename="{}"'.format(filename))
return response
@ -1986,8 +1954,7 @@ class MasterView(View):
# strip suffix, interpret data as JSON
data = data[:-len(suffix)]
if six.PY3:
data = data.decode('utf_8')
data = data.decode('utf_8')
data = json.loads(data)
if data.get('everything_complete'):
@ -2056,7 +2023,7 @@ class MasterView(View):
object_to_keep = self.Session.query(self.get_model_class()).get(uuids[1])
if object_to_remove and object_to_keep and self.request.POST.get('commit-merge') == 'yes':
msg = six.text_type(object_to_remove)
msg = str(object_to_remove)
try:
self.validate_merge(object_to_remove, object_to_keep)
except Exception as error:
@ -2166,7 +2133,7 @@ class MasterView(View):
"""
if hasattr(cls, 'model_key'):
keys = cls.model_key
if isinstance(keys, six.string_types):
if isinstance(keys, str):
keys = [keys]
else:
keys = get_primary_keys(cls.get_model_class())
@ -2399,7 +2366,6 @@ class MasterView(View):
"""
context = {
'master': self,
'use_buefy': self.get_use_buefy(),
'model_title': self.get_model_title(),
'model_title_plural': self.get_model_title_plural(),
'route_prefix': self.get_route_prefix(),
@ -2699,7 +2665,7 @@ class MasterView(View):
# nb. unfortunately HTML.tag() calls its first arg 'tag' and
# so we can't pass a kwarg with that name...so instead we
# patch that into place manually
button = six.text_type(button)
button = str(button)
button = button.replace('<b-button ',
'<b-button tag="a"')
button = HTML.literal(button)
@ -2733,7 +2699,7 @@ class MasterView(View):
btn_kw['icon_left'] = 'external-link-alt'
btn_kw['target'] = '_blank'
button = HTML.tag('b-button', **btn_kw)
button = six.text_type(button)
button = str(button)
button = button.replace('<b-button ',
'<b-button tag="a"')
button = HTML.literal(button)
@ -2840,9 +2806,7 @@ class MasterView(View):
return actions
def make_grid_action_view(self):
use_buefy = self.get_use_buefy()
icon = 'eye' if use_buefy else 'zoomin'
return self.make_action('view', icon=icon, url=self.default_view_url())
return self.make_action('view', icon='eye', url=self.default_view_url())
def default_view_url(self):
if self.use_index_links:
@ -2869,18 +2833,15 @@ class MasterView(View):
return actions
def make_grid_action_edit(self):
use_buefy = self.get_use_buefy()
icon = 'edit' if use_buefy else 'pencil'
return self.make_action('edit', icon=icon, url=self.default_edit_url)
return self.make_action('edit', icon='edit', url=self.default_edit_url)
def make_grid_action_clone(self):
return self.make_action('clone', icon='object-ungroup',
url=self.default_clone_url)
def make_grid_action_delete(self):
use_buefy = self.get_use_buefy()
kwargs = {}
if use_buefy and self.delete_confirm == 'simple':
if self.delete_confirm == 'simple':
kwargs['click_handler'] = 'deleteObject'
return self.make_action('delete', icon='trash', url=self.default_delete_url, **kwargs)
@ -2917,7 +2878,7 @@ class MasterView(View):
mapper = orm.object_mapper(row)
except orm.exc.UnmappedInstanceError:
try:
if isinstance(self.model_key, six.string_types):
if isinstance(self.model_key, str):
return {self.model_key: row[self.model_key]}
return dict([(key, row[key])
for key in self.model_key])
@ -3134,12 +3095,8 @@ class MasterView(View):
"""
if fmt == 'csv':
if six.PY2:
csv_file = open(path, 'wb')
writer = UnicodeDictWriter(csv_file, fields, encoding='utf_8')
else: # PY3
csv_file = open(path, 'wt', encoding='utf_8')
writer = csv.DictWriter(csv_file, fields)
csv_file = open(path, 'wt', encoding='utf_8')
writer = csv.DictWriter(csv_file, fields)
writer.writeheader()
def write(obj, i):
@ -3229,7 +3186,7 @@ class MasterView(View):
if value is None:
value = ''
else:
value = six.text_type(value)
value = str(value)
csvrow[field] = value
@ -3297,13 +3254,8 @@ class MasterView(View):
results = results.with_session(session).all()
fields = self.get_csv_fields()
if six.PY2:
csv_file = open(path, 'wb')
writer = UnicodeDictWriter(csv_file, fields, encoding='utf_8')
else: # PY3
csv_file = open(path, 'wt', encoding='utf_8')
writer = csv.DictWriter(csv_file, fields)
csv_file = open(path, 'wt', encoding='utf_8')
writer = csv.DictWriter(csv_file, fields)
writer.writeheader()
def write(obj, i):
@ -3663,12 +3615,8 @@ class MasterView(View):
if fmt == 'csv':
if six.PY2:
csv_file = open(path, 'wb')
writer = UnicodeDictWriter(csv_file, fields, encoding='utf_8')
else: # PY3
csv_file = open(path, 'wt', encoding='utf_8')
writer = csv.DictWriter(csv_file, fields)
csv_file = open(path, 'wt', encoding='utf_8')
writer = csv.DictWriter(csv_file, fields)
writer.writeheader()
def write(obj, i):
@ -3737,7 +3685,7 @@ class MasterView(View):
if value is None:
value = ''
else:
value = six.text_type(value)
value = str(value)
csvrow[field] = value
@ -3814,7 +3762,7 @@ class MasterView(View):
value = getattr(row, field, None)
if isinstance(value, GPC):
value = six.text_type(value)
value = str(value)
elif isinstance(value, datetime.datetime):
# datetime values we provide to Excel must *not* have time zone info,
@ -3844,14 +3792,9 @@ class MasterView(View):
writer.writerow(self.get_row_csv_row(row, fields))
response = self.request.response
filename = self.get_row_results_csv_filename(obj)
if six.PY3:
response.text = data.getvalue()
response.content_type = 'text/csv'
response.content_disposition = 'attachment; filename={}'.format(filename)
else:
response.body = data.getvalue()
response.content_type = b'text/csv'
response.content_disposition = b'attachment; filename={}'.format(filename)
response.text = data.getvalue()
response.content_type = 'text/csv'
response.content_disposition = 'attachment; filename={}'.format(filename)
data.close()
response.content_length = len(response.body)
return response
@ -3898,7 +3841,7 @@ class MasterView(View):
if isinstance(value, datetime.datetime):
# TODO: this assumes value is *always* naive UTC
value = localtime(self.rattail_config, value, from_utc=True)
csvrow[field] = '' if value is None else six.text_type(value)
csvrow[field] = '' if value is None else str(value)
return csvrow
def get_row_csv_row(self, row, fields):
@ -3911,7 +3854,7 @@ class MasterView(View):
if isinstance(value, datetime.datetime):
# TODO: this assumes value is *always* naive UTC
value = localtime(self.rattail_config, value, from_utc=True)
csvrow[field] = '' if value is None else six.text_type(value)
csvrow[field] = '' if value is None else str(value)
return csvrow
##############################
@ -3966,7 +3909,7 @@ class MasterView(View):
"""
Return a "pretty" title for the instance, to be used in the page title etc.
"""
return six.text_type(instance)
return str(instance)
@classmethod
def get_form_factory(cls):
@ -4078,7 +4021,6 @@ class MasterView(View):
'readonly': self.viewing,
'model_class': getattr(self, 'model_class', None),
'action_url': self.request.current_route_url(_query=None),
'use_buefy': self.get_use_buefy(),
'assume_local_times': self.has_local_times,
'route_prefix': route_prefix,
'can_edit_help': (self.has_perm('edit_help')
@ -4547,7 +4489,6 @@ class MasterView(View):
'readonly': self.viewing,
'model_class': getattr(self, 'model_row_class', None),
'action_url': self.request.current_route_url(_query=None),
'use_buefy': self.get_use_buefy(),
}
if self.creating:
kwargs.setdefault('cancel_url', self.request.get_referrer())
@ -4644,7 +4585,7 @@ class MasterView(View):
# collect any uploaded files
uploads = {}
for key, value in six.iteritems(data):
for key, value in data.items():
if isinstance(value, cgi_FieldStorage):
tempdir = tempfile.mkdtemp()
filename = os.path.basename(value.filename)
@ -4829,13 +4770,13 @@ class MasterView(View):
value = data.get(name)
if simple.get('type') is bool:
value = six.text_type(bool(value)).lower()
value = str(bool(value)).lower()
elif simple.get('type') is int:
value = six.text_type(int(value or '0'))
value = str(int(value or '0'))
elif value is None:
value = ''
else:
value = six.text_type(value)
value = str(value)
# only want to save this setting if we received a
# value, or if empty values are okay to save