def test_validfullcodes(self): self.assertTrue(pluscodes.isValid('8FWC2345+G6') and pluscodes.isFull('8FWC2345+G6')) self.assertTrue(pluscodes.isValid('8FWC2345+G6G') and pluscodes.isFull('8FWC2345+G6G')) self.assertTrue(pluscodes.isValid('8fwc2345+') and pluscodes.isFull('8fwc2345+')) self.assertTrue(pluscodes.isValid('8FWCX400+') and pluscodes.isFull('8FWCX400+')) self.assertFalse(pluscodes.isShort('8FWCX400+')) self.assertFalse(pluscodes.isShort('8fwc2345+'))
def test_validshortcodes(self): self.assertTrue(pluscodes.isValid('WC2345+G6g') and pluscodes.isShort('WC2345+G6g')) self.assertTrue(pluscodes.isValid('2345+G6') and pluscodes.isShort('2345+G6')) self.assertTrue(pluscodes.isValid('45+G6') and pluscodes.isShort('45+G6')) self.assertTrue(pluscodes.isValid('+G6') and pluscodes.isShort('+G6')) self.assertFalse(pluscodes.isFull('45+G6')) self.assertFalse(pluscodes.isFull('WC2345+G6g'))
def post(self): if self.validate(self.request): gen_log.info('post authenticated successfully') else: gen_log.info('post authentication failed, remote ip ' + self.request.remote_ip) self.set_status(400) self.write('Bad Request') self.finish() return ev = self.get_argument('mandrill_events', False) if not ev: self.set_status(200) self.write({'status': 200}) self.finish() return ev = json.loads(ev, "utf-8") ev = ev[0] if not self.filter_ev(ev): self.set_status(200) self.write({'status': 200}) self.finish() return from_email = ev['msg']['from_email'] pluscode = ev['msg']['subject'] rclient = self.settings['rclient'] user = yield self.getuser(from_email) if user: if not pluscodes.isFull(pluscode): msg = { 'template_name': 'readdresspluscode', 'email': from_email, 'global_merge_vars': { 'outcome': "failed, provide correct plus+code" } } rclient.lpush('mailer', pickle.dumps(msg)) gen_log.info('message ' + str(msg)) self.set_status(200) self.write({'status': 200}) self.finish() return inbounddb = self.settings['inbounddb'] yield inbounddb.users.update({'actual': from_email}, {'$set': { 'pluscode': pluscode }}) msg = { 'template_name': 'readdresspluscode', 'email': from_email, 'global_merge_vars': { 'outcome': "succeeded, do keep it updated" } } rclient.lpush('mailer', pickle.dumps(msg)) gen_log.info('message ' + str(msg)) self.set_status(200) self.write({'status': 200}) self.finish() return else: msg = { 'template_name': 'readdresspluscode', 'email': from_email, 'global_merge_vars': { 'outcome': "failed, you haven't signed up yet, provide your correct plus+code during signup" } } rclient.lpush('mailer', pickle.dumps(msg)) gen_log.info('message ' + str(msg)) self.set_status(200) self.write({'status': 200}) self.finish() return
def post(self, sessionid): rclient = self.settings['rclient'] gen_log.info('sessionid ' + str(sessionid)) if not sessionid: self.render("sorry.html", reason="Invalid Session. This link is not valid") return session = rclient.get(sessionid) if not session: self.render("sorry.html", reason="Invalid Session. This link is not valid") return session = pickle.loads(session) if not session: self.render("sorry.html", reason="Invalid Session. This link is not valid") return pluscode = self.get_argument('pluscode', 'BADCODE') if not pluscodes.isFull(pluscode): self.render( "sorry.html", reason="Invalid Plus+Code. Please retry with correct code") return inbounddb = self.settings['inbounddb'] user = yield inbounddb.users.find_one({'actual': session['actual']}) utc_timestamp = datetime.datetime.utcnow() if user: yield inbounddb.users.update({'actual': session['actual']}, { '$set': { 'mapped': session['mapped'], 'pluscode': pluscode, 'name': session['name'], 'phone_verified': 'False', 'suspended': 'False', 'signup_time': utc_timestamp, 'verify_count': 0 } }) else: yield inbounddb.users.insert({ 'actual': session['actual'], 'mapped': session['mapped'], 'pluscode': pluscode, 'name': session['name'], 'phone_verified': 'False', 'suspended': 'False', 'verify_count': 0, 'signup_time': utc_timestamp }) rclient.delete(sessionid) self.set_status(200) reason = "Verificaton Sucessful. You can now use " + session[ 'mapped'] + " as email id." msg = { 'template_name': 'readdresswelcome', 'email': session['actual'], 'global_merge_vars': { 'name': session['name'], 'id': session['mapped'] } } rclient.lpush('mailer', pickle.dumps(msg)) gen_log.info('message ' + str(msg)) self.render("success.html", reason=reason) return