def index(): request_fields = request.vars.fields or 'default' ################################ The core ###################################### # Specify structured fields for the multi-line form layout. # A "None" indicates an empty line over which the precedent line spans if request_fields == 'default': fields = [['name', 'category'], ['code', 'keywords'], ['publish_start_date', None], ['publish_end_date', None], 'url', ['description', 'price'], [None, 'point'], 'memo'] elif request_fields == 'fields_2': fields = [['name', 'category'], None, ['code', 'keywords']] elif request_fields == 'fields_3': fields = [['name','category'], [None,'code'], [None,'keywords']] elif request_fields == 'fields_4': fields = [['id','name'], ['category','code'], [None,'keywords']] elif request_fields == 'fields_5': fields = [['name','category'], ['id','code'], [None,'keywords']] # Standard usage form = SOLIDFORM(db.product, fields=fields) # Factory usage form_factory = SOLIDFORM.factory([Field('xxx'), Field('yyy'), Field('zzz')], Field('aaa')) # Readonly usage product = db(db.product.id>0).select().first() form_readonly = SOLIDFORM(db.product, product, fields=fields, showid=False, readonly=True) # edit form form_edit = SOLIDFORM(db.product, product, fields=fields) ################################################################################ if form.accepts(request.vars, session): session.flash = 'submitted %s' % form.vars redirect(URL('index')) if form_factory.accepts(request.vars, session, formname='factory'): session.flash = 'submitted %s' % form_factory.vars redirect(URL('index')) style = STYLE("""input[type="text"], textarea {width:100%; max-height: 50px;} .w2p_fw {padding-right: 20px; max-width:200px;} .w2p_fl {background: #eee;}""") return dict(form=DIV(style, form), form__factory=form_factory, form__readonly=form_readonly, form__edit=form_edit, form_args=DIV(A('fields=default', _href=URL(vars={'fields':'default'})), ' ', A('fields=fields_2', _href=URL(vars={'fields':'fields_2'})), ' ', A('fields=fields_3', _href=URL(vars={'fields':'fields_3'})), ' ', A('fields=fields_4', _href=URL(vars={'fields':'fields_4'})), ' ', A('fields=fields_5', _href=URL(vars={'fields':'fields_5'})), ' ', ))
def contact(): from plugin_solidform import SOLIDFORM from plugin_notemptymarker import mark_not_empty def _send(to, subject, message): if MAIL_SERVER == 'logging': from gluon.tools import Mail mail = Mail() mail.settings.server = MAIL_SERVER mail.settings.sender = MAIL_SENDER mail.settings.login = MAIL_LOGIN return mail.send(to=to, subject=subject, message=message) else: import smtplib from email.MIMEText import MIMEText from email.Utils import formatdate msg = MIMEText(message) msg['Subject'] = subject msg['From'] = MAIL_SENDER msg['To'] = to msg['Date'] = formatdate() s = smtplib.SMTP(MAIL_SERVER) try: s.sendmail(MAIL_SENDER, [to], msg.as_string()) return True finally: s.close() return False fields = [ Field('name', label=T('Name'), requires=IS_NOT_EMPTY()), Field('email', label=T('Email'), requires=IS_EMAIL()), Field('subject', label=T('Subject'), requires=IS_LENGTH(200, 1)), Field('message', 'text', label=T('Message'), requires=IS_LENGTH(5000)), ] mark_not_empty(fields) form = SOLIDFORM.factory(submit_button=T('Send'), *fields) if form.accepts(request.vars, session): _send( to=CONTACT_TO, subject='sqlabs contact subject: %s' % form.vars.subject, message='name: %s\nemail: %s\nmessage: \n%s' % (form.vars.name, form.vars.email, form.vars.message), ) session.flash = '%s %s' % (T('Thank you for your inquiry.'), T('Your message has been sent.')) redirect(request.vars.redirect or URL('default', 'index')) style = STYLE(""".w2p_fl {background: #eee;}""") return dict(form=DIV(style, form))
def index(): request_fields = request.vars.fields or 'default' ################################ The core ###################################### # Specify structured fields for the multi-line form layout. # A "None" indicates an empty line over which the precedent line spans if request_fields == 'default': fields = [['name', 'category'], ['code', 'keywords'], ['publish_start_date', None], ['publish_end_date', None], 'url', ['description', 'price'], [None, 'point'], 'memo'] elif request_fields == 'fields_2': fields = [['name', 'category'], None, ['code', 'keywords']] elif request_fields == 'fields_3': fields = [['name', 'category'], [None, 'code'], [None, 'keywords']] elif request_fields == 'fields_4': fields = [['id', 'name'], ['category', 'code'], [None, 'keywords']] elif request_fields == 'fields_5': fields = [['name', 'category'], ['id', 'code'], [None, 'keywords']] # Standard usage form = SOLIDFORM(db.product, fields=fields) # Factory usage form_factory = SOLIDFORM.factory( [Field('xxx'), Field('yyy'), Field('zzz')], Field('aaa')) # Readonly usage product = db(db.product.id > 0).select().first() form_readonly = SOLIDFORM(db.product, product, fields=fields, showid=False, readonly=True) # edit form form_edit = SOLIDFORM(db.product, product, fields=fields) ################################################################################ if form.accepts(request.vars, session): session.flash = 'submitted %s' % form.vars redirect(URL('index')) if form_factory.accepts(request.vars, session, formname='factory'): session.flash = 'submitted %s' % form_factory.vars redirect(URL('index')) style = STYLE( """input[type="text"], textarea {width:100%; max-height: 50px;} .w2p_fw {padding-right: 20px; max-width:200px;} .w2p_fl {background: #eee;}""") return dict(form=DIV(style, form), form__factory=form_factory, form__readonly=form_readonly, form__edit=form_edit, form_args=DIV( A('fields=default', _href=URL(vars={'fields': 'default'})), ' ', A('fields=fields_2', _href=URL(vars={'fields': 'fields_2'})), ' ', A('fields=fields_3', _href=URL(vars={'fields': 'fields_3'})), ' ', A('fields=fields_4', _href=URL(vars={'fields': 'fields_4'})), ' ', A('fields=fields_5', _href=URL(vars={'fields': 'fields_5'})), ' ', ))