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",
        }
def play(request):
    obj = None
    user_id = None
    if request.POST:
        if "user_id" in request.COOKIES:
            user_id = request.COOKIES["user_id"]
            user = User.objects.get(id=user_id)
        else:
            user = User()
            user.save()
        if "image-data" in request.POST:
            obj = Drawing()
            obj.image = request.POST["image-data"]
        elif "caption" in request.POST:
            obj = Caption()
            obj.content = request.POST["caption"]
        if "previous-id" in request.POST:
            obj.previous_id = request.POST["previous-id"]

        obj.user = user
        obj.save()
    is_drawing = obj.__class__ == Caption
    response = render(request, 'index.html', {
        'drawing': is_drawing,
        'obj': obj
    })
    if user_id is None and request.POST:
        response.set_cookie("user_id", user.id)
    return response
Exemple #3
0
def sinalogin(request):
    """a method for sina login"""

    #use the access_token to get uid from sina server    
    #TODO:this appkey should be written in the conf file
    appkey = "2600055104"
    access_token = request.POST['access_token']
    payload = {'source': appkey, 'access_token': access_token}
    r = requests.get('https://api.weibo.com/2/account/get_uid.json', params = payload)
    response = r.json()
    if ("uid" in response):
        uid = str(response['uid'])
    else:
        result = __resultToJson('1', '', {})
        return HttpResponse(result, content_type = 'application/json')

    #get the userinfo according to the access_token and uid
    payload = {'source': appkey, 'access_token': access_token, 'uid': uid}
    r = requests.get('https://api.weibo.com/2/users/show.json', params = payload)
    userinfo = r.json()
    if ('name' in userinfo):
        count = User.objects.filter(uid = uid).count()
        if (count == 0):
            user = User(uid, userinfo['name'], userinfo['profile_image_url'])
            user.save()
        request.session["mid"] = uid
        result = __resultToJson('0', '', {'uid': uid, 'nickname': userinfo['name'], 'imageUrl': userinfo['profile_image_url']}) 
        return HttpResponse(result, content_type = 'application/json')
    else:
        result = __resultToJson('2', '', {})
        return HttpResponse(result, content_type = 'application/json')
Exemple #4
0
def qqlogin(request):
    """a method for qq login"""

    #use the access_token to get the openid from qq server
    access_token = request.POST['access_token']
    payload = {'access_token': access_token}
    r = requests.get("https://graph.qq.com/oauth2.0/me", params = payload)
    callback = r.text
    if (callback.find("openid") == -1):
        result = __resultToJson('1', '', {})
        return HttpResponse(result, content_type = 'application/json')

    try:
        openid = str(callback.split("{")[1].split("}")[0].split(",")[1].split(":")[1].split("\"")[1])
    except:
       result = __resultToJson('2', '', {})
       return HttpResponse(result, content_type = 'application/json')

    #get the userinfo according to the access_token and openid
    #TODO:this appid should be written in the conf file
    appid = "100510779"
    payload = {'access_token': access_token, 'oauth_consumer_key': appid, 'openid': openid}
    r = requests.get('https://graph.qq.com/user/get_user_info?', params = payload)
    userinfo = r.json()
    if ("nickname" in userinfo):
        count = User.objects.filter(uid = openid).count()
        if (count == 0):
            user = User(openid, userinfo['nickname'], userinfo['figureurl'])
            user.save()
        request.session['mid'] = openid
        result = __resultToJson('0', '', {'uid':openid, 'nickname': userinfo['nickname'], 'imageUrl': userinfo['figureurl']})
        return HttpResponse(result, content_type = 'application/json')
    else:
        result = __resultToJson('2', '', {})
        return HttpResponse(result, content_type = 'application/json')
