Esempio n. 1
0
def register():
    """
    Register new user with credentials passed in request body,
    or return JSON response with error explanation
    """
    username = request.json.get('username', None)
    password = request.json.get('password', None)
    if not username:
        return field_is_missing_message(field_type='Username'), 400
    if not password:
        return field_is_missing_message(field_type='Password'), 400
    # Trying to create User object. Handle bad format exceptions(See models)
    try:
        new_user = User(username, password)
    except NameError:
        # If username doesn't satisfy regex
        return jsonify({'error': 'Bad username format'}), 400
    except ValueError:
        # If password doesn't satisfy regex
        return jsonify({'error': 'Bad password format'}), 400
    # Trying to add new user to database.
    # Need to handle cases if user name already used
    try:
        db.session.add(new_user)
        db.session.commit()
        return user_schema.jsonify(new_user), 200
    except Exception:
        db.session().rollback()
        return jsonify({'error': 'User with such name already exists'}), 409
def get_loot_drops(id):
    if request.method == "GET":
        # We need to query for the number of likes a user has
        total_likes_on_all_drops = Like.query.with_entities(
            Like.loot_drop_id).filter(
                Like.loot_drop_creator_id == int(id)).all()
        likes = Counter(total_likes_on_all_drops)
        # We query the loot_drop table and return all the users loot drops
        loot_drops = Loot_Drop.query.filter(
            Loot_Drop.creator_id == int(id)).order_by(
                Loot_Drop.created_at.desc()).all()
        loot_drop_list = [drop.to_dict() for drop in loot_drops]
        # We call the wiki api for each the loot_items in the user has
        additional_info = []
        # We append the data from the api to the additional_info queue
        for loot_item in loot_drop_list:
            # we grab the loot drops id so we can count the likes/comments
            drop_id = loot_item['id']
            total_likes = dict(likes=likes[(drop_id, )])
            # We need to query for the number of comments a user has
            total_comments_on_all_drops = Comment.query.with_entities(
                Comment.loot_drop_id).filter(
                    Comment.loot_drop_id == drop_id).all()
            comments = Counter(total_comments_on_all_drops)
            total_comments = dict(comments=comments[(drop_id, )])
            # an item is the weapon, mod, shield, or artifact
            item = loot_item['loot_item']
            # we extract the name of the item here for use in the api
            item_name = item['item_name']
            # call to the api and append the data to the queue
            # additional_info.append(fetch_additional_info(item_name))
            # additional_info.append(total_likes)
            # additional_info.append(total_comments)
        # loot_drop_list.append(total_likes)
        # Once the queue is full we update it into the loot drop list
        # for loot_drop in loot_drop_list:
        # We pop the 3 things we pushed into the queue into the lootdrop
        # loot_drop.update(additional_info.pop(0))
        # loot_drop.update(additional_info.pop(0))
        # loot_drop.update(additional_info.pop(0))
        return jsonify(loot=loot_drop_list)
    else:
        data = request.json
        if not data:
            return ('You are here: Failed Request')
        # Generate and add new loot drop to db
        item_name = data['itemName']
        item = Loot.query.filter(Loot.item_name == item_name).all()
        loot_item = [loot.to_dict() for loot in item]
        # print(loot_item[0])
        loot = loot_item[0]
        # print(loot)
        new_drop = Loot_Drop(creator_id=int(id),
                             message=data['message'],
                             loot_id=(loot['id']),
                             level=65)
        db.session()
        db.session.add(new_drop)
        db.session.commit()
        return jsonify('success!')
Esempio n. 3
0
def sign_up():
    data = request.json

    # function to check sign-up and handle errors
    errors = validate_sign_up(data)
    if (len(errors) > 0):
        return jsonify({'validated': False, 'errors': errors})

    # Create a hashed password
    password = data['password'].encode()
    hashed_password = bcrypt.hashpw(
        password, bcrypt.gensalt(14)).decode('utf-8')

    # Generate and add new user to db
    new_user = User(name=data['name'],
                    email=data['email'],
                    hashed_password=hashed_password)
    db.session()
    db.session.add(new_user)
    db.session.commit()

    # create jwt to return
    jwt = create_jwt(new_user.to_dict())

    return jsonify({'validated': True, "user": new_user.to_dict(), "token": str(jwt)})
