Refactor "exports" views to use master3
This commit is contained in:
parent
86cfc59d33
commit
09ba419ee3
|
@ -28,13 +28,15 @@ from __future__ import unicode_literals, absolute_import
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
import six
|
||||||
|
|
||||||
from rattail.db import model
|
from rattail.db import model
|
||||||
|
|
||||||
import formalchemy as fa
|
|
||||||
from pyramid.response import FileResponse
|
from pyramid.response import FileResponse
|
||||||
|
from webhelpers2.html import HTML, tags
|
||||||
|
|
||||||
from tailbone import forms
|
from tailbone import forms2 as forms
|
||||||
from tailbone.views import MasterView2 as MasterView
|
from tailbone.views import MasterView3 as MasterView
|
||||||
|
|
||||||
|
|
||||||
class ExportMasterView(MasterView):
|
class ExportMasterView(MasterView):
|
||||||
|
@ -52,10 +54,16 @@ class ExportMasterView(MasterView):
|
||||||
'record_count',
|
'record_count',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
form_fields = [
|
||||||
|
'id',
|
||||||
|
'created',
|
||||||
|
'created_by',
|
||||||
|
'record_count',
|
||||||
|
]
|
||||||
|
|
||||||
def get_export_key(self):
|
def get_export_key(self):
|
||||||
if hasattr(self, 'export_key'):
|
if hasattr(self, 'export_key'):
|
||||||
return self.export_key
|
return self.export_key
|
||||||
return
|
|
||||||
|
|
||||||
def get_file_path(self, export, makedirs=False):
|
def get_file_path(self, export, makedirs=False):
|
||||||
return self.rattail_config.export_filepath(self.export_key,
|
return self.rattail_config.export_filepath(self.export_key,
|
||||||
|
@ -78,29 +86,51 @@ class ExportMasterView(MasterView):
|
||||||
|
|
||||||
g.set_link('id')
|
g.set_link('id')
|
||||||
|
|
||||||
def render_id(self, export, column):
|
def render_id(self, export, field):
|
||||||
return export.id_str
|
return export.id_str
|
||||||
|
|
||||||
def _preconfigure_fieldset(self, fs):
|
def configure_form(self, f):
|
||||||
fs.id.set(label="ID", renderer=forms.renderers.BatchIDFieldRenderer)
|
super(ExportMasterView, self).configure_form(f)
|
||||||
fs.created_by.set(label="Created by", renderer=forms.renderers.UserFieldRenderer,
|
|
||||||
attrs={'hyperlink': True})
|
|
||||||
if self.export_has_file and self.viewing:
|
|
||||||
download = forms.renderers.FileFieldRenderer.new(
|
|
||||||
self, storage_path=self.rattail_config.export_filedir(self.export_key),
|
|
||||||
file_path=self.get_file_path(fs.model), download_url=self.get_download_url)
|
|
||||||
fs.append(fa.Field('download', renderer=download))
|
|
||||||
|
|
||||||
def configure_fieldset(self, fs):
|
# id
|
||||||
fields = [
|
f.set_readonly('id')
|
||||||
fs.id,
|
f.set_renderer('id', self.render_id)
|
||||||
fs.created,
|
f.set_label('id', "ID")
|
||||||
fs.created_by,
|
|
||||||
fs.record_count,
|
# created
|
||||||
]
|
f.set_readonly('created')
|
||||||
|
|
||||||
|
# created_by
|
||||||
|
f.set_readonly('created_by')
|
||||||
|
f.set_renderer('created_by', self.render_created_by)
|
||||||
|
f.set_label('created_by', "Created by")
|
||||||
|
|
||||||
|
# record_count
|
||||||
|
f.set_readonly('record_count')
|
||||||
|
|
||||||
|
# download
|
||||||
if self.export_has_file and self.viewing:
|
if self.export_has_file and self.viewing:
|
||||||
fields.append(fs.download)
|
# download = forms.renderers.FileFieldRenderer.new(
|
||||||
fs.configure(include=fields)
|
# self, storage_path=self.rattail_config.export_filedir(self.export_key),
|
||||||
|
# file_path=self.get_file_path(fs.model), download_url=self.get_download_url)
|
||||||
|
f.append('download')
|
||||||
|
f.set_renderer('download', self.render_download)
|
||||||
|
|
||||||
|
def render_download(self, export, field):
|
||||||
|
path = self.get_file_path(export)
|
||||||
|
text = "{} ({})".format(export.filename, self.readable_size(path))
|
||||||
|
url = self.request.route_url('{}.download'.format(self.get_route_prefix()), uuid=export.uuid)
|
||||||
|
return tags.link_to(text, url)
|
||||||
|
|
||||||
|
def render_created_by(self, export, field):
|
||||||
|
user = export.created_by
|
||||||
|
if not user:
|
||||||
|
return ""
|
||||||
|
text = six.text_type(user)
|
||||||
|
if self.request.has_perm('users.view'):
|
||||||
|
url = self.request.route_url('users.view', uuid=user.uuid)
|
||||||
|
return tags.link_to(text, url)
|
||||||
|
return text
|
||||||
|
|
||||||
def get_download_url(self, filename):
|
def get_download_url(self, filename):
|
||||||
uuid = self.request.matchdict['uuid']
|
uuid = self.request.matchdict['uuid']
|
||||||
|
|
Loading…
Reference in a new issue