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

change editable list view widget for suggestions

parent e7d821ab
...@@ -86,87 +86,63 @@ class XEditableWidget(object): ...@@ -86,87 +86,63 @@ class XEditableWidget(object):
kwargs['data-csrf'] = kwargs.pop("csrf", "") kwargs['data-csrf'] = kwargs.pop("csrf", "")
# gets the first entry (subfield) from FieldList (field) and uses the # subfield is the first entry (subfield) from FieldList (field)
# subfield.type (`kwargs_` method) to determine kwargs
subfield = field.entries[0] subfield = field.entries[0]
try:
kwargs = getattr(self, 'kwargs_' + subfield.type)(subfield, kwargs) kwargs = self.get_kwargs(subfield, kwargs)
except AttributeError:
raise Exception('Unsupported field type: %s' % (type(subfield),))
return HTMLString( return HTMLString(
'<a %s>%s</a>' % (html_params(**kwargs), value) '<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' kwargs['data-type'] = 'text'
return kwargs elif subfield.type == 'TextAreaField':
kwargs['data-type'] = 'textarea'
def kwargs_TextAreaField(self, subfield, kwargs): kwargs['data-rows'] = '5'
kwargs['data-type'] = 'textarea' elif subfield.type == 'BooleanField':
kwargs['data-rows'] = '5' kwargs['data-type'] = 'select'
return kwargs # data-source = dropdown options
kwargs['data-source'] = {'': 'False', '1': 'True'}
def kwargs_BooleanField(self, subfield, kwargs): kwargs['data-role'] = 'x-editable-boolean'
kwargs['data-type'] = 'select' elif subfield.type == 'Select2Field':
# data-source = dropdown options kwargs['data-type'] = 'select'
kwargs['data-source'] = {'': 'False', '1': 'True'} kwargs['data-source'] = dict(subfield.choices)
kwargs['data-role'] = 'x-editable-boolean' elif subfield.type == 'DateField':
return kwargs kwargs['data-type'] = 'combodate'
kwargs['data-format'] = 'YYYY-MM-DD'
def kwargs_Select2Field(self, subfield, kwargs): kwargs['data-template'] = 'YYYY-MM-DD'
kwargs['data-type'] = 'select' elif subfield.type == 'DateTimeField':
kwargs['data-source'] = dict(subfield.choices) kwargs['data-type'] = 'combodate'
return kwargs kwargs['data-format'] = 'YYYY-MM-DD HH:mm:ss'
kwargs['data-template'] = 'YYYY-MM-DD HH:mm:ss'
def kwargs_DateField(self, subfield, kwargs): # x-editable-combodate uses 1 minute increments
kwargs['data-type'] = 'combodate' kwargs['data-role'] = 'x-editable-combodate'
kwargs['data-format'] = 'YYYY-MM-DD' elif subfield.type == 'TimeField':
kwargs['data-template'] = 'YYYY-MM-DD' kwargs['data-type'] = 'combodate'
return kwargs kwargs['data-format'] = 'HH:mm:ss'
kwargs['data-template'] = 'HH:mm:ss'
def kwargs_DateTimeField(self, subfield, kwargs): kwargs['data-role'] = 'x-editable-combodate'
kwargs['data-type'] = 'combodate' elif subfield.type == 'IntegerField':
kwargs['data-format'] = 'YYYY-MM-DD HH:mm:ss' kwargs['data-type'] = 'number'
kwargs['data-template'] = 'YYYY-MM-DD HH:mm:ss' elif subfield.type in ['FloatField', 'DecimalField']:
# x-editable-combodate uses 1 minute increments kwargs['data-type'] = 'number'
kwargs['data-role'] = 'x-editable-combodate' kwargs['data-step'] = 'any'
return kwargs elif subfield.type in ['QuerySelectField', 'ModelSelectField']:
kwargs['data-type'] = 'select'
def kwargs_TimeField(self, subfield, kwargs):
kwargs['data-type'] = 'combodate' choices = {}
kwargs['data-format'] = 'HH:mm:ss' for choice in subfield:
kwargs['data-template'] = 'HH:mm:ss' try:
kwargs['data-role'] = 'x-editable-combodate' choices[str(choice._value())] = str(choice.label.text)
return kwargs except TypeError:
choices[str(choice._value())] = ""
def kwargs_IntegerField(self, subfield, kwargs): kwargs['data-source'] = choices
kwargs['data-type'] = 'number' else:
return kwargs raise Exception('Unsupported field type: %s' % (type(subfield),))
def kwargs_FloatField(self, subfield, kwargs):
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):
kwargs['data-type'] = 'select'
choices = {}
for choice in subfield:
try:
choices[str(choice._value())] = str(choice.label.text)
except TypeError:
choices[str(choice._value())] = ""
kwargs['data-source'] = choices
return kwargs return kwargs
def kwargs_ModelSelectField(self, subfield, kwargs):
return self.kwargs_QuerySelectField(subfield, 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