from wtforms.widgets import HTMLString, html_params from jinja2 import escape from mongoengine.fields import GridFSProxy, ImageGridFsProxy from flask_admin.helpers import get_url from . import helpers class MongoFileInput(object): """ Renders a file input chooser field. """ template = ('
' ' %(name)s %(size)dk (%(content_type)s)' ' Delete' '
') def __call__(self, field, **kwargs): kwargs.setdefault('id', field.id) placeholder = '' if field.data and isinstance(field.data, GridFSProxy): data = field.data placeholder = self.template % { 'name': escape(data.name), 'content_type': escape(data.content_type), 'size': data.length // 1024, 'marker': '_%s-delete' % field.name } return HTMLString('%s' % (placeholder, html_params(name=field.name, type='file', **kwargs))) class MongoImageInput(object): """ Renders a file input chooser field. """ template = ('
' ' ' ' Delete' '
') def __call__(self, field, **kwargs): kwargs.setdefault('id', field.id) placeholder = '' if field.data and isinstance(field.data, ImageGridFsProxy): args = helpers.make_thumb_args(field.data) placeholder = self.template % { 'thumb': get_url('.api_file_view', **args), 'marker': '_%s-delete' % field.name } return HTMLString('%s' % (placeholder, html_params(name=field.name, type='file', **kwargs)))