def sign_up():
    data = request.json
    errors = validate_sign_up(data)
    if (len(errors) > 0):
        return jsonify({'validated': False, 'errors': errors})

    # Create a hashed password
    password = data['password'].encode()
    hashed_password = bcrypt.hashpw(
        password, bcrypt.gensalt(14)).decode('utf-8')

    # Generate and add new user to db
    new_user = User(name=data['name'],
                    email=data['email'],
                    hashed_password=hashed_password)
    db.session()
    db.session.add(new_user)
    db.session.commit()

    # get user and create jwt to return
    user = User.query.filter(User.email == data['email']).first().to_dict()

    jwt = create_jwt(user)

    return jsonify({'validated': True, "user": user, "token": str(jwt)})
def post_comment():
    data = request.json
    new_comment = Comment(comments=data['comments'])
    db.session()
    db.session.add(new_comment)
    db.session.commit()
    return jsonify('Your comment was posted')
Esempio n. 6
0
def verify_auth_create(data):
    current_owner = get_jwt_identity()
    result = db.session().query(Dog).filter(
        Dog.owner_id == current_owner,
        Dog.id == data['dog_account_id']).first()

    return result
Esempio n. 7
0
def chanagePwd():
    data = request.form.to_dict()
    oldPassword = data.get('oldPassword', "").strip()
    newPassword = data.get('newPassword', "").strip()
    verifyPassword = data.get('verifyPassword', "").strip()
    userid = data.get('userId', 0)

    #根据用户id查该用户是否存在
    dbSession = db.session()
    userList = dbSession.query(User).filter(User.id == userid).all()
    if len(userList) > 0:
        user = userList[0]
        if user:
            #如果用户存在,再判断用户传来的新密码和确认密码是否一致,这个放在前端处理吧

            #判断oldpassword和数据库中的是否一致
            currentPwd = user.password
            if currentPwd == oldPassword:
                user.password = newPassword
                dbSession.commit()
                print('change pwd success')
                return 'change pwd success'
            else:
                print('old password wrong')
                return 'old password wrong'

    else:
        print('user is not exist')
        return 'user is not exist'
Esempio n. 8
0
def login():
    if request.method == 'GET':
        return render_template("login.html")
    else:
        data = request.form.to_dict()
        email = data.get('email', "").strip()
        password = data.get('password', "").strip()
        dbSession = db.session()
        user = dbSession.query(User).filter(
            and_(User.email == email, User.password == password)).first()
        if user:
            session['email'] = user.email
            session['name'] = user.name
            session['isadmin'] = user.isadmin
            session['id'] = user.id
            if user.isadmin == 0:
                return render_template('commonuser.html',
                                       role='普通用户',
                                       name=user.name,
                                       messagenum=100)
            else:
                return render_template('admin.html',
                                       role='管理员',
                                       name=user.name)
        else:
            flash('请检查用户名密码是否正确')
            return redirect(
                url_for('web.login'))  #('login.html',result="用户名密码错误")
Esempio n. 9
0
def getUserList():
    dbSession = db.session()
    userList = dbSession.query(User).all()
    for user in userList:
        print(
            str(user.id) + " " + user.name + " " + user.email + " " +
            user.password + " " + str(user.isadmin))
    return 'list success'
Esempio n. 10
0
def admin_device_manager_delete():
    if request.method == 'POST':
        idList = json.loads(request.form.get('data'))
        dbSession = db.session()
        deviceList = dbSession.query(Device).filter(
            Device.id.in_(idList)).all()
        for device in deviceList:
            dbSession.delete(device)
        dbSession.commit()

        return jsonify({'res': '删除成功'})
Esempio n. 11
0
def signup():
    data = request.json
    if not data:
        return ('You are here: Failed Request')
    # Create a hashed password
    password = data['password'].encode()
    hashed_password = bcrypt.hashpw(password,
                                    bcrypt.gensalt(14)).decode('utf-8')
    # Generate and add new user to db
    new_user = User(username=data['userName'],
                    email=data['email'],
                    hashed_password=hashed_password)
    db.session()
    db.session.add(new_user)
    db.session.commit()
    # get user and create jwt to return
    user = User.query.filter(User.email == data['email']).first().to_dict()
    jwt = create_jwt(user)
    # only commit the new user after everything passes with no errors
    return jsonify({"user": user, "token": str(jwt)})
