'The "context" is simply the metadata collection/bunch holding
this piece of metadata. This is passed in to allow for
metadata to validate against each other (note: this could turn
into a huge, recursive mess if not done with care). For
example, a column assignment should validate against the
number of columns in the dataset.'

def get_html(self, value, context=None, other_values=None, **kwd):

    context = (context or {})
    other_values = (other_values or {})
    if self.spec.get('readonly'):
        return value
    if self.spec.get('optional'):
        checked = False
        if value:
            checked = 'true'
        checkbox = form_builder.CheckboxField(('is_' + self.spec.name), checked=checked)
        return (checkbox.get_html() + self.get_html_field(value=value, context=context, other_values=other_values, **kwd).get_html())
    else:
        return self.get_html_field(value=value, context=context, other_values=other_values, **kwd).get_html()
