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 six
|
||||
|
||||
from rattail.db import model
|
||||
|
||||
import formalchemy as fa
|
||||
from pyramid.response import FileResponse
|
||||
from webhelpers2.html import HTML, tags
|
||||
|
||||
from tailbone import forms
|
||||
from tailbone.views import MasterView2 as MasterView
|
||||
from tailbone import forms2 as forms
|
||||
from tailbone.views import MasterView3 as MasterView
|
||||
|
||||
|
||||
class ExportMasterView(MasterView):
|
||||
|
@ -52,10 +54,16 @@ class ExportMasterView(MasterView):
|
|||
'record_count',
|
||||
]
|
||||
|
||||
form_fields = [
|
||||
'id',
|
||||
'created',
|
||||
'created_by',
|
||||
'record_count',
|
||||
]
|
||||
|
||||
def get_export_key(self):
|
||||
if hasattr(self, 'export_key'):
|
||||
return self.export_key
|
||||
return
|
||||
|
||||
def get_file_path(self, export, makedirs=False):
|
||||
return self.rattail_config.export_filepath(self.export_key,
|
||||
|
@ -78,29 +86,51 @@ class ExportMasterView(MasterView):
|
|||
|
||||
g.set_link('id')
|
||||
|
||||
def render_id(self, export, column):
|
||||
def render_id(self, export, field):
|
||||
return export.id_str
|
||||
|
||||
def _preconfigure_fieldset(self, fs):
|
||||
fs.id.set(label="ID", renderer=forms.renderers.BatchIDFieldRenderer)
|
||||
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_form(self, f):
|
||||
super(ExportMasterView, self).configure_form(f)
|
||||
|
||||
def configure_fieldset(self, fs):
|
||||
fields = [
|
||||
fs.id,
|
||||
fs.created,
|
||||
fs.created_by,
|
||||
fs.record_count,
|
||||
]
|
||||
# id
|
||||
f.set_readonly('id')
|
||||
f.set_renderer('id', self.render_id)
|
||||
f.set_label('id', "ID")
|
||||
|
||||
# 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:
|
||||
fields.append(fs.download)
|
||||
fs.configure(include=fields)
|
||||
# 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)
|
||||
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):
|
||||
uuid = self.request.matchdict['uuid']
|
||||
|
|
Loading…
Reference in a new issue