Commit 9ba43b5a authored by Paul Brown's avatar Paul Brown

change editable list view widget for suggestions

parent e7d821ab
......@@ -86,77 +86,53 @@ class XEditableWidget(object):
kwargs['data-csrf'] = kwargs.pop("csrf", "")
# gets the first entry (subfield) from FieldList (field) and uses the
# subfield.type (`kwargs_` method) to determine kwargs
# subfield is the first entry (subfield) from FieldList (field)
subfield = field.entries[0]
try:
kwargs = getattr(self, 'kwargs_' + subfield.type)(subfield, kwargs)
except AttributeError:
raise Exception('Unsupported field type: %s' % (type(subfield),))
kwargs = self.get_kwargs(subfield, kwargs)
return HTMLString(
'<a %s>%s</a>' % (html_params(**kwargs), value)
)
def get_kwargs(self, subfield, kwargs):
"""
`kwargs_` methods are used to allow overriding XEditableWidget and
adding new kwargs_ methods for custom fields (without much code)
Return extra kwargs based on the subfield type.
"""
def kwargs_StringField(self, subfield, kwargs):
if subfield.type == 'StringField':
kwargs['data-type'] = 'text'
return kwargs
def kwargs_TextAreaField(self, subfield, kwargs):
elif subfield.type == 'TextAreaField':
kwargs['data-type'] = 'textarea'
kwargs['data-rows'] = '5'
return kwargs
def kwargs_BooleanField(self, subfield, kwargs):
elif subfield.type == 'BooleanField':
kwargs['data-type'] = 'select'
# data-source = dropdown options
kwargs['data-source'] = {'': 'False', '1': 'True'}
kwargs['data-role'] = 'x-editable-boolean'
return kwargs
def kwargs_Select2Field(self, subfield, kwargs):
elif subfield.type == 'Select2Field':
kwargs['data-type'] = 'select'
kwargs['data-source'] = dict(subfield.choices)
return kwargs
def kwargs_DateField(self, subfield, kwargs):
elif subfield.type == 'DateField':
kwargs['data-type'] = 'combodate'
kwargs['data-format'] = 'YYYY-MM-DD'
kwargs['data-template'] = 'YYYY-MM-DD'
return kwargs
def kwargs_DateTimeField(self, subfield, kwargs):
elif subfield.type == 'DateTimeField':
kwargs['data-type'] = 'combodate'
kwargs['data-format'] = 'YYYY-MM-DD HH:mm:ss'
kwargs['data-template'] = 'YYYY-MM-DD HH:mm:ss'
# x-editable-combodate uses 1 minute increments
kwargs['data-role'] = 'x-editable-combodate'
return kwargs
def kwargs_TimeField(self, subfield, kwargs):
elif subfield.type == 'TimeField':
kwargs['data-type'] = 'combodate'
kwargs['data-format'] = 'HH:mm:ss'
kwargs['data-template'] = 'HH:mm:ss'
kwargs['data-role'] = 'x-editable-combodate'
return kwargs
def kwargs_IntegerField(self, subfield, kwargs):
elif subfield.type == 'IntegerField':
kwargs['data-type'] = 'number'
return kwargs
def kwargs_FloatField(self, subfield, kwargs):
elif subfield.type in ['FloatField', 'DecimalField']:
kwargs['data-type'] = 'number'
kwargs['data-step'] = 'any'
return kwargs
def kwargs_DecimalField(self, subfield, kwargs):
return self.kwargs_FloatField(subfield, kwargs)
def kwargs_QuerySelectField(self, subfield, kwargs):
elif subfield.type in ['QuerySelectField', 'ModelSelectField']:
kwargs['data-type'] = 'select'
choices = {}
......@@ -166,7 +142,7 @@ class XEditableWidget(object):
except TypeError:
choices[str(choice._value())] = ""
kwargs['data-source'] = choices
return kwargs
else:
raise Exception('Unsupported field type: %s' % (type(subfield),))
def kwargs_ModelSelectField(self, subfield, kwargs):
return self.kwargs_QuerySelectField(subfield, kwargs)
return kwargs
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment