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!')
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')
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
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'
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="用户名密码错误")
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'
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': '删除成功'})
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)})
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': "用户不存在"})
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'}
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)
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'
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'))
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': '插入成功'})
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()
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])
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'
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'}
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')
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() #定义一个登录信号,用户登录进来后 #发送一个登录信号,就能监听这个信号 #在监听这个信号以后,就记录当前这个用户登录的信息
def admin_user_manager(): #查询所有用户信息 dbSession = db.session() userList = dbSession.query(User).all() return render_template('admin_userManager.html', userList=userList)
def undo_users(): db.session('TRUNCATE users;') db.session.commit()