def login(): user = User() username = request.form.get('username').strip() password = request.form.get('password').strip() vcode = request.form.get('vcode').lower().strip() # 校验图像验证码是否正确,0000用来做测试 if vcode != session.get('vcode') and vcode != '0000': return 'vcode-error' else: # 实现登录功能 # 密码加密 password = hashlib.md5(password.encode()).hexdigest() result = user.find_by_username(username) if len(result) == 1 and result[0].password == password: session['islogin'] = '******' session['userid'] = result[0].userid session['username'] = username session['nickname'] = result[0].nickname session['role'] = result[0].role # 更新积分详情表 Credit().insert_detail(type='正常登录', target='0', credit=1) user.update_credit(1) # 将Cookie写入浏览器,持久化存储 response = make_response('login-pass') response.set_cookie('username', username, max_age=30 * 24 * 3600) response.set_cookie('password', password, max_age=30 * 24 * 3600) return response else: return 'login-fail'
def register(): user = User() username = request.form.get('username').strip() password = request.form.get('password').strip() code = request.form.get('code').strip() if code != session.get('ecode'): print(code, session.get('ecode')) return 'ecode-error' elif not re.match('.+@.+\..+', username) or len(password) < 5: return 'up-invalid' elif len(user.find_by_username(username)) > 0: return 'user-repeated' else: password = hashlib.md5(password.encode()).hexdigest() result = user.do_regisiter(username, password) print(result) session['islogin'] = '******' session['userid'] = result.userid session['username'] = username session['nickname'] = result.nickname session['role'] = result.role Credit().insert_detail(type='用户注册', target='0', credit=50) return 'reg-pass'
def register(): user = User() username = str(request.form.get('username')).strip() nickname = str(request.form.get('nickname')).strip() password = str(request.form.get('password')).strip() ecode = str(request.form.get('ecode')).strip().lower() print("ecode=" + ecode) print("e_code=" + e_code) # 校验邮箱验证码 if ecode != e_code and ecode != '0000': return 'ecode-error' # 验证邮箱地址的正确性和密码的有效性 elif not re.match('.+@.+\..+', username) or len(password) < 6: return 'invalid' # 验证用户是否已被注册 elif len(user.find_by_username(username)) > 0: return 'user-repeated' else: # 进行注册 password = hashlib.md5(password.encode()).hexdigest() result = user.do_register(username, nickname, password) return 'reg-pass'
def login(): user = User() username = request.form.get('username').strip() password = request.form.get('password').strip() vcode = request.form.get('logincode').strip().lower() print(vcode, session.get('vcode')) if vcode != session.get('vcode') or vcode == 0000: return 'vcode-error' else: password = hashlib.md5(password.encode()).hexdigest() result = user.find_by_username(username) if len(result) == 1 and result[0].password == password: session['islogin'] = '******' session['userid'] = result[0].userid session['username'] = username session['nickname'] = result[0].nickname session['role'] = result[0].role # 更新积分表 Credit().insert_detail(type='正常登录', target='0', credit=1) user.update_credit(1) # 写入cookie response = make_response('login-pass') response.set_cookie('username', username, max_age=1 * 3600) response.set_cookie('password', password, max_age=1 * 3600) return response else: return 'login-fail'
def updatepwd(): user = User() username = request.form.get('username').strip() password = request.form.get('password').strip() ecode = request.form.get('ecode').strip() # 校验邮箱验证码是否正确 if ecode != session.get('ecode'): return 'ecode-error' # 验证邮箱地址的正确性和密码的有效性, 数据库中username是邮箱格式 elif not re.match('.+@.+\..+', username) or len(password) < 5: return 'up-invalid' else: # 实现修改密码功能 # 密码加密 password = hashlib.md5(password.encode()).hexdigest() result = user.do_updatepwd(username, password) session['islogin'] = '******' session['userid'] = result.userid session['username'] = username session['nickname'] = result.nickname session['role'] = result.role return 'updatepwd-pass'
def register(): user = User() username = request.form.get('username').strip() password = request.form.get('password').strip() ecode = request.form.get('ecode').strip() # 校验邮箱验证码是否正确 if ecode != session.get('ecode'): return 'ecode-error' # 验证邮箱地址的正确性和密码的有效性, 数据库中username是邮箱格式 elif not re.match('.+@.+\..+', username) or len(password) < 5: return 'up-invalid' # 验证用户是否已经注册 elif len(user.find_by_username(username)) > 0: return 'user-repeated' else: # 实现注册功能 # 密码加密 password = hashlib.md5(password.encode()).hexdigest() result = user.do_register(username, password) session['islogin'] = '******' session['userid'] = result.userid session['username'] = username session['nickname'] = result.nickname session['role'] = result.role # 更新积分详情表 Credit().insert_detail(type='用户注册', target='0', credit=50) return 'reg-pass'
def count_my_answer(): answer = Answer() user = User() username = request.args.get('username') idu = user.find_by_username(username=username)[0].id data = {} c_answer = answer.count_by_idu(idu=idu) c_upvote = answer.count_upvote_by_idu(idu=idu) ratio = 0 if c_answer != 0: ratio = round(c_upvote/c_answer, 2) data['c_answer'] = c_answer data['c_upvote'] = c_upvote data['ratio'] = ratio avg_answer = answer.count_avg() avg_upvote = answer.count_avg_upvote() avg_ratio = round(avg_upvote/avg_answer, 2) data['avg_answer'] = avg_answer data['avg_upvote'] = avg_upvote data['avg_ratio'] = avg_ratio return jsonify({'data': data})
def home(): if session.get('islogin') is None: username = request.cookies.get('username') password = request.cookies.get('password') if username != None and password != None: user = User() result = user.find_by_username(username) if len(result) == 1 and result[0].password == password: session['islogin'] = '******' session['userid'] = result[0].userid session['username'] = username session['nickname'] = result[0].nickname session['role'] = result[0].role article = Article() result = article.find_limit_with_user(0, 10) # print(result, end='---------------\n') total = math.ceil(article.get_total_count() / 10) # 向上取整 # 以下是在首页添加侧边栏的内容,side-jinja2.html中使用到,但是这种方式有一个缺陷: # 需要在每个HTML页面中引用引用一下代码,重复率高,改良版在:side.html中 last, most, recommended = article.find_most_recommended() return render_template('index-base.html', result=result, page=1, total=total, last=last, most=most, recommended=recommended)
def get_my_collection(): collection = Collection() user = User() question = Question() username = request.args.get("username") idu = user.find_by_username(username)[0].id res = collection.find_by_idu(idu=idu) data = [] for item in res: col = {} idq = item.idq q = question.find_by_id(id=idq) title = q.title category = q.category description = q.description view_count = q.view_count answer_count = q.answer_count collect_count = q.collect_count gmt_create = q.gmt_create col['idq'] = idq col['title'] = title col['category'] = category col['description'] = description col['view_count'] = view_count col['collect_count'] = collect_count col['answer_count'] = answer_count col['gmt_create'] = gmt_create data.append(col) return jsonify({'data': data})
def unban(): user = User() username = request.form.get('username') flag = user.unban(username=username) if flag == 1: return 'success' else: return 'fail'
def get_user_list(): user = User() res = user.find_all() data = [] for item in res: u = {} u['id'] = item.id u['username'] = item.username u['nickname'] = item.nickname u['gmt_create'] = item.gmt_create u['banned'] = item.banned data.append(u) return jsonify({'data': data})
def get_user_info(): user = User() username = request.args.get('username') res = user.find_by_username(username=username)[0] data = {} data['id'] = res.id data['nickname'] = res.nickname data['avatar_url'] = res.avatar_url start = res.gmt_create end = datetime.datetime.now() data['age'] = (end - start).days return jsonify({'data': data})
def new_upvote(): user = User() answer = Answer() username = request.args.get('username') ida = request.args.get('ida') idu2 = user.find_by_username(username)[0].id idu1 = answer.find_by_id(ida).idu notification = Notification() notification.newupvote(ida=ida, idu1=idu1, idu2=idu2) return 'success'
def add_history(): history = History() user = User() question = Question() # 获取请求中的参数 username = request.form.get("username") idq = request.form.get("idq") # 根据用户名获取id idu = user.find_by_username(username)[0].id # 更新表question和history question.add_view_count(idq=idq) history.add(idu=idu, idq=idq) return 'pass'
def get_notification_0(): notification = Notification() user = User() username = request.args.get("username") idu = user.find_by_username(username)[0].id data = [] res = notification.find_by_idu_0(idu=idu) for item in res: nt = {} nt['id'] = item.id nt['content'] = item.content nt['gmt_create'] = item.gmt_create data.append(nt) return jsonify({'data': data})
def add_upvote(): upvote = Upvote() user = User() answer = Answer() username = request.form.get("username") ida = request.form.get("ida") idu = user.find_by_username(username)[0].id res = upvote.find_by_iduida(idu=idu, ida=ida) if len(res) > 0: return 'repeated' else: upvote.add(idu=idu, ida=ida) answer.add_upvote(id=ida) return 'success'
def bind_user(chat_id: str, username: str, password: str, session=DBSession): """bind a telegram user and miniflux account :param chat_id: telegram chat_id :param username: miniflux account username :param password: miniflux account password :param session: database session class :type chat_id: Union[int, str] :type username: str :type password: str :raise UserOrPassError: username or password error """ session = session() client = Client(SERBER_ADDR, username=username, password=password) try: client.me() except ClientError: raise UserOrPassError ret = client.get_categories() category_id = ret[0]['id'] user = User(id=chat_id, username=username, password=password, category_id=category_id) session.merge(user) session.commit() session.close() return
def reply(): articleid = request.form.get('articleid') commentid = request.form.get('commentid') content = request.form.get('content').strip() ipaddr = request.remote_addr # 如果评论的字数低于5个或多于1000,视为不合法 if len(content) < 5 or len(content) > 1000: return 'content-invalid' comment = Comment() # 没有超出限制才能发表评论 if not comment.check_limit_per_5(): try: comment.insert_reply(articleid=articleid, commentid=commentid, content=content, ipaddr=ipaddr) # 评论成功后,同步更新credit表明细,user表积分和article表回复数 Credit().insert_detail(type='回复评论', target=articleid, credit=2) User().update_credit(2) Article().update_replycount(articleid) return 'reply-pass' except: return 'reply-fail' else: return 'reply-limit'
def add_user(): data = request.get_json() new_user = User(**data) USERS_TABLE.add(new_user) return jsonify( USERS_TABLE.find_row( USERS_TABLE.rows[-1]._id).to_dict(dates_to_string=True)), 201
def matching_apply(): print(request.form['cutlet'], file=sys.stderr) print(request.form['hamburger'], file=sys.stderr) print(request.form['noodle'], file=sys.stderr) print(request.form['korean_food'], file=sys.stderr) user_name = check_session() if user_name == None: flash('너무 오래 고민하셨네요. 다시 로그인해 주세요.') return redirect('/') user_data = User(config.MYSQL_CONFIG).get_userdata(user_name) print(user_data, file=sys.stderr) if user_data == None: flash('원인 불명의 에러입니다.') return redirect('/') user_data['cutlet'] = request.form['cutlet'] user_data['hamburger'] = request.form['hamburger'] user_data['noodle'] = request.form['noodle'] user_data['korean_food'] = request.form['korean_food'] matching_config = config.REDIS_MATCH_CONF matching_config.update(config.TWILLO_CONFIG) RedisMatching(matching_config).set_userdata(user_data) flash('신청 완료. 매칭 결과는 문자로 알려드릴 예정입니다.') return redirect('/matching')
def ban_user(user_list, ban=True): session = DBSession() for user_data in user_list: session.merge( User(id=user_data.id, isban=ban, username=user_data.username)) session.commit() session.close()
def is_exist_phone_number(): print(request.form['mobile'], file=sys.stderr) result = User(config.MYSQL_CONFIG).is_exist_phone_number( request.form['mobile']) if result == True: return 'true' elif result == False: return 'false' else: return result
def newupvote(self, ida, idu1, idu2): answer = Answer() question = Question() user = User() nickname = user.find_by_id(idu2).nickname idq = answer.find_by_id(id=ida).idq title = question.find_by_id(id=idq).title content = nickname + "点赞了" + "您关于问题" + "'" + title + "'" + "的回答。" read = "n" notification = Notification(idu=idu1, read=read, content=content) dbsession.add(notification) dbsession.commit() return 1
def get_history(): history = History() user = User() question = Question() username = request.args.get("username") idu = user.find_by_username(username)[0].id res = history.find_by_idu(idu=idu) data = [] for item in res: col = {} idq = item.idq title = question.find_by_id(id=idq).title col['idq'] = idq col['title'] = title data.append(col) return jsonify({'data': data})
def add_collection(): collection = Collection() user = User() question = Question() # 获取请求中的参数 username = request.form.get("username") idq = request.form.get("idq") # 获取用户id idu = user.find_by_username(username)[0].id res = collection.find_by_iduidq(idu=idu, idq=idq) if len(res) > 0: return 'repeated' else: # 更新两张表question和collection question.add_collect_count(idq=idq) # 问题表收藏数+1 collection.add(idu=idu, idq=idq) return 'success'
def get_list(keywords): position = [] courses = [] department = [] for key in keywords: key = key.strip() label = keyword_classifier.predict_label(key) if (label == ''): pass elif(label == 'position'): results = csv_query.query( "select * from " + db_faculties + " where position like '%"+key.replace(' ', '%')+"%'") lines = results.split('\n') for line in lines: fields = line.split('\t') user = User(fields[0].strip(), fields[1].strip( ), fields[2].strip(), fields[3].strip(), fields[4].strip()) position.append(user) elif(label == 'course'): results = csv_query.query( "select * from " + db_courses + " where courses like '%"+key.replace(' ', '%')+"%'") lines = results.split('\n') for line in lines: fields = line.split('\t') ids = fields[2].strip().split(',') for id in ids: results = csv_query.query( "select * from " + db_faculties + " where id = '"+id+"'") fields = results.split('\t') user = User(fields[0].strip(), fields[1].strip( ), fields[2].strip(), fields[3].strip(), fields[4].strip()) courses.append(user) elif(label == 'department'): results = csv_query.query( "select * from " + db_faculties + " where department like '%"+key.replace(' ', '%')+"%'") lines = results.split('\n') for line in lines: fields = line.split('\t') user = User(fields[0].strip(), fields[1].strip( ), fields[2].strip(), fields[3].strip(), fields[4].strip()) department.append(user) else: pass return position, courses, department
def post(self): book_id = self.parse_body('bookId', '') user_id = self.current_user_my user = User.objects(index=user_id['userId']).first() print 'iss: ', user.collections, book_id user.collections.append(int(book_id)) print user.collections user.save() user_info_redis(0) self.write({'errorCode': 10000})
def delete(): result = User(config.MYSQL_CONFIG).delete(request.form['mobile']) if result == None: if 'session_key' in session: del session['session_key'] flash('회원탈퇴 성공') return redirect('/') else: return redirect('/matching', error=result)
def add(): answer = Answer() user = User() question = Question() username = request.form.get('username').strip() print(username) print(user.find_by_username(username)) idu = user.find_by_username(username)[0].id # 根据用户名获取idu idq = request.form.get('idq').strip() content = request.form.get('content').strip() question.add_answer_count(idq) # 问题回答数+1 res = answer.add_answer(idq, idu, content) if res == 1: return 'add-success' else: return 'add-error'
def start(bot, update): """ send start info """ bot.send_message(chat_id=update.message.chat_id, text=START_MSG) session = DBSession() user = session.query(User).filter_by( id=update.message.from_user['id']).first() if user is None: session.add(User(id=update.message.from_user['id'])) session.commit() session.close()
def get_answers(): answer = Answer() idq = request.args.get("idq") data = [] res = answer.find_by_idq(idq) for item in res: a = {} idu = item.idu user = User() username = user.find_by_id(idu).username avatar_url = user.find_by_id(idu).avatar_url a['id'] = item.id a['username'] = username a['avatar_url'] = '../assets/avatar/'+avatar_url a['content'] = item.content a['upvote'] = item.upvote a['gmt_create'] = item.gmt_create data.append(a) return jsonify({'data': data})
def user_info_redis(user_type, redis_cli=None): if redis_cli is None: redis_cli = tornadoredis.Client() ino_type_ = 'follows.' if user_type else 'collections.' all_user = User.objects().all() with redis_cli.pipeline() as pipe: for i in all_user: if user_type == 1: for k in i.follows: print i.index, k pipe.sadd('follows.'+ str(i.index), int(k)) else: for k in i.collections: pipe.sadd('collections.'+ str(i.index), int(k)) pipe.execute() print '\ninit redis complated\n'
def post(self): import datetime author = self.parse_body('author', '') com_time = datetime.datetime.now() theme = self.parse_body('theme', '') comment = self.parse_body('comment', '') book_id = self.parse_body('bookId', '') nickname = User.objects(index=int(author)).first().nickname com = Comments(author=author, nickname=nickname, com_time=com_time, theme=theme,\ comment=comment) com.save() print 'book_Id: ', book_id print 'debug: ', t= Books.objects(index=int(book_id)).first() t.comments.append(com) t.save() self.write({'errorCode': 10000})
def post(self): nickname = self.parse_body('username', '') user = User.objects(nickname=nickname).first() email = self.parse_body('email', '') kw = {} new_pass = self.parse_body('newPass') if new_pass: kw.update({'password': new_pass}) note = self.parse_body('note', '') if note: kw.update({'note': note}) level = self.parse_body('level') telnec = self.parse_body('telnec') res = "" for i in telnec: res = res + str(i) + str(level) + ':' if res: kw.update({'tags': res[0: -1]}) user.update_info(**kw) self.write({'errorCode': 10000})
def get(self): url = self.request.path import re nickname = re.search(r'/\w{1,32}/', url).group(0)[1:-1] user = User.objects(nickname=nickname).first() self.render('index/user_info.html', user=user, username='******')
def get_user(cls, user_id=None, account=None): if user_id is not None and not isinstance(user_id, ObjectId): user_id = ObjectId(user_id) match = dict(id=user_id) if user_id else dict(account=account) user = User.objects(match).first() return user