|
|
@ -1,13 +1,13 @@ |
|
|
|
html_field = u''' |
|
|
|
html_field = u''' |
|
|
|
<li class="{classes}"> |
|
|
|
<li class="{classes}"> |
|
|
|
<p class="form-field-title">{title}</p> |
|
|
|
<p class="form-field-title">{title}</p> |
|
|
|
<p class="form-field-input">{input} <span class="error">{errors}</span></p> |
|
|
|
<p class="form-field-input">{h_input} <span class="error">{errors}</span></p> |
|
|
|
</li> |
|
|
|
</li> |
|
|
|
''' |
|
|
|
''' |
|
|
|
|
|
|
|
|
|
|
|
html_field_checkbox = u''' |
|
|
|
html_field_checkbox = u''' |
|
|
|
<li class="checkbox {classes}"> |
|
|
|
<li class="checkbox {classes}"> |
|
|
|
<p class="form-field-input">{input} <p class="form-field-title">{title}</p><span class="error">{errors}</span></p> |
|
|
|
<p class="form-field-input">{h_input} <p class="form-field-title">{title}</p><span class="error">{errors}</span></p> |
|
|
|
</li> |
|
|
|
</li> |
|
|
|
''' |
|
|
|
''' |
|
|
|
|
|
|
|
|
|
|
@ -15,12 +15,12 @@ html_field_checkbox = u''' |
|
|
|
class FormRender(): |
|
|
|
class FormRender(): |
|
|
|
field_tpl = { |
|
|
|
field_tpl = { |
|
|
|
"string": u'<input {required} type="text" name="{name}" value="{value}" size="{size}" class="{classes}" style="{style}" />', |
|
|
|
"string": u'<input {required} type="text" name="{name}" value="{value}" size="{size}" class="{classes}" style="{style}" />', |
|
|
|
"number": u'<input {required} type="number" min="{min}" max="{max}" name="{name}" value="{value}" class="{classes}" style="{style}" />', |
|
|
|
"number": u'<input {required} type="number" min="{minval}" max="{maxval}" name="{name}" value="{value}" class="{classes}" style="{style}" />', |
|
|
|
"integer": u'<input {required} type="number" min="{min}" max="{max}" name="{name}" value="{value}" class="{classes}" style="{style}" />', |
|
|
|
"integer": u'<input {required} type="number" min="{minval}" max="{maxval}" name="{name}" value="{value}" class="{classes}" style="{style}" />', |
|
|
|
"float": u'<input {required} type="number" min="{min}" max="{max}" step="any" name="{name}" value="{value}" class="{classes}" style="{style}" />', |
|
|
|
"float": u'<input {required} type="number" min="{minval}" max="{maxval}" step="any" name="{name}" value="{value}" class="{classes}" style="{style}" />', |
|
|
|
"date": u'<input {required} type="date" name="{name}" value="{value}" class="{classes}" style="{style}" />', |
|
|
|
"date": u'<input {required} type="date" name="{name}" value="{value}" class="{classes}" style="{style}" />', |
|
|
|
"file": u'<input {required} type="file" name="{name}" class="{classes}" style="{style}" />', |
|
|
|
"file": u'<input {required} type="file" name="{name}" class="{classes}" style="{style}" />', |
|
|
|
"password": u'<input {required} type="password" min="{min}" name="{name}" value="{value}" class="{classes}" style="{style}" />', |
|
|
|
"password": u'<input {required} type="password" min="{minval}" name="{name}" value="{value}" class="{classes}" style="{style}" />', |
|
|
|
"text": u'<textarea {required} name="{name}" rows="{rows}" cols="{cols}" style="{style}" class="{classes}">{value}</textarea>', |
|
|
|
"text": u'<textarea {required} name="{name}" rows="{rows}" cols="{cols}" style="{style}" class="{classes}">{value}</textarea>', |
|
|
|
"radio_option": u'<input {checked} type="radio" name="{name}" value="{value}" class="{classes} style="{style}"">{label}<br/>', |
|
|
|
"radio_option": u'<input {checked} type="radio" name="{name}" value="{value}" class="{classes} style="{style}"">{label}<br/>', |
|
|
|
"select_option": u'<option value="{value}" style="{style}" {selected}>{label}</option>', |
|
|
|
"select_option": u'<option value="{value}" style="{style}" {selected}>{label}</option>', |
|
|
@ -51,45 +51,63 @@ class FormRender(): |
|
|
|
|
|
|
|
|
|
|
|
return new_params |
|
|
|
return new_params |
|
|
|
|
|
|
|
|
|
|
|
def r_field(self, type, **kwargs): |
|
|
|
def r_field(self, field_type, **kwargs): |
|
|
|
params = self.cast_params(kwargs) |
|
|
|
params = self.cast_params(kwargs) |
|
|
|
method_name = 'r_field_{0}'.format(type) |
|
|
|
method_name = 'r_field_{0}'.format(field_type) |
|
|
|
method = getattr(self, method_name, None) |
|
|
|
method = getattr(self, method_name, None) |
|
|
|
return method(**params) |
|
|
|
return method(**params) |
|
|
|
|
|
|
|
|
|
|
|
def r_field_string(self, name, value, size=50, required=False, classes=[], style=""): |
|
|
|
def r_field_string(self, name, value, size=50, required=False, classes=None, style=""): |
|
|
|
|
|
|
|
if classes is None: |
|
|
|
|
|
|
|
classes = [] |
|
|
|
tpl = self.field_tpl['string'] |
|
|
|
tpl = self.field_tpl['string'] |
|
|
|
return tpl.format(name=name, value=value, size=size, required=required, classes=classes, style=style) |
|
|
|
return tpl.format(name=name, value=value, size=size, required=required, classes=classes, style=style) |
|
|
|
|
|
|
|
|
|
|
|
def r_field_number(self, name, value, min=None, max=None, required=False, classes=[], style=""): |
|
|
|
def r_field_number(self, name, value, minval=None, maxval=None, required=False, classes=None, style=""): |
|
|
|
|
|
|
|
if classes is None: |
|
|
|
|
|
|
|
classes = [] |
|
|
|
tpl = self.field_tpl['number'] |
|
|
|
tpl = self.field_tpl['number'] |
|
|
|
return tpl.format(name=name, value=value, min=min, max=max, required=required, classes=classes, style=style) |
|
|
|
return tpl.format(name=name, value=value, minval=minval, maxval=maxval, required=required, classes=classes, style=style) |
|
|
|
|
|
|
|
|
|
|
|
def r_field_integer(self, name, value, min=None, max=None, required=False, classes=[], style=""): |
|
|
|
def r_field_integer(self, name, value, minval=None, maxval=None, required=False, classes=None, style=""): |
|
|
|
|
|
|
|
if classes is None: |
|
|
|
|
|
|
|
classes = [] |
|
|
|
tpl = self.field_tpl['integer'] |
|
|
|
tpl = self.field_tpl['integer'] |
|
|
|
return tpl.format(name=name, value=value, min=min, max=max, required=required, classes=classes, style=style) |
|
|
|
return tpl.format(name=name, value=value, minval=minval, maxval=maxval, required=required, classes=classes, style=style) |
|
|
|
|
|
|
|
|
|
|
|
def r_field_float(self, name, value, min=None, max=None, required=False, classes=[], style=""): |
|
|
|
def r_field_float(self, name, value, minval=None, maxval=None, required=False, classes=None, style=""): |
|
|
|
|
|
|
|
if classes is None: |
|
|
|
|
|
|
|
classes = [] |
|
|
|
tpl = self.field_tpl['integer'] |
|
|
|
tpl = self.field_tpl['integer'] |
|
|
|
return tpl.format(name=name, value=value, min=min, max=max, required=required, classes=classes, style=style) |
|
|
|
return tpl.format(name=name, value=value, minval=minval, maxval=maxval, required=required, classes=classes, style=style) |
|
|
|
|
|
|
|
|
|
|
|
def r_field_date(self, name, value, required=False, classes=[], style=""): |
|
|
|
def r_field_date(self, name, value, required=False, classes=None, style=""): |
|
|
|
|
|
|
|
if classes is None: |
|
|
|
|
|
|
|
classes = [] |
|
|
|
tpl = self.field_tpl['date'] |
|
|
|
tpl = self.field_tpl['date'] |
|
|
|
return tpl.format(name=name, value=value, required=required, classes=classes, style=style) |
|
|
|
return tpl.format(name=name, value=value, required=required, classes=classes, style=style) |
|
|
|
|
|
|
|
|
|
|
|
def r_field_file(self, name, required=False, classes=[], style=""): |
|
|
|
def r_field_file(self, name, required=False, classes=None, style=""): |
|
|
|
|
|
|
|
if classes is None: |
|
|
|
|
|
|
|
classes = [] |
|
|
|
tpl = self.field_tpl['file'] |
|
|
|
tpl = self.field_tpl['file'] |
|
|
|
return tpl.format(name=name, required=required, classes=classes, style=style) |
|
|
|
return tpl.format(name=name, required=required, classes=classes, style=style) |
|
|
|
|
|
|
|
|
|
|
|
def r_field_password(self, name, value, min=None, required=False, classes=[], style=""): |
|
|
|
def r_field_password(self, name, value, minval=None, required=False, classes=None, style=""): |
|
|
|
|
|
|
|
if classes is None: |
|
|
|
|
|
|
|
classes = [] |
|
|
|
tpl = self.field_tpl['password'] |
|
|
|
tpl = self.field_tpl['password'] |
|
|
|
return tpl.format(name=name, value=value, min=min, required=required, classes=classes, style=style) |
|
|
|
return tpl.format(name=name, value=value, minval=minval, required=required, classes=classes, style=style) |
|
|
|
|
|
|
|
|
|
|
|
def r_field_text(self, name, value, rows=4, cols=80, required=False, classes=[], style=""): |
|
|
|
def r_field_text(self, name, value, rows=4, cols=80, required=False, classes=None, style=""): |
|
|
|
|
|
|
|
if classes is None: |
|
|
|
|
|
|
|
classes = [] |
|
|
|
tpl = self.field_tpl['text'] |
|
|
|
tpl = self.field_tpl['text'] |
|
|
|
return tpl.format(name=name, value=value, rows=rows, cols=cols, required=required, classes=classes, style=style) |
|
|
|
return tpl.format(name=name, value=value, rows=rows, cols=cols, required=required, classes=classes, style=style) |
|
|
|
|
|
|
|
|
|
|
|
def r_field_radio(self, name, value, options, classes=[], style=""): |
|
|
|
def r_field_radio(self, name, value, options, classes=None, style=""): |
|
|
|
|
|
|
|
if classes is None: |
|
|
|
|
|
|
|
classes = [] |
|
|
|
tpl_option = self.field_tpl['radio_option'] |
|
|
|
tpl_option = self.field_tpl['radio_option'] |
|
|
|
radio_elems = [] |
|
|
|
radio_elems = [] |
|
|
|
for o_value, o_label in options: |
|
|
|
for o_value, o_label in options: |
|
|
@ -100,10 +118,14 @@ class FormRender(): |
|
|
|
return u''.join(radio_elems) |
|
|
|
return u''.join(radio_elems) |
|
|
|
|
|
|
|
|
|
|
|
def r_field_checkbox(self, name, checked, classes='', style=""): |
|
|
|
def r_field_checkbox(self, name, checked, classes='', style=""): |
|
|
|
|
|
|
|
if classes is None: |
|
|
|
|
|
|
|
classes = [] |
|
|
|
tpl = self.field_tpl['checkbox'] |
|
|
|
tpl = self.field_tpl['checkbox'] |
|
|
|
return tpl.format(name=name, checked=checked, classes=classes, style=style) |
|
|
|
return tpl.format(name=name, checked=checked, classes=classes, style=style) |
|
|
|
|
|
|
|
|
|
|
|
def r_field_select(self, name, value, options, classes=[], style=""): |
|
|
|
def r_field_select(self, name, value, options, classes=None, style=""): |
|
|
|
|
|
|
|
if classes is None: |
|
|
|
|
|
|
|
classes = [] |
|
|
|
tpl_option = self.field_tpl['select_option'] |
|
|
|
tpl_option = self.field_tpl['select_option'] |
|
|
|
select_elems = [] |
|
|
|
select_elems = [] |
|
|
|
for o_value, o_label in options: |
|
|
|
for o_value, o_label in options: |
|
|
@ -115,13 +137,13 @@ class FormRender(): |
|
|
|
tpl = self.field_tpl['select'] |
|
|
|
tpl = self.field_tpl['select'] |
|
|
|
return tpl.format(name=name, select_elems=''.join(select_elems), classes=classes, style=style) |
|
|
|
return tpl.format(name=name, select_elems=''.join(select_elems), classes=classes, style=style) |
|
|
|
|
|
|
|
|
|
|
|
def r_form_line(self, type, title, input, classes, errors): |
|
|
|
def r_form_line(self, field_type, title, h_input, classes, errors): |
|
|
|
if type == 'checkbox': |
|
|
|
if field_type == 'checkbox': |
|
|
|
html = html_field_checkbox |
|
|
|
html = html_field_checkbox |
|
|
|
else: |
|
|
|
else: |
|
|
|
html = html_field |
|
|
|
html = html_field |
|
|
|
|
|
|
|
|
|
|
|
return (html.format(classes=' '.join(classes), |
|
|
|
return (html.format(classes=' '.join(classes), |
|
|
|
title=title, |
|
|
|
title=title, |
|
|
|
input=input, |
|
|
|
h_input=h_input, |
|
|
|
errors=u', '.join(errors))) |
|
|
|
errors=u', '.join(errors))) |
|
|
|