Exemple #5
0
def register():
    # Imports the register form from the file forms.py
    form = RegisterForm(request.form)

    # When the form is submitted:
    if request.method == 'POST':
        if form.validate_on_submit():

            # Input that needs to be validated
            name = request.form['username']
            passwd = request.form['password']
            email = request.form['email']

            # Check that the username is a alphanumeric string
            # between 4 and 25 characters long (whitelist)
            if not re.search("^[0-9a-zA-Z]{4,25}$", name):
                flash('Username must contain 4-25 alphanumeric characters.')
                return redirect(url_for('auth.register'))

            # Check that the password is a alphanumeric string
            # between 6 and 40 characters long (whitelist)
            if not re.search("^[0-9a-zA-Z]{6,40}$", passwd):
                flash('Password must contain 6-40 alphanumeric characters.')
                return redirect(url_for('auth.register'))

            # Check that the email is a alphanumeric string
            # between 1 and 50 characters long (whitelist)
            # this one is less restrictive because email is never used
            if not re.search("^[0-9a-zA-Z@.]{5,50}$", email):
                flash('Wrong email.')
                return redirect(url_for('auth.register'))

            # Check that the username is not registered already
            exists = db.session.query(
                User.id).filter_by(username=name).scalar()
            if exists is not None:
                flash('Username already in use.')
                return redirect(url_for('auth.register'))

            # Check that the email is not registered already
            exists = db.session.query(User.id).filter_by(email=email).scalar()
            if exists is not None:
                flash('Email already in use.')
                return redirect(url_for('auth.register'))

            # User is registered in the DB
            user = User(username=name,
                        password=bcrypt.generate_password_hash(passwd),
                        email=email,
                        wins=0,
                        losses=0)
            db.session.add(user)
            db.session.commit()

            # Redirect to login
            flash('New user registered. Try to login.')
            return redirect(url_for('auth.login'))

    return render_template('auth/register.html', form=form)
Exemple #6
0
def create_room(nickname):
    room = Room(code=generate_room_code(), state=Room.WAITING)
    room.save()
    user = User(room=room,
                nickname=nickname,
                is_owner=True,
                unique_id=uuid.uuid4().__str__())
    user.save()
    return CreateRoomResult(room, user)
Exemple #7
0
def _create_new_user(rm, device_id):
    """
    Creates a new user and returns its instance
    :param rm:
    :param device_id:
    :return: user object (django model),
    """

    while True:
        try:

            with transaction.atomic():

                temp_room = Room.objects.select_for_update().filter(
                    id=rm.id).first()

                tablet_id = ConnectedTablet.objects.filter(
                    device_id=device_id).first().tablet_id

                player_id = temp_room.counter

                pseudo = parameters.pseudos[player_id]

                u = User(player_id=player_id,
                         pseudo=pseudo,
                         room_id=rm.id,
                         training_done=False,
                         score=0,
                         training_score=0,
                         state=game.room.state.states.WELCOME,
                         tablet_id=tablet_id)

                u.save()

                u.production_good = _get_user_production_good(rm, u)

                # prod i - 1 rule
                u.consumption_good = (u.production_good + 1) % rm.n_type

                u.save(update_fields=["production_good", "consumption_good"])

                temp_room.counter += 1
                temp_room.save(update_fields=['counter'])

                return u

        except (django.db.IntegrityError, django.db.OperationalError,
                django.db.utils.OperationalError, psycopg2.IntegrityError,
                psycopg2.OperationalError) as e:
            print("*" * 50)
            print("INTEGRITY ERROR" + "!" * 10)
            print(str(e))
            print("*" * 50)
            threading.Event().wait(1 + np.random.random() * 4)
            continue
Exemple #8
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for('main'))
    form = RegistrationForm()
    if form.validate_on_submit():
        hashed_password = bcrypt.generate_password_hash(form.password.data).decode('utf-8')
        user = User(username=form.username.data, password=hashed_password)
        db.session.add(user)
        db.session.commit()
        flash(f'Account created for {form.username.data}!', 'success')
        return redirect(url_for('login'))
    return render_template('register.html', form=form)
