def movie_brief(): username = request.args.get('username') moviename = request.args.get('moviename') if moviename: # 查询该用户是否观看影片 with Database(database='recommend') as cursor: sql = "select * from user_movie where username='******'and moviename='%s'" % ( username, moviename) cursor.execute(sql) like = cursor.fetchone() # 如果有点击量加1 if like: sql = "update user_movie set record=record+1 where username='******' and moviename='%s';" % ( username, moviename) cursor.execute(sql) # 没有就将影片加入用户中 else: sql = "INSERT into user_movie values('%s', '%s', 1);" % ( username, moviename) cursor.execute(sql) # 返回点击的影片 with Database(database='recommend') as cursor: sql = "select * from movies where moviename='%s'" % moviename cursor.execute(sql) movie = cursor.fetchone() return render_template('brief.html', user=g.user, movie=movie) return render_template('brief.html', user=g.user, movie='')
def before_request(): # 登录页面清除session if request.path == url_for('login'): session.clear() else: # 获取session中的用户 username = session.get('username', None) if username: with Database(database='recommend') as cursor: # 查询session中的用户保存到g对象中 sql = "select * from users where username='******'" % username cursor.execute(sql) user = cursor.fetchone() user1 = Users(user[0], user[1]) g.user = user1 # 查找观看记录 sql = "select * from user_movie where username='******'" % g.user.username cursor.execute(sql) is_new = cursor.fetchall() # 判断是否是新用户 if is_new: # 查询session中的用户的推荐影片保存到g对象中 sql = "select movies.moviename,brief,type,path,image from movies " \ "where type=" \ "(select type from movies " \ "join user_movie on movies.moviename=user_movie.moviename " \ "where username='******' ORDER BY record desc LIMIT 1)limit 3;" \ % g.user.username cursor.execute(sql) movies = cursor.fetchall() # 保存已经有观看记录的用户推荐影片 g.movies = movies else: # 查找点击最多的3个影片 sql = "select movies.moviename,brief,type,path,image " \ "from movies join user_movie on movies.moviename=user_movie.moviename " \ "ORDER BY record desc limit 3;" cursor.execute(sql) movies = cursor.fetchall() # 保存新用户展示的影片 g.movies = movies else: with Database(database='recommend') as cursor: # 查找点击最多的3个影片 sql = "select movies.moviename,brief,type,path,image " \ "from movies join user_movie on movies.moviename=user_movie.moviename " \ "ORDER BY record desc limit 3;" cursor.execute(sql) movies = cursor.fetchall() # 保存未登录用户展示的影片 g.customer_movies = movies # 未登录时不能访问的路径,并重定向到登录页面 if request.path in vaild_path: return redirect(url_for('login'))
def register(): if request.method == 'POST': username = request.form.get('username') password = request.form.get('password') repassword = request.form.get('repassword') with Database(database='recommend') as cursor: sql = "select * from users where username='******'" % username cursor.execute(sql) is_exist = cursor.fetchone() # 判断用户是否存在 if not is_exist: if password == repassword and username != '' and len( password) >= 6: # 插入用户数据 sql = "insert into users values ('%s', '%s')" % (username, password) cursor.execute(sql) return redirect('/register_succeed') else: msg = '密码或账号不正确' return render_template('register.html', msg=msg) else: msg = '用户已存在' return render_template('register.html', msg=msg) return render_template('register.html')
def search(): if request.method == 'POST': moviename = request.form.get('moviename') # 查找影片名或影片类型 with Database('recommend') as cursor: sql = "select * from movies where moviename='%s' or type='%s'" % ( moviename, moviename) cursor.execute(sql) movies = cursor.fetchall() if session: return render_template('search.html', user=g.user, movies=movies) else: return render_template('search.html', user='', movies=movies) if session: return render_template('search.html', user=g.user, movies=g.movies) return render_template('search.html', user='', movies='')
def watch_history(): page = request.args.get('page', default=1) page = int(page) with Database(database='recommend') as cursor: sql = "select movies.moviename,brief,type,path,image " \ "from movies join user_movie on movies.moviename=user_movie.moviename " \ "where username='******' limit %d,%d" % (g.user.username, 3 * (page - 1), 3 * (page - 1) + 3) cursor.execute(sql) movies = cursor.fetchall() # 获取总页数 sql = "select count(*) from movies join user_movie on movies.moviename=user_movie.moviename where username='******'" % g.user.username cursor.execute(sql) movie_total_tuple = cursor.fetchone() movie_total = movie_total_tuple[0] last_page = math.ceil(movie_total / 3) return render_template('watch_history.html', user=g.user, page=page, last_page=last_page, movies=movies)
def movie_exhibition(): movie_type = request.args.get('type') page = request.args.get('page', default=1) page = int(page) with Database(database='recommend') as cursor: # 判断展示的类型 if movie_type == 'None' or movie_type == None: sql = "select * from movies limit %d,%d" % (3 * (page - 1), 3 * (page - 1) + 3) else: sql = "select * from movies where type='%s' limit %d,%d" % ( movie_type, (page - 1) * 3, (page - 1) * 3 + 3) cursor.execute(sql) movies = cursor.fetchall() # 获取总页数 if movie_type == 'None' or movie_type == None: sql = "select count(*) from movies" else: sql = "select count(*) from movies where type='%s'" % movie_type cursor.execute(sql) movie_total_tuple = cursor.fetchone() movie_total = movie_total_tuple[0] last_page = math.ceil(movie_total / 3) if session: return render_template('movie_exhibition.html', user=g.user, movies=movies, page=page, movie_type=movie_type, last_page=last_page) return render_template('movie_exhibition.html', user='', movies=movies, page=page, movie_type=movie_type, last_page=last_page)
def login(): if request.method == 'POST': username = request.form.get('username') password = request.form.get('password') with Database(database='recommend') as cursor: # 查询数据 sql = "select * from users where username='******'" % username cursor.execute(sql) user = cursor.fetchone() if user: user1 = Users(user[0], user[1]) # 判断用户与密码是否一致 if username == user1.username and password == user1.password: # 一致保存用户进session并查询推荐影片 session['username'] = username session['password'] = password return redirect(url_for('index')) else: return render_template('login.html', msg='账号或密码不正确', user='') else: return render_template('login.html', msg='账号或密码不正确', user='') return render_template('login.html', user='')
from util import Database from pdf2image import convert_from_bytes from bson import Binary from PIL import Image from pdf2image.exceptions import (PDFInfoNotInstalledError, PDFPageCountError, PDFSyntaxError) app = Flask(__name__, static_url_path='/static') app.secret_key = os.urandom(32) socketio = SocketIO(app) app.config["MONGO_DBNAME"] = os.environ["databaseName"] app.config["MONGO_URI"] = os.environ["mongoURI"] dbtools = Database.DBTools(app) lineStorage = { # Setup for temporary line storage may change depending on support for multiple pages # documentID : { # 'connectedUsers' : {request.sid}, # 'write' : {request.sid}, # 'lines' : [ # [page, x0, y0, x1, y1, lineWidth, 'rgba(r,g,b,a)' or 'e', highlighter?] # ] # } } connectedUsers = { # request.sid : documentID }
async def main(): async with Database('test', owner=True) as conn: await demo(conn)
async def db_connect(app, loop): app.db = Database('restaurant', owner=False) app.pool = await app.db.connect() await model.create_table_if_missing(app.pool) await app.db.add_listener('chan_patron', model.db_event)
from flask_restful import Api, Resource, reqparse from flask_httpauth import HTTPBasicAuth from flask_compress import Compress from util import Database from werkzeug.utils import secure_filename from requests.auth import HTTPDigestAuth import requests import hashlib from PIL import Image import io app = Flask(__name__, static_url_path="") api = Api(app) Compress(app) auth = HTTPBasicAuth() db = Database() @auth.get_password def get_password(username): return db.getPassword(username) @auth.error_handler def unauthorized(): # return 403 instead of 401 to prevent default browser dialog return make_response(jsonify({'message': 'Unauthorized access'}), 403) class RecipeListAPI(Resource): decorators = [auth.login_required]