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'))
Пример #3
0
    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
Пример #4
0
    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