Exemple #9
0
def register(request):
    if request.GET:
        username = request.GET.get('username')
        pwd = request.GET.get('password')
        email = request.GET.get('email')

        u = User.objects.filter(UserName=username)
        if u:
            return HttpResponse("The name has already been used.")
        else:
            u = User(UserName=username, Password=pwd, Email=email)
            u.save()
            return HttpResponseRedirect("/game/")
Exemple #10
0
def insert_user(username, last_action):
    user = User(username=username,
                x=DEFAULT_X,
                y=DEFAULT_Y,
                map_id=DEFAULT_MAP,
                last_login=last_action,
                shirt=0,
                hair=0,
                skin=0,
                eyes=0,
                pants=0,
                shoes=0,
                hair_accessory=0)
    user.settings = {k: v[0] for k, v in SETTINGS.items()}
    db.session.add(user)
    db.session.commit()
    return user
Exemple #11
0
def join_room(roomCode, nickname):

    room = Room.objects.filter(code=roomCode).first()
    if not room:
        raise NotFound()

    if room.state == room.PLAYING:
        raise APIException(code=400)

    if room.user_set.count() > 8:
        raise APIException(code=400)

    user = User(room=room,
                nickname=nickname,
                is_owner=False,
                unique_id=uuid.uuid4().__str__())
    user.save()
    return JoinRoomResult(room, user)
Exemple #12
0
def create():
    form = CreateGame()
    if form.validate_on_submit():
        print(form.errors)
        noguess = form.guess_num.data
        username = form.username.data
        timeRem = form.timerem.data

        roomCode = genRoomCode()
        roomInst = Room(room_code=roomCode,
                        num_teams=2,
                        scorecard=False,
                        full_time=timeRem,
                        time_remaining=timeRem,
                        names_per=noguess,
                        roundNo=0,
                        ct=0,
                        timer_started=0,
                        game_started=0)
        db.session.add(roomInst)
        db.session.commit()
        room = Room.query.filter_by(room_code=roomCode).first()

        client = User(username=username,
                      room_id=room.id,
                      team=0,
                      play_order=0,
                      in_play=0)
        db.session.add(client)
        db.session.commit()

        user = User.query.filter_by(username=username, room_id=room.id).first()
        # getColours(form.teams_num.data)       # WILL ADD AT LATER DATE

        # Sets Cookie for User
        resp = make_response(redirect(url_for('addnames', roomCode=roomCode)))
        resp.set_cookie('user_id', str(user.id))
        return resp

    return render_template('create.html',
                           legend='Create a New Game',
                           form=form)
Exemple #13
0
    def setUp(self):
        db.create_all()

        # Add tester
        db.session.add(User(
            email = MAIN_TESTER['email'],
            password = generate_password_hash(MAIN_TESTER['password'], 'sha256'),
            nick = MAIN_TESTER['nick'],
            created = date.today()
        ))

        # Add tester's colony
        colony = Colony(
            name = MAIN_TESTER['colony_name'],
            owner = 1,
            created = date.today(),
            build_now = dict(),
            last_harvest = datetime.now()
        )
        colony.starter_pack()
        db.session.add(colony)

        db.session.commit()
Exemple #14
0
def home():
    form = JoinGame()
    if form.validate_on_submit():
        room = Room.query.filter_by(room_code=form.roomcode.data).first()
        if not room:
            flash(f'That is not a valid room code.', 'danger')
        else:
            username = form.username.data
            client = User(username=username,
                          room_id=room.id,
                          team=0,
                          play_order=0,
                          in_play=0)
            db.session.add(client)
            db.session.commit()

            # Sets Cookie for User
            resp = make_response(
                redirect(url_for('addnames', roomCode=form.roomcode.data)))
            resp.set_cookie('user_id', str(client.id))
            return resp

    return render_template('home.html', form=form, legend='Name Game')
Exemple #15
0
 def save_player(self, username, room):
     self.user = User(game=Game.objects.get(room_name=room),
                      username=username,
                      date_created=datetime.datetime.now())
     self.user.save()
     return self.user
Exemple #16
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