def send_msg(self, i, wyrform, pform=None): pol = self.pol captcha_src = (not i.get('captcha')) and get_captcha_src(pol) if captcha_src: set_captcha(wyrform, captcha_src) msg = 'Please fill in the captcha verification below' helpers.set_msg(msg, msg_type='note') raise CaptchaException email = '*****@*****.**' % (self.msg_id) try: msg_sent = writerep(pol=pol, prefix=i.prefix, lname=i.lname, fname=i.fname, addr1=i.addr1, addr2=i.addr2, city=i.city, zipcode=i.zipcode, zip4=i.zip4, phone=web.numify(i.phone), email=email, subject=i.ptitle, msg=i.msg, captcha=i.get('captcha', '')) except: msg_sent = False if not pform: update_user_details(i) return msg_sent
def POST(self): def pol_link(polid): p = db.select('politician', what='firstname, middlename, lastname', where='id=$polid', vars=locals())[0] return '<a href="/p/%s">%s %s %s</a>' % (polid, p.firstname or '', p.middlename or '', p.lastname or '') i = web.input() wf = forms.wyrform() pols = getpols(i.zip5, i.zip4, i.addr1+i.addr2) captcha_needed = require_captcha(i, pols) if not wf.validates(i) or captcha_needed: if captcha_needed: wf.valid, wf.note = False, 'Please fill the captcha below' wf.fill(i) return self.GET(wf) else: uid = auth.assert_login(i) update_user_details(i, uid) env = simplejson.loads(i.get('captcha_env', '{}')) status = writerep.send_msgs(uid, i, source_id='wyr', pols=pols, env=env) pol_str = ", ".join([pol_link(p) for p in pols]) helpers.set_msg('Your message has been sent to %s' % pol_str) raise web.seeother('/')