Add basic support for performing / tracking app upgrades
also add `MasterView.executable` and friends
This commit is contained in:
parent
f476c696fd
commit
f5688f1f90
11 changed files with 386 additions and 26 deletions
|
@ -33,7 +33,7 @@ import sqlalchemy as sa
|
|||
from sqlalchemy import orm
|
||||
from sqlalchemy.ext.associationproxy import AssociationProxy, ASSOCIATION_PROXY
|
||||
|
||||
from rattail.util import prettify
|
||||
from rattail.util import prettify, pretty_boolean
|
||||
|
||||
import colander
|
||||
from colanderalchemy import SQLAlchemySchemaNode
|
||||
|
@ -42,6 +42,8 @@ from deform import widget as dfwidget
|
|||
from pyramid.renderers import render
|
||||
from webhelpers2.html import tags, HTML
|
||||
|
||||
from tailbone.util import raw_datetime
|
||||
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
@ -176,7 +178,7 @@ class Form(object):
|
|||
model_instance=None, model_class=None, labels={}, renderers={}, widgets={},
|
||||
action_url=None, cancel_url=None):
|
||||
|
||||
self.fields = fields
|
||||
self.fields = list(fields) if fields is not None else None
|
||||
self.schema = schema
|
||||
self.request = request
|
||||
self.readonly = readonly
|
||||
|
@ -274,9 +276,15 @@ class Form(object):
|
|||
self.readonly_fields.remove(key)
|
||||
|
||||
def set_type(self, key, type_):
|
||||
if type_ == 'codeblock':
|
||||
if type_ == 'datetime':
|
||||
self.set_renderer(key, self.render_datetime)
|
||||
elif type_ == 'boolean':
|
||||
self.set_renderer(key, self.render_boolean)
|
||||
elif type_ == 'codeblock':
|
||||
self.set_renderer(key, self.render_codeblock)
|
||||
self.set_widget(key, dfwidget.TextAreaWidget(cols=80, rows=8))
|
||||
else:
|
||||
raise ValueError("unknown type for '{}' field: {}".format(key, type_))
|
||||
|
||||
def set_renderer(self, key, renderer):
|
||||
self.renderers[key] = renderer
|
||||
|
@ -354,6 +362,16 @@ class Form(object):
|
|||
return ""
|
||||
return six.text_type(value)
|
||||
|
||||
def render_datetime(self, record, field_name):
|
||||
value = self.obtain_value(record, field_name)
|
||||
if value is None:
|
||||
return ""
|
||||
return raw_datetime(self.request.rattail_config, value)
|
||||
|
||||
def render_boolean(self, record, field_name):
|
||||
value = self.obtain_value(record, field_name)
|
||||
return pretty_boolean(value)
|
||||
|
||||
def render_codeblock(self, record, field_name):
|
||||
value = self.obtain_value(record, field_name)
|
||||
if value is None:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue