Ejemplo n.º 1
0
def message():
	db.create_all()
	if request.values.get('Body', None).strip().lower() == 'register':
		user = Users.query.filter_by(number=request.values.get('From')).first()
		if user:
			user.active = 1
			db.session.commit()
		else:
			user = Users(request.values.get('From'))
			db.session.add(user)
			db.session.commit()

		resp = twilio.twiml.Response()
		resp.message("Confirmed! Stay tuned for dog and cat pics! Text \"pause\" to stop hearing from us :( .")
		return str(resp)
	elif request.values.get('Body', None).strip().lower() == 'pause':
		user = Users.query.filter_by(number=request.values.get('From')).first()
		if not user:
			resp = twilio.twiml.Response()
			resp.message("Hmm - you're not in our system! Want to sign up? Reply with \"register\"")
			return str(resp)
		else:
			user.active = 0
			db.session.commit()
			resp = twilio.twiml.Response()
			resp.message("You won't get any more messages - for now. Reply with \"register\" to start receiving again.")
			return str(resp)
	else:
		resp = twilio.twiml.Response()
		resp.message("Sorry - I don't understand that command!")
		return str(resp)
Ejemplo n.º 2
0
    def register_view(self):
        form = RegistrationForm(request.form)
        if request.method == 'POST' and form.validate():
            user = Users()

            user.username = form.username.data
            user.email = form.email.data
            user.roles = ','.join(form.role.data)
            # we hash the users password to avoid saving it as plaintext in the db,
            # remove to use plain text:
            user.password = generate_password_hash(form.password.data)

            Session.add(user)
            Session.commit()

            login.login_user(user)
            flash('Thanks for registering')
            return redirect(url_for('.index'))
        link = '<p>Already have an account? <a href="' + url_for('.login_view') + '">Click here to log in.</a></p>'
        form_roles = []
        roles = Session.query(Role).all()
        for role in roles:
            form_roles.append((role.key, role.name))
        form.role.choices = form_roles
        self._template_args['form'] = form
        self._template_args['link'] = link
        return super(MyAdminIndexView, self).index()
Ejemplo n.º 3
0
 def getUser(userId):
     user = Users.get(Users, userId)
     if user is None:
         return jsonify(Common.falseReturn(Common, None, '找不到数据'))
     else:
         return jsonify(Common.trueReturn(Common, Users.output(Users,
                                                               user)))
Ejemplo n.º 4
0
def disable_user(user_id):
    user = Users.get_user(user_id)
    user.is_active = False
    db.session.commit()

    users = Users.get_all_users()
    return render_template("admin/user_table.html", users=users)
Ejemplo n.º 5
0
    def post(self):
        # Get all values from signup form
        username = self.request.get("username")
        password = self.request.get("password")

        # Query DB for existing username
        userInDB = Users.gql("where name = :1", username).get()

        # If the username matches the DB query
        if userInDB:
            # Query DB to match password to username
            userPassword = Users.gql("where password = :1", password).get()

            # If the password matches, set cookie with user_id and redirect to welcome screen
            if userPassword:
                # Generate a cookie storing user_id
                self.response.headers.add_header('Set-Cookie', 'user_id=%s; Path=/' % str(userInDB.key().id()))
                self.redirect("/")

            # Throw error if password doesn't match
            else:
                error = "The username or password is incorrect."

                self.render('login.html', login = "******", error = error)

        # If the username doesn't match the DB query
        else:
            error = "The username or password is incorrect."

            self.render('login.html', login = "******", error = error)
Ejemplo n.º 6
0
def process_registration():
    """Register new user if email not already in db."""

    f_name = request.form.get('first_name')
    l_name = request.form.get('last_name')
    email = request.form.get('email')
    cell = request.form.get('cell')
    password_hash = request.form.get('password')
    cell_number = cell_verify(cell)  #verify cell number using Twilio API.
    #if cell verify returns error- then number is invalid.
    if cell_number == False:  #exception made for error to return false.
        flash("That is not a valid phone number, please try again!")
        return redirect('/register')
    # if user cell already exists, ask user to login.
    if Users.query.filter(Users.cell_number == cell_number).first():
        flash("That cell number already exists, please login.")
        return redirect('/login')
    else:  # if user cell does not exist, add to db
        user = Users(f_name=f_name,
                     l_name=l_name,
                     email=email,
                     cell_number=cell_number)
        user.set_password(password_hash)
        db.session.add(user)
        db.session.commit()
    #place user in session.
    session['user_name'] = user.f_name
    session['user_id'] = user.user_id
    # flash("Successfully logged in!"). #need to fix formating for flash messages
    return redirect('/user-page')
Ejemplo n.º 7
0
def result():
    if request.method == 'POST':
        try:
            if 'jabong' in request.form['url']:
                dict_price = jabong_find_price(request.form['url'])
                price = dict_price['price']

            elif 'amazon' in request.form['url']:
                dict_price = amazon_find_price(request.form['url'])
                price = dict_price['price']
            elif 'flipkart' in request.form['url']:
                dict_price = flipkart_find_price(request.form['url'])
                price = dict_price['price']

            elif 'myntra' in request.form['url']:
                dict_price = myntra_find_price(request.form['url'])
                price = dict_price['price']
            else:
                return render_template('not_found.html')

            url = request.form['url']
            email = request.form['mail']
            user = Users(email=email, price=price, url=url)
            user.save()
            return render_template('message.html')
        except:
            return render_template('not_found.html')
Ejemplo n.º 8
0
def main(loop,**kw):
	yield from orm.create_pools(loop = loop, pool_size=5, **kw)
	# s = yield from Users.findAll()
	# s[0].name='fanlizhou'
	# yield from s[0].update()
	user = Users(email='*****@*****.**', password='******', admin=0, name='ccc', image='about:_blank')
	yield from user.save()
Ejemplo n.º 9
0
def data():
    db.create_all()
    one = Users(name='MaxPayne', password='******')
    two = Users(name='GordonFreeman', password='******')
    db.session.add(one)
    db.session.add(two)
    db.session.commit()
    print('SUCCESS')
Ejemplo n.º 10
0
 def post():
     args = user_parser.parse_args()
     if not Users.email_is_unique(args['email'], None) or not Users.name_is_unique(args['name'], None):
         abort_user_not_unique()
     new_user = Users(name=args['name'], email=args['email'], password=args['password'])
     db.session.add(new_user)
     db.session.commit()
     return {'users': new_user.as_dict()}, 201
Ejemplo n.º 11
0
 def add_user():
     name = request.json['name']
     password = request.json['password']
     new_user = Users(name=name, password=password)
     db.session.add(new_user)
     db.session.commit()
     output = new_user.toDict()
     return json.dumps(output)
Ejemplo n.º 12
0
def registration():
    if request.method == 'POST':
        reg_data = json.loads(request.data)
        try:
            user = Users(**reg_data)
            user.save()
            return json.dumps({'success': True, 'user': user.id}), 200
        except:
            return json.dumps({'success': False}), 400
Ejemplo n.º 13
0
def updateUser(key):
    new = Users()
    data = request.json
    try:
        if new.updateDb(key, **data):
            return response_success, accepted
    except Exception as e:
        print(e)
    return response_failure, notfound
Ejemplo n.º 14
0
def add_users():
    try:
        data = request.get_json()
        u = Users()
        for key in data.keys():
            setattr(u,key,data[key])
        u.save()
        return jsonify({"message":"Usuario cadastrado com sucesso!"})
    except Exception as e:
        return jsonify({"message":"Falhou ao cadastrar: {}".format(e)})
Ejemplo n.º 15
0
 def deleteUser(userId):
     user = Users.get(Users, userId)
     if user is None:
         return jsonify(Common.falseReturn(Common, None, '找不到要删除的数据'))
     else:
         deleteRow = Users.delete(Users, userId)
         user = Users.get(Users, userId)
         if user is None:
             return getUsers()
         else:
             return jsonify(Common.falseReturn(Common, None, '删除失败'))
Ejemplo n.º 16
0
def start(bot, update):
    print(update)
    username = update.message.from_user.username
    name = update.message.from_user.first_name
    uid = update.message.from_user.id
    try:
        Users.get(Users.telegram_id == uid)
    except DoesNotExist:
        Users.create(telegram_id=uid, username=username, name=name)
    if uid in ADMINS:
        bot.sendMessage(uid, start_msg, disable_web_page_preview=True)
        return
    bot.sendMessage(uid, start_msg, disable_web_page_preview=True)
Ejemplo n.º 17
0
 def put(user_id):
     user = db.session.query(Users).filter(Users.id == user_id).one_or_none()
     if not user:
         abort_user_doesnt_exist(user_id)
     args = user_parser.parse_args()
     if not Users.email_is_unique(args['email'], user_id) or not Users.name_is_unique(args['name'], user_id):
         abort_user_not_unique()
     user.name = args['name']
     user.email = args['email']
     user.password = args['password']
     db.session.add(user)
     db.session.commit()
     return {'user': user.as_dict()}
Ejemplo n.º 18
0
 def addUser():
     user_name = request.form.get('user_name')
     user_password = request.form.get('user_password')
     user_nickname = request.form.get('user_nickname')
     user_email = request.form.get('user_email')
     user = Users(user_name=user_name,
                  user_password=user_password,
                  user_nickname=user_nickname,
                  user_email=user_email)
     result = Users.add(Users, user)
     if user.user_id:
         return getUser(user.user_id)
     else:
         return jsonify(Common.falseReturn(Common, None, result))
Ejemplo n.º 19
0
def start(bot, update):
    username = update.message.from_user.username
    name = update.message.from_user.first_name
    uid = update.message.from_user.id
    if user_data.get(uid):
        del user_data[uid]
    try:
        Users.get(Users.telegram_id == uid)
    except DoesNotExist:
        Users.create(telegram_id=uid, username=username, name=name)
    bot.sendMessage(uid,
                    'Привет! Выбирайте действие ' + emojize(':winking_face:'),
                    disable_web_page_preview=True,
                    reply_markup=ReplyKeyboardMarkup(start_keyboard))
    return ConversationHandler.END
Ejemplo n.º 20
0
def test():

    yield from orm.create_pool(loop=loop,
                               user='******',
                               password='******',
                               db='awesome')

    # u=Users(name='Test', email='*****@*****.**', passwd='1234567890', image='about:blank')
    u = Users(name='dflhuang',
              email='*****@*****.**',
              passwd='0123',
              image='about:blank',
              id='110')

    yield from u.save()
Ejemplo n.º 21
0
def createdb(init=True):
    """creer la base de donnee
    a partir de la liste des tables presentent dans le module
    models
    """
    import model
    from sqlobject import SQLObject, sqlhub
    from model import Users, Groupe, Role

    constraints = []

    for (name, table) in vars(model).iteritems():
        if (inspect.isclass(table)) and (issubclass(
                table, SQLObject)) & (table != SQLObject):
            if context.conf["sgbd"] == "postgresql":
                constraints.extend(
                    table.createTable(applyConstraints=False, ifNotExists=True)
                )  # True pour ne pas creer la table si elle existe deja
            else:
                table.createTable(ifNotExists=True)
            print "Creation de la table `" + name + '` OK'

    # Les contraintes ne sont ajoute qu'a la fin (pour postgresql)
    if context.conf["sgbd"] == "postgresql":
        if constraints:
            for constraint in constraints:
                if constraint:
                    sqlhub.processConnection.query(constraint)
    if not init:
        return

    #ajout d'un groupe par default, role et association (ne rien faire si il existe deja)
    if not list(Groupe.select(Groupe.q.nom == 'visiteur')):  #.
        groupe = Groupe(nom="visiteur")
    if not list(Role.select(Role.q.name == 'visiteur')):  #.
        role = Role(name="visiteur")
        groupe.addRole(role)

    #Ajout d'un groupe admin et d'un admin (ne rien faire si il existe deja)
    if not list(Users.select(Users.q.pseudo == 'admin')):  #.
        user = Users(nom="", prenom="", pseudo="admin", password="******")
        print "\n--> Creation d'un compte `admin` mot de passe : `nimda`"
        groupe = Groupe(nom="admin")
        role = Role(name="admin")
        groupe.addRole(role)
        user.addGroupe(groupe)

    print "Tables crees avec succes\n"
Ejemplo n.º 22
0
def signup():
    try:
        if request.method == 'POST':
            session['email'] = request.form['mail']
            email = request.form['mail']
            password = request.form['password']
            name = request.form['name']
            user = Users(password=password, email=email, name=name)
            user.save()
            fid = user.id
            return render_template('note.html', fid=fid, name=name)
        else:
            return render_template('signup.html')
    except:
        msg = "Email was already taken"
        return render_template('signup.html', msg=msg)
Ejemplo n.º 23
0
def recipes_list():
	username = current_user.get_id()
	recipes_filter = recipes
	recipes_ordered = recipes
	pred_rating = pd.Series([None]*recipes_ordered.shape[0], index = recipes_ordered.index)
	allergies = []
	if username != None:
		user = Users().getUser(username)
		allergiesAux = user['allergies']
		if isinstance(allergiesAux, list):
			allergies = allergiesAux
		else:
			allergies = allergiesAux.split(',')
	if request.method == 'POST':
		time = request.form['time']
		ingredients = request.form['ingredients']
		search = request.form['search']
		recipes_filter = recipeClass.getFilteredRecipes(search, time, ingredients,0, allergies)
		#filter
		if (len(search) > 0 and username!=None):
			recipes_ordered,pred_rating = recipeClass.getRecipesRecommender(recipes_filter,username,a)
		else:
			recipes_ordered = recipes_filter
			pred_rating = pd.Series([None]*recipes_ordered.shape[0], index = recipes_ordered.index)
	rating = 3
	#return render_template('recipes/index.html', recipes=recipes_filter.head(100), rating=rating)
	return render_template('recipes/index.html', recipes=recipes_ordered.head(100), rating=rating, pred_rating=pred_rating.head(100))
Ejemplo n.º 24
0
 def set_users(self, users):
     for person_id, display_name in users.items():
         self.session.merge(
             Users(person_id=person_id,
                   display_name=display_name,
                   collections=0))
     self.session.commit()
Ejemplo n.º 25
0
 def post(self):
     args = parser.parse_args()
     username = args['name']
     password = args['password']
     if not username:
         abort(404, message="please choose a name")
     new_user = username.lower()
     current = Users.query.filter_by(name=new_user).first()
     if current:
         abort(
             404,
             message="{} already exist. please choose another name".format(
                 new_user))
     if not password:
         abort(404, message="please choose a password")
     if len(password) < 6:
         abort(404,
               message=
               "please choose a password that has up to 5 or more letters")
     user = Users(name=new_user, password=generate_password_hash(password))
     db.session.add(user)
     db.session.commit()
     return jsonify({
         "message": "{} registered successfully".format(new_user),
         'status_code': "200"
     })
Ejemplo n.º 26
0
 def get(self):
     user_id = self.request.cookies.get('user_id', False)
     user = Users.get_by_id(int(user_id))
     if user_id:
         self.render('welcome.html', username = user.name)
     else:
         self.render('signup.html')
Ejemplo n.º 27
0
def signup():
    form = SignupForm()
    session['mssg'] = ""
    if form.validate_on_submit():
        user = Users.query.filter_by(email=form.email.data).first()
        if user is None:
            hashed_pass = generate_password_hash(form.password.data,
                                                 method='sha256')
            new_user = Users(username=form.username.data,
                             email=form.email.data,
                             password=hashed_pass)
            # user_table = UserTableCreator(form.email.data)
            # Base.metadata.create_all(engine)
            db.session.add(new_user)
            db.session.commit()
            db.session.close()
            return redirect(url_for('login'))
        else:
            session['mssg'] = "Email ID already in use. Please login"

            return render_template('register.html',
                                   form=form,
                                   subtitle="Signup",
                                   mssg=session['mssg'])

    return render_template('register.html',
                           subtitle="Signup",
                           form=form,
                           mssg=session['mssg']), 200
Ejemplo n.º 28
0
def db_write_user(data):
    summary = Users(**data)
    session.add(summary)

    # pushing data to db
    session.commit()
    session.close()
Ejemplo n.º 29
0
def createdb(init=True):
    """creer la base de donnee
    a partir de la liste des tables presentent dans le module
    models
    """
    import model
    from sqlobject import SQLObject, sqlhub
    from model import Users, Groupe, Role 
    
    constraints = []
        
    for (name, table) in vars(model).iteritems():
        if (inspect.isclass(table)) and (issubclass(table, SQLObject)) & (table != SQLObject):
            if context.conf["sgbd"] == "postgresql":
                constraints.extend(table.createTable(applyConstraints=False, ifNotExists=True)) # True pour ne pas creer la table si elle existe deja
            else:
                table.createTable(ifNotExists=True)   
            print "Creation de la table `"+name+'` OK'
    
    
    # Les contraintes ne sont ajoute qu'a la fin (pour postgresql)
    if context.conf["sgbd"] == "postgresql":
        if constraints:
            for constraint in constraints:
                if constraint:
                    sqlhub.processConnection.query(constraint)
    if not init:
        return 
    
    #ajout d'un groupe par default, role et association (ne rien faire si il existe deja)
    if not list(Groupe.select(Groupe.q.nom=='visiteur')):#.
        groupe = Groupe(nom="visiteur")
    if not list(Role.select(Role.q.name=='visiteur')):#.
        role = Role(name="visiteur")
        groupe.addRole(role)
    
    #Ajout d'un groupe admin et d'un admin (ne rien faire si il existe deja)
    if not list(Users.select(Users.q.pseudo=='admin')):#.
        user = Users(nom="", prenom="", pseudo="admin", password="******")
        print "\n--> Creation d'un compte `admin` mot de passe : `nimda`" 
        groupe = Groupe(nom="admin")
        role   = Role(name="admin")
        groupe.addRole(role)
        user.addGroupe(groupe)

    print "Tables crees avec succes\n"   
Ejemplo n.º 30
0
    def updateUser(userId):
        user = Users.get(Users, userId)
        if user is None:
            return jsonify(Common.falseReturn(Common, None, '找不到要修改的数据'))
        else:
            user_name = request.form.get('user_name')
            user_password = request.form.get('user_password')
            user_nickname = request.form.get('user_nickname')
            user_email = request.form.get('user_email')

            user.user_name = user_name
            user.user_password = user_password
            user.user_nickname = user_nickname
            user.user_email = user_email

            result = Users.update(Users)
            return getUser(user.user_id)
Ejemplo n.º 31
0
 def add_user(req_data):
     try:
         user = Users(req_data.name, req_data.email, req_data.password)
         db.session.add(user)
         db.session.commit()
         return {"message":"Data added successfully"}
     except Exception as e:
         print(e)
Ejemplo n.º 32
0
def createUser():
    user = Users()
    Users.startengine()
    try:
        user.create(**request.json)
    except Exception as e:
        print(e)
        user.rollback()
        return response_failure, invalid
    return response_success, created
Ejemplo n.º 33
0
def register():
    form = Register_Form()
    if form.validate_on_submit():
        user = Users(username=form.name.data, password=form.pwd.data)
        db.session.add(user)
        db.session.commit()
        flash('注册成功')
        return redirect(url_for('eNote.index'))
    return render_template('register.html', form=form)
Ejemplo n.º 34
0
def index():
    if request.method == 'POST':
        if not request.form['first_name'] or not request.form['last_name']:
            return input_not_found()
        else:
            User = Users(request.form['first_name'], request.form['last_name'])
            db.session.add(User)
            db.session.commit()
            return redirect(url_for('index'))
    return render_template('home.html', Users=Users.query.all())
Ejemplo n.º 35
0
 def get_all_users():
     users = Users.get_all()
     users_list = []
     for user in users:
         user_data = {}
         user_data['name'] = user.name
         user_data['email'] = user.email
         user_data['password'] = user.password
         users_list.append(user_data)
     return {"users": users_list}
Ejemplo n.º 36
0
def check_price():
    user_infos = Users.select().where(Users.mail_send == False)

    for user in user_infos:
        new_price = find_price(user.url)
        if 'amazon' in user.url:
            user_info = amazon_find_price(user.url)
        elif 'jabong' in user.url:
            user_info = jabong_find_price(user.url)
        elif 'myntra' in user.url:
            user_info = myntra_find_price(user.url)
        else:
            user_info = flipkart_find_price(user.url)
        new_price = price['price']
        if float(new_price) < float(user.price):
            content = "<h3>Hey price of your item {} is change from {} to {} click on {} and go shopping</h3>".format(
                user_info['product_title'], user.price, new_price, user.url)
            send_mail(user.email, content)
            query = Users.update(mail_send=True).where(Users.id == user.id)
            query.execute()
Ejemplo n.º 37
0
    def post(self):
        errors = {}

        # Get all values from signup form
        username = self.request.get("username")
        password = self.request.get("password")
        verify = self.request.get("verify")
        email = self.request.get("email")

        # Validate form data and return errors if invalid
        if not util.valid_username(username):
            errors["userError"] = "That isn't a valid username."
        if not util.valid_password(password):
            errors["passwordError"] = "That isn't a valid password."
        if not verify == password:
            errors["verifyError"] = "Your passwords don't match."
        if not util.valid_email(email):
            errors["emailError"] = "That isn't a valid email."

        # If errors exist render the page with the errors
        # If no errors exist redirect to welcome page 
        if errors:
            errors["userValue"] = username
            errors["emailValue"] = email

            self.render('signup.html', **errors)
        else:
            # Create the user entity with validated data
            if email:
                user = Users(name = username, password = password, email = email)
            else:
                user = Users(name = username, password = password)
            user.put()

            # Generate a cookie storing user_id
            self.response.headers.add_header('Set-Cookie', 'user_id=%s; Path=/' % str(user.key().id()))

            #self.render('/wikihome.html', home="active", logged_in=True)
            self.redirect('/')
Ejemplo n.º 38
0
def register_user(email, name, password, image=_DEFAULT_IMAGE):
	if not name or not name.strip():
		raise APIValueError('name')
	if not email or not _RE_EMAIL.match(email):
		raise APIValueError('email')
	if not password or _RE_SHA1.match(password):
		raise APIValueError('password')

	user = yield from Users.find('email=?',[email])
	if user:
		raise APIError('register:failed','email','Email is already used.')

	uid = next_id()
	sha1_password = '******' % (uid, password)
	user = Users(id=uid, name=name, email=email, password=hashlib.sha1(sha1_password.encode('utf-8')).hexdigest(),image=image)
	yield from user.save()

	r = aiohttp.web.Response()
	r.set_cookie(COOKIE_NAME, user2cookie(user, 86400), max_age=86400, httponly=True)
	user.password = '******'
	r.content_type = 'application/json'
	r.body = json.dumps(user, ensure_ascii=False).encode('utf-8')
	return r
Ejemplo n.º 39
0
 def check_auth(self, *args):
     self.userid, self.user_email, self.credentials = load_session_credentials(self)
     self.mirror_service = create_service('mirror', 'v1', self.credentials)
     if self.credentials:
         # validate credentials
         try:
             self.credentials.refresh(httplib2.Http())
             return handler_method(self, *args)
         except AccessTokenRefreshError:
             store_userdetails(self, '', '')
             credentials_entity = Credentials.get_by_key_name(self.userid)
             users_entity = Users.get_by_key_name(key_names=self.user_email)
             if users_entity:
                 users_entity.delete()
             if credentials_entity:
                 credentials_entity.delete()
     self.redirect('/auth')
Ejemplo n.º 40
0
def basic_authentication(token):
    # g.user = None
    # try:
    #     data = jwt.loads(token)
    # except:
    #     return False
    # if 'username' in data:
    #     g.user = data['username']
    #     return True
    # return False

    user = Users.verify_auth_token(token, session=db.session)
    if not user:
        user = db.session.query(Users).filter(Users.name == token).one_or_none()
        if not user:
            return False
    g.user = user
    return True
Ejemplo n.º 41
0
def cookie2user(cookie_str):
	if not cookie_str:
		return None
	try:
		L = cookie_str.split('-')
		if len(L) != 3:
			return None
		uid, expires, sha1 = L
		if int(expires) < time.time():
			return None
		user = yield from Users.find('id=?',[uid])
		if user is None:
			return None
		s = '%s-%s-%s-%s' % (uid, user.password, expires, _COOKIE_KEY)
		if sha1 != hashlib.sha1(s.encode('utf-8')).hexdigest():
			logging.info('invalid sha1')
			return None
		user.password = "******"
		return user
	except Exception as e:
		logging.exception(e)
		return None
Ejemplo n.º 42
0
def api_authenticate(email, password):
	if not email:
		raise APIValueError('email', 'Invalid email.')
	if not password:
		raise APIValueError('password','Invalid password.')

	user = yield from Users.find('email=?',[email])
	if not user:
		raise APIValueError('email','Email not exist.')

	#check password
	sha1 = hashlib.sha1()
	sha1.update(user.id.encode('utf-8'))
	sha1.update(b':')
	sha1.update(password.encode('utf-8'))
	if user.password != sha1.hexdigest():
		raise APIValueError('password','Invalid password')

	r = aiohttp.web.Response()
	r.set_cookie(COOKIE_NAME, user2cookie(user, 86400), max_age=86400, httponly=True)
	user.password = '******'
	r.content_type = 'application/json'
	r.body = json.dumps(user,ensure_ascii=False).encode('utf-8')
	return r
Ejemplo n.º 43
0
    def post(self):
        Utilities._init_handler(self)
        if self.empty_query_string('user_email', 'message'):
            self.render('add-to-timeline.html')
        else:
            user_email = self.get_parameter('user_email', None)
            logging.debug('Request Email (%s)' % user_email)
            user_entity = Users.get_by_key_name(key_names=user_email)
            if not user_entity:
                self.add_error('Unknown email address. Have you registered with the service ?')
            else:
                user_id = user_entity.credentials_key
                credentials = StorageByKeyName(Credentials, user_id, 'credentials').get()
                mirror_service = util.create_service('mirror', 'v1', credentials)

                credentials_valid = False
                # make sure credentials are valid
                try:
                    credentials.refresh(httplib2.Http())
                    credentials_valid = True
                except AccessTokenRefreshError:
                    # Access has been revoked.
                    util.store_userdetails(self, '', '')
                    credentials_entity = Credentials.get_by_key_name(self.userid)
                    user_entity_delete = Users.get_by_key_name(key_names=user_email)
                    if credentials_entity:
                        credentials_entity.delete()
                    if user_entity_delete:
                        user_entity_delete.delete()

                if credentials_valid:
                    message = self.get_parameter('message', None)
                    is_html = self.get_parameter('is_html', 'False') == 'True'
                    image_url = self.get_parameter('image_url', None)
                    image = self.get_parameter('image', None)

                    logging.info('Inserting timeline item for (%s)' % user_email)
                    body = {
                        'notification': {'level': 'DEFAULT'},
                        'menuItems': [
                            {'action': 'DELETE'}
                        ]
                    }
                    if is_html:
                        body['html'] = message
                    else:
                        body['text'] = message

                    if image_url:
                        if image_url.startswith('/'):
                            image_url = util.get_full_url(self, image_url)
                        resp = urlfetch.fetch(image_url, deadline=20)
                        media = MediaIoBaseUpload(io.BytesIO(resp.content), mimetype='image/jpeg', resumable=True)
                    elif image:
                        media = MediaIoBaseUpload(io.BytesIO(base64.b64decode(image)), mimetype='image/jpeg')
                    else:
                        media = None

                    # self.mirror_service is initialized in util.auth_required.
                    mirror_service.timeline().insert(body=body, media_body=media).execute()

                    self.add_parameter('success', True)
                    self.add_to_json('success', True)
                    logging.info('Successfully inserted timeline item for (%s)' % user_email)
                else:
                    self.add_error('Revoked Credentials.')

            self.render('add-to-timeline.html')
