maidstone-hackspace/website/widgets/form.py

46 lines
1.9 KiB
Python

from scaffold.core.widget import base_widget
class control(base_widget):
def create(self, title, url, method='post', enctype="", button='submit', seperator=','):
self.title = title
self.url = url
self.seperator = seperator
self.method = method
self.button = button
self.enctype = enctype
self.content = []
return self
def append(self, label, name, placeholder='', value='', input_type='text'):
self.content.append((label, name, value, placeholder, input_type))
return self
def render(self):
htm='<form action="%s" method="%s" ><fieldset>' % (self.url, self.method)
if self.title:
htm += '<legend>%s</legend>' % self.title
for label, name, value, placeholder, input_type in self.content:
if input_type == 'hidden':
htm+='<input type="hidden" name="%s" value="%s">' % (name, value)
continue
if input_type == 'select':
htm += '<p><label for="%s">%s<select name="%s">' % (name, label, name)
for item in placeholder.split(self.seperator):
htm += '<option value="%s" %s>%s</option>' % (
item,
'selected="selected"' if item==value else '',
item)
htm += '</select></label></p>'
continue
checked = ''
if input_type == 'radio':
if placeholder == value:
checked = ' checked="checked"'
htm+='<p><label for="%s">%s<input type="%s" name="%s" placeholder="%s" value="%s"%s></label></p>' % (name, label, input_type ,name, placeholder, value, checked)
htm+='<p class="bottom full_width"><button type="submit">%s</button></p>' % self.button
htm+='</fieldset></form>'
return htm