def post(self):
        """
        Create fake users for boxes
        :return: Boll
        """
        nn = datetime.utcnow()

        for u in ['teddy', 'pipocando']:
            local_user = User()
            local_user.id = u
            local_user.facebook_id = len(u)
            local_user.facebook_token = '098123098123'
            local_user.facebook_data = {'name': u}
            local_user.email = '{}@next.com'.format(u)
            local_user.name = u.capitalize()
            local_user.referral = u
            local_user.avatar = {'big': 'a', 'small': 'b'}
            local_user.created_at = nn
            self.db.sync(local_user)

            user_life = Life()
            user_life.user_id = local_user.id
            user_life.created_at = datetime.utcnow()
            self.db.sync(user_life)

            referral = ReferralRequest()
            referral.user_id = local_user.id
            referral.id = u
            referral.created_at = nn
            self.db.sync(referral)

        return {
            "message": "",
            "status": "success",
        }
Exemple #2
0
    def save_user(self, user):
        db = self.application.settings.get('engine')
        local_user = None
        pictures = {}

        referred_id = uuid4().hex

        try:
            big_picture = yield self.facebook_request(
                '/me/picture',
                type='square',
                width='200',
                height='200',
                redirect=False,
                access_token=user.get('access_token'))
            pictures['small'] = user.get('picture', {}).get('data',
                                                            {}).get('url')
            if 'data' not in big_picture.keys():
                big_picture = None
            else:
                pictures['big'] = big_picture.get('data', {}).get('url')
        except Exception as e:
            big_picture = None

        log.info(big_picture)

        try:
            local_user = db.query(User).filter(
                User.facebook_id == user.get('id')).one()
            log.info(local_user)
            if local_user and not local_user.avatar:
                local_user.avatar = pictures
                db.sync(local_user)
            life = local_user = db.query(Life).filter(
                Life.user_id == local_user.id).one()
            if life.last_dec:
                self.session['last_dec'] = life.last_dec

        except flywheel.query.EntityNotFoundException:
            try:
                email = user.get('email')
                if not email:
                    email = '{}@nomail.me'.format(user.get('id'))

                local_user = User()
                local_user.id = uuid4().hex
                local_user.facebook_id = int(user.get('id'))
                local_user.facebook_token = user.get('access_token')
                local_user.facebook_data = user
                local_user.email = email
                local_user.name = user.get('name')
                local_user.referral = referred_id
                local_user.avatar = pictures
                local_user.created_at = datetime.utcnow()
                db.sync(local_user)

                user_life = Life()
                user_life.user_id = local_user.id
                user_life.created_at = datetime.utcnow()
                db.sync(user_life)

                referral = ReferralRequest()
                referral.user_id = local_user.id
                referral.id = referred_id
                referral.created_at = datetime.utcnow()
                db.sync(referral)
            except Exception as e:
                log.error(e)
                raise

            self.referred(local_user, db)
            try:
                self.application.db_conn.get('ping').incr('user_count')
            except Exception as e:
                log.warn('User incr not completed: {}'.format(e))

            try:
                if 'nomail.me' not in local_user.email:
                    mail = self.application.settings.get('mailer')
                    path = '{}/assets'.format(
                        self.application.settings.get('instance',
                                                      {}).get('front'))
                    lShare = quote('{}/r/{}'.format(
                        self.application.settings.get('instance',
                                                      {}).get('api_email'),
                        referred_id))
                    log.info(lShare)
                    # faceid = self.application.settings.get('facebook_api_key')
                    mail.send(to=local_user.email,
                              format='html',
                              subject="Bem-vindo ao Desafio Next!",
                              body=self.render_string("template-welcome.html",
                                                      userName=local_user.name,
                                                      path=path,
                                                      shareFacebook=lShare,
                                                      shareTwitter=lShare))
                    log.info('Email sent')
                else:
                    log.warning('User has no mail')
            except Exception as e:
                log.warn('EMAIL ERROR: {}'.format(e))

        except Exception as e:
            raise e

        finally:
            return local_user