Ejemplo n.º 44
0
class DevfestCdhApi(remote.Service):

    def __init__(self):
        self.users = Users()
        self.quests = Quests()
        self.game = Game()

    """
        Users
    """
    @endpoints.method(message_types.VoidMessage, UsersCollection_m,
                      path='user', http_method='GET',
                      name='users.list')
    def users_list(self, unused_request):
        usrs = self.users.list()
        logging.info(usrs)
        return usrs

    QUERY = endpoints.ResourceContainer(
            message_types.VoidMessage,
            query=messages.StringField(1, variant=messages.Variant.STRING))

    @endpoints.method(QUERY, UsersCollection_m,
                      path='userSearch/{query}', http_method='GET',
                      name='users.search')
    def users_search(self, request):
        try:
            return self.users.search(request.query)
        except (IndexError, TypeError):
            raise endpoints.NotFoundException('User %s not found.' %
                                              (request.id))

    ID_RESOURCE = endpoints.ResourceContainer(
            message_types.VoidMessage,
            id=messages.IntegerField(1, variant=messages.Variant.INT64))


    @endpoints.method(ID_RESOURCE, User_m,
                      path='user/{id}', http_method='GET',
                      name='users.getUser')
    def user_get(self, request):
        try:
            return self.users.search(request.id)
        except (IndexError, TypeError):
            raise endpoints.NotFoundException('User %s not found.' %
                                              (request.id))

    MULTIPLY_METHOD_RESOURCE_QUEST = endpoints.ResourceContainer(
        user_id=messages.IntegerField(2, variant=messages.Variant.INT64, required=True),
        faction_id=messages.IntegerField(3, variant=messages.Variant.INT64, required=True)
    )

    @endpoints.method(MULTIPLY_METHOD_RESOURCE_QUEST, User_stats_m,
                      path='userStats/{user_id}', http_method='GET',
                      name='users.getUserStats')
    def user_stat(self, request):
        try:
            return self.users.get_stats(self.game, request.user_id, request.faction_id)
        except (IndexError, TypeError):
            raise endpoints.NotFoundException('User %s not found.' %
                                              (request.id))

    MULTIPLY_METHOD_RESOURCE = endpoints.ResourceContainer(User_m)
        # ,
        # name=messages.StringField(2, variant=messages.Variant.STRING,
        #                             required=True))

    @endpoints.method(MULTIPLY_METHOD_RESOURCE, User_m,
                      path='user', http_method='POST',
                      name='users.addUser')
    def user_add(self, request):
        return self.users.create(request.name, request.email) #, request.faction)
        #return User(name=request.name) #* request.name

    MULTIPLY_METHOD_RESOURCE_FACTION = endpoints.ResourceContainer(
        user_id=messages.IntegerField(2, variant=messages.Variant.INT64, required=True),
        faction_id=messages.IntegerField(3, variant=messages.Variant.INT64, required=True)
    )

    @endpoints.method(MULTIPLY_METHOD_RESOURCE_FACTION, User_m,
                      path='setFraction/{user_id}', http_method='POST',
                      name='users.setFaction')
    def user_set_fraction(self, request):
        return self.users.set_faction(self.game, request.user_id, request.faction_id)

    @endpoints.method(ID_RESOURCE, User_m,
                      path='user/{id}', http_method='DELETE',
                      name='users.delUser')
    def user_delete(self, request):
        try:
            return self.users.delete(request.id)
        except (IndexError, TypeError):
            raise endpoints.NotFoundException('User %s not found.' %
                                              (request.id,))

    """
        User Quests
    """
    MULTIPLY_METHOD_RESOURCE_QUEST = endpoints.ResourceContainer(
        user_id=messages.IntegerField(2, variant=messages.Variant.INT64, required=True),
        quest_id=messages.IntegerField(3, variant=messages.Variant.INT64, required=True)
    )

    @endpoints.method(ID_RESOURCE, SolvedQuestsCollection_m,
                      path='userPoints/{id}', http_method='GET',
                      name='users.getPoints')
    def user_get_points(self, request):
        # try:
        return self.users.get_points(request.id)
        # except (IndexError, TypeError):
        #     raise endpoints.NotFoundException('User %s not found.' %
        #                                       (request.id))

    @endpoints.method(ID_RESOURCE, SolvedQuestSum_m,
                      path='userPointsSum/{id}', http_method='GET',
                      name='users.getPointsSum')
    def user_get_points_sum(self, request):
        try:
            return self.users.get_points_sum_m(request.id)
        except (IndexError, TypeError):
            raise endpoints.NotFoundException('User %s not found.' %
                                              (request.id))

    MULTIPLY_METHOD_RESOURCE_POINTS = endpoints.ResourceContainer(
        user_id=messages.IntegerField(2, variant=messages.Variant.INT64, required=True),
        points=messages.IntegerField(3, variant=messages.Variant.INT64, required=True)
    )

    @endpoints.method(MULTIPLY_METHOD_RESOURCE_POINTS, SolvedQuest_m,
                      path='givePoints/{user_id}', http_method='POST',
                      name='users.givePoints')
    def user_give_points(self, request):
        return self.users.add_points(request.user_id, request.points)

    @endpoints.method(MULTIPLY_METHOD_RESOURCE_QUEST, SolvedQuest_m,
                      path='questSolved/{user_id}', http_method='POST',
                      name='users.questSolved')
    def user_quest_solved(self, request):
        try:
            return self.users.solve_quest(request.user_id, request.quest_id)
        except:
            raise endpoints.ForbiddenException('Quest solved or not in faction')

    """
        Quests
    """
    @endpoints.method(message_types.VoidMessage, QuestsCollection_m,
                      path='quest', http_method='GET',
                      name='quests.list')
    def quests_list(self, unused_request):
        return self.quests.list()

    ID_RESOURCE = endpoints.ResourceContainer(
            message_types.VoidMessage,
            id=messages.IntegerField(1, variant=messages.Variant.INT64)
    )

    @endpoints.method(ID_RESOURCE, QuestsCollection_m,
                      path='freactionQuest/{id}', http_method='GET',
                      name='quests.listFractionQuests')
    def quests_list_fraction(self, request):
        return self.quests.list_by_fraction(request.id)

    ID_RESOURCE = endpoints.ResourceContainer(
            message_types.VoidMessage,
            id=messages.IntegerField(1, variant=messages.Variant.INT64)
    )

    @endpoints.method(ID_RESOURCE, Quest_m,
                      path='quest/{id}', http_method='GET',
                      name='quests.getQuest')
    def quest_get(self, request):
        try:
            return self.quests.get(request.id)
        except (IndexError, TypeError):
            raise endpoints.NotFoundException('Quest %s not found.' %
                                              (request.id))

    MULTIPLY_METHOD_RESOURCE = endpoints.ResourceContainer(Quest_m)
        # ,
        # name=messages.StringField(2, variant=messages.Variant.STRING,
        #                             required=True))

    @endpoints.method(MULTIPLY_METHOD_RESOURCE, Quest_m,
                      path='quest', http_method='POST',
                      name='quests.addQuest')
    def quest_add(self, request):
        return self.quests.create(request.name, request.factionId, request.points, request.num)
        #return User(name=request.name) #* request.name

    @endpoints.method(ID_RESOURCE, Quest_m,
                      path='quest/{id}', http_method='DELETE',
                      name='quests.delQuest')
    def quest_delete(self, request):
        try:
            return self.quests.delete(request.id)
        except (IndexError, TypeError):
            raise endpoints.NotFoundException('Quest %s not found.' %
                                              (request.id,))

    """
        Game
    """
    @endpoints.method(message_types.VoidMessage, FactionStats_m,
                      path='stats', http_method='GET',
                      name='faction.Stats')
    def faction_stats_get(self, request):
        # try:
        return self.game.stats()
        # except (IndexError, TypeError):
        #     raise endpoints.NotFoundException('Quest %s not found.')

    ID_RESOURCE = endpoints.ResourceContainer(
            message_types.VoidMessage,
            id=messages.IntegerField(1, variant=messages.Variant.INT64))

    @endpoints.method(ID_RESOURCE, FactionFull_m,
                      path='factionHiring/{id}', http_method='GET',
                      name='faction.hiring')
    def faction_hiring(self, request):
        # try:
        return self.game.faction_hiring(request.id)
        # except (IndexError, TypeError):
        #     raise endpoints.NotFoundException('Quest %s not found.')

    LIMIT = endpoints.ResourceContainer(
            message_types.VoidMessage,
            limit=messages.IntegerField(1, variant=messages.Variant.INT64))

    @endpoints.method(LIMIT, Leaderboard_m,
                      path='leaderboard/{limit}', http_method='GET',
                      name='leaderboard.get')
    def leaderboard_get(self, request):
        try:
            return self.game.leaderboard(request.limit)
        except (IndexError, TypeError):
            raise endpoints.NotFoundException('Quest %s not found.')

    VALUE = endpoints.ResourceContainer(
            message_types.VoidMessage,
            value=messages.IntegerField(1, variant=messages.Variant.INT64))

    @endpoints.method(VALUE, FactionMinPoints_m,
                      path='factionMinPoints', http_method='POST',
                      name='faction.minPoints')
    def faction_min_points(self, request):
        # try:
        return self.game.set_min_faction_points(request.value)
        # except (IndexError, TypeError):
        #     raise endpoints.NotFoundException('Quest %s not found.')

    @endpoints.method(message_types.VoidMessage, FactionMinPoints_m,
                      path='factionMinPoints', http_method='GET',
                      name='faction.getMinPoints')
    def faction_get_min_points(self, ususedRequest):
        return self.game.get_min_faction_points_m()
Ejemplo n.º 45
0
 def __init__(self):
     self.users = Users()
     self.quests = Quests()
     self.game = Game()
Ejemplo n.º 46
0
    def get(self, id):
        json_friends = Users.get_friends(id)

        self.write(json_friends)