Esempio n. 12
0
def admin_user_manager_delete():
    userid = json.loads(request.form.get('id'))
    #根据ID删除用户
    dbSession = db.session()
    user = dbSession.query(User).filter(User.id == userid).first()
    if user:
        dbSession.delete(user)
        dbSession.commit()
        return jsonify({'result': "删除成功"})
    else:
        return jsonify({'result': "用户不存在"})
Esempio n. 13
0
def delete():
    # create session to add and commit to
    s = db.session()

    card_id = int(request.data)

    s.query(Card).filter_by(id=card_id).delete()

    # commit deletion to database
    s.commit()
    return json.dumps({'success':True}), 200, {'ContentType':'application/json'}
Esempio n. 14
0
def admin_user_manager_search():
    keyword = json.loads(request.form.get("keyword"))
    dbSession = db.session()
    userList = dbSession.query(User).filter(
        or_(User.name.like('%%' + keyword + '%%'),
            User.email.like('%%' + keyword + '%%'))).all()
    res = []
    for user in userList:
        temp = {}
        temp['id'] = user.id
        temp['name'] = user.name
        temp['email'] = user.email
        temp['isadmin'] = user.isadmin
        res.append(temp)
    return jsonify(res=res)
Esempio n. 15
0
def deleteUser():
    data = request.form.to_dict()
    userid = data.get('userId', 0)
    dbSession = db.session()
    #1.根据id查看用户是否存在
    count = dbSession.query(User).filter(User.id == userid).count()
    if count > 0:
        user = dbSession.query(User).filter(User.id == userid).first()
        dbSession.delete(user)
        dbSession.commit()
        print('delete user success')
        return 'delete user success'
    else:
        print('user is not exist')
        return 'user is not exist'
Esempio n. 16
0
def register():
    if request.method == 'POST':
        data = request.form.to_dict()
        email = data.get('email', "").strip()
        name = data.get('name', "").strip()
        password = data.get('password', "").strip()
        verifyPassword = data.get('verifyPassword', "").strip()
        if (password == verifyPassword):
            #插入数据库
            dbSession = db.session()
            user = User(name=name, email=email, password=password, isadmin=0)
            dbSession.add(user)
            dbSession.commit()
            flash('注册成功,请登录')
            return redirect(url_for('web.login'))
        else:
            return redirect(url_for('web.register'))
Esempio n. 17
0
def admin_device_manager_add():
    if request.method == 'GET':
        return render_template('device-add.html')
    else:
        deviceType = json.loads(request.form.get('type'))
        devicename = request.form.get('devicename')
        sn = request.form.get('sn')
        pn = request.form.get('pn')
        rack = str(json.loads(request.form.get('rack')))
        u_number = request.form.get('u_number')
        user = request.form.get('user')
        isuse = json.loads(request.form.get('isuse'))
        dbSession = db.session()
        device = Device(type=deviceType,devicename=devicename,sn=sn,pn=pn,rack=int(rack),u_number=u_number,\
            user=user,isgood=isuse)
        dbSession.add(device)
        dbSession.commit()
        return jsonify({'res': '插入成功'})
Esempio n. 18
0
def save_to_db(source: str, data: Dict[str, Any]):
    if not data:
        return
    name = data.pop('name')
    tags = data.pop('tags')
    session = db.session()
    source = get_one_or_create(session, Source, name=source)
    author = create_or_get_one(session, Author, name=name)
    data['author_id'] = author.id
    article = upsert(session, Article, {'link': data['link']}, data)
    article.source_id = source.id
    new_tags = set()
    for tag in tags:
        tag = create_or_get_one(session, Tag, data=tag)
        new_tags.add(tag)
    article.tags = list(new_tags)
    session.flush()
    session.commit()
Esempio n. 19
0
def admin_device_manager():
    if session.get('email'):
        print(session.get('email'))
    else:
        return render_template('login.html')
    dbSession = db.session()
    if (request.method == 'GET'):
        deviceList = dbSession.query(Device).all()
        return render_template('admin_deviceManager.html',
                               deviceList=deviceList)
    if (request.method == 'POST'):
        keyword = request.form.get('keyword')
        if (keyword):
            deviceList = dbSession.query(Device).filter(or_(Device.sn.like('%%'+keyword+'%%'),\
                Device.type.like('%%'+keyword+'%%'),Device.user.like('%%'+keyword+'%%'))).all()
            return jsonify(
                deviceList=[device.get_serialize() for device in deviceList])
        else:
            deviceList = dbSession.query(Device).all()
            return jsonify(
                deviceList=[device.get_serialize() for device in deviceList])
Esempio n. 20
0
def searchUser():
    keyword = request.args.get('keyword')
    print(keyword)
    if keyword:
        dbSession = db.session()
        userList = dbSession.query(User).filter(
            or_(User.name.like('%%' + keyword + '%%'),
                User.email.like('%%' + keyword + '%%'))).all()
        print(
            str(
                dbSession.query(User).filter(
                    or_(User.name.like('%%' + keyword + '%%'),
                        User.email.like('%%' + keyword + '%%')))))
        if len(userList) > 0:
            for user in userList:
                print(
                    str(user.id) + " " + user.name + " " + user.email + " " +
                    user.password + " " + str(user.isadmin))
        return str(len(userList))

    else:
        print('parameter wrong')
        return 'parameter wrong'
Esempio n. 21
0
def save():
    # create session to add and commit to
    s = db.session()
    # get current userid
    userid = current_user.get_userid()

    new_cards = []

    for card in request.json:
        # retrieve card ID from JSON post request
        card_id = card["ID"]
        status = int(card["status"])
        header = card["header"]
        desc = card["desc"]

        # update card if already in database
        if card_id != "N" and card_id != "added":
            card_id = int(card_id)
            update_card = s.query(Card).filter_by(id=card_id).one()
            update_card.status = status
            update_card.header = header
            update_card.desc = desc

        # prevent new card from being added twice to database
        elif card_id == "added":
            pass

        # else add new card
        else:
            # add to list to be committed
            new_cards.append(Card(userid, status, header,desc))

    # commit any remaining session objects to database
    s.add_all(new_cards)
    s.commit()
    # return 200 if saving is successful
    return json.dumps({'success':True}), 200, {'ContentType':'application/json'}
Esempio n. 22
0
def admin_device_manager_update():
    if request.method == 'POST':
        id = json.loads(request.form.get('id'))
        deviceType = request.form.get('type')
        devicename = request.form.get('devicename')
        sn = request.form.get('sn')
        pn = request.form.get('pn')
        rack = json.loads(request.form.get('rack'))
        u_number = request.form.get('u_number')
        user = request.form.get('user')
        isgood = json.loads(request.form.get('isgood'))

        dbSession = db.session()
        device = dbSession.query(Device).filter(Device.id == id).first()
        device.type = deviceType
        device.devicename = devicename
        device.sn = sn
        device.pn = pn
        device.rack = rack
        device.u_number = u_number
        device.user = user
        device.isgood = isgood
        dbSession.commit()
        return jsonify({'res': '更新成功'})
def delete_comment():
    delete_comment = Comment(comment=data['comment'])
    db.session()
    db.session.delete(delete_comment)
    db.session.commit()
    return jsonify('Comment was deleted')
Esempio n. 24
0
from . import home
from flask import url_for, redirect, render_template, session, request, Request, jsonify
import os, base64, time, datetime
import random
from app.models import User, db, ShopCar
import json

Session = db.session()

from socket import *

# from blinker import Namespace
# from flask import request
#Namespace:命名空间

#定义信号
# dianshang = Namespace()
# fire_signal = dianshang.signal('fire')

#监听型号
# def fire_bullet(sender):
#     print(sender)
#     print('start fire bullet')
# fire_signal.connect(fire_bullet)

#发送一个信号
# fire_signal.send()

#定义一个登录信号,用户登录进来后
#发送一个登录信号,就能监听这个信号
#在监听这个信号以后,就记录当前这个用户登录的信息
Esempio n. 25
0
def admin_user_manager():
    #查询所有用户信息
    dbSession = db.session()
    userList = dbSession.query(User).all()
    return render_template('admin_userManager.html', userList=userList)
Esempio n. 26
0
def undo_users(): 
    db.session('TRUNCATE users;')
    db.session.commit()