def tearDown(self) -> None: db.close_all_sessions() all_tables = [ "public." + str(table) for table in reversed(db.metadata.sorted_tables) ] db.engine.execute("TRUNCATE {} CASCADE;".format(", ".join(all_tables)))
def ht_user_infos(): page_index = request.args.get("page_index") page_size = request.args.get("page_size") is_wx = request.args.get("is_wx") if session['username']: re_data_json = {'ok': '0', 'info': ''} try: page_count = db.session.query(func.count(User.id)).scalar() users = User.query.order_by(User.id.desc()) \ .filter(User.is_wx == 2).offset((int(page_index) - 1) * int(page_size)) \ .limit(int(page_size)).all() # 对数据做某些处理 data_json = [] for data in users: user_json = serialize.serialize_model(data) data_json.append(user_json) db.close_all_sessions() re_data_json['info'] = data_json re_data_json['page_total'] = page_count re_data_json["ok"] = 1 return jsonify(re_data_json) # 返回数据 except Exception as e1: re_data_json['info'] = e1 re_data_json["ok"] = 0 return jsonify(re_data_json) # 返回数据 else: return ''
def update_reports(): ri = json.loads(request.args.get("reportInfo")) re_data_json = {'ok': '0', 'info': ''} if session['username']: try: report_new = dict_to_object(ri) report = Reporter.query.filter_by(id=int(report_new['id'])).first() if report: print(report.__dict__) for key in report_new: if key == '_sa_instance_state': continue setattr(report, key, report_new[key]) db.session.commit() db.close_all_sessions() re_data_json['info'] = ri re_data_json["ok"] = 1 lines = json.dumps(re_data_json, cls=serialize.DateEnconding) return jsonify(lines) # 返回数据 except Exception as e1: re_data_json['info'] = e1 re_data_json["ok"] = 0 return jsonify(re_data_json) # 返回数据 else: return ''
def ht_reports_by_open_id(): open_id = request.args.get("open_id") re_data_json = {'ok': '0', 'info': ''} if session['username']: try: result = User.query.filter(User.open_id == open_id).first() reports = Reporter.query.order_by(Reporter.updatetime.desc()).filter_by(user_id=int(result.id)) report_json =[] for report in reports: eq = EqInfo.query.filter_by(cata_id=report.cata_id).first() report_dict = serialize.serialize_model(report) eq_info = serialize.serialize_model(eq) report_dict['eq'] = eq_info report_json.append(report_dict) db.close_all_sessions() re_data_json['info'] = report_json re_data_json["ok"] = 1 lines = json.dumps(re_data_json, cls=serialize.DateEnconding) return jsonify(lines) # 返回数据 except Exception as e1: re_data_json['info'] = e1 re_data_json["ok"] = 0 return jsonify(re_data_json) # 返回数据 else: return ''
def login4wx(): # 获取客户端传参,将二进制转字符串 r = json.loads(request.data.decode('utf-8')) re_data_json = {'ok': '0', 'info': ''} nickname = '' pic_path = '' sex = '' province = '' city = '' open_id = '' if 'nickname' in r: nickname = r['nickname'] if 'pic_path' in r: pic_path = r['pic_path'] if 'sex' in r: sex = r['sex'] if 'province' in r: province = r['province'] if 'city' in r: city = r['city'] if 'open_id' in r: open_id = r['open_id'] if open_id.strip() == '': re_data_json = {'ok': '0', 'info': '小程序超时,请重新打开小程序'} return jsonify(re_data_json) user = User.query.filter_by(open_id=open_id).first() if not user: return jsonify({'ok': '0', 'info': '用户不存在!'}) else: user.sex = sex try: user.nickname = nickname user.pic_path = pic_path user.province = province user.city = city except Exception as e1: print(e1) db.session.commit() token = base64.b64encode(os.urandom(24)).decode('utf-8', 'ignore') session['user_id'] = user.id session['username'] = user.username session[user.username + '_token'] = token re_data_json = { 'ok': '1', 'info': '登陆成功', 'token': token, 'username': user.username, 'nickname': user.nickname, 'sex': user.sex, 'p_user': user.p_user, 'pic_path': user.pic_path, 'is_wx': user.is_wx, 'tel': user.tel } db.close_all_sessions() return jsonify(re_data_json) return jsonify(re_data_json)
def create_pic(): mylock.acquire() try: root_path = os.path.abspath(os.path.dirname(__file__)).split('eq_collect')[0] datas = EqInfo.query.order_by(EqInfo.O_time.desc()).limit(100).all() for data in datas: if data.is_create_pic == 0: file_path = root_path + 'eq_collect' + os.sep + 'static' + os.sep \ + 'img' + os.sep + data.cata_id + '.png' img_url = "http://api.map.baidu.com/staticimage?width=240&height=320¢er=" \ + str(data.Lon) + "," + str(data.Lat) + "&zoom=8&markers=" \ + str(data.Lon) + "," + str(data.Lat) \ + "&markerStyles=-1,-1,25,25©right=1" print('file_path:', file_path) result = download_img(img_url, file_path) print(result) if result: data.is_create_pic = 1 db.session.commit() except Exception as e: logging.error(e) finally: mylock.release() db.close_all_sessions()
def clean_img(): path = serialize.STATIC_FILE_PATH + 'upload' + os.sep dirs = os.listdir(path) for file in dirs: data = db.session.execute('SELECT COUNT(1) from t_report where instr(pic_path,\'' + file + '\') > 0') row = data.fetchone() # 取第一条 if row[0] == 0: os.remove(path+file) db.close_all_sessions()
def wx_login(): # 获取客户端传参,将二进制转字符串 r = json.loads(request.data.decode('utf-8')) re_data_json = {'ok': '0', 'info': ''} user_name = r['username'] password = r['password'] open_id = r['open_id'] if (not user_name) or user_name == '' or user_name.strip() == '': re_data_json = {'ok': '0', 'info': '用户名不能为空'} return jsonify(re_data_json) if (not password) or password == '' or password.strip() == '': re_data_json = {'ok': '0', 'info': '密码不能为空'} return jsonify(re_data_json) if open_id.strip() == '': re_data_json = {'ok': '0', 'info': '小程序超时,请重新打开小程序'} return jsonify(re_data_json) pw = password user = User.query.filter_by(username=user_name).first() if not user: return jsonify({'ok': '0', 'info': '用户名不存在!'}) if pw != user.password: return jsonify({'ok': '0', 'info': '密码不正确!'}) else: result = User.query.filter(User.username == open_id).first() if result: # 如果用户id 相同 为同一条记录 否则保留 user 删除 result if user.id != result.id: user.open_id = open_id db.session.delete(result) else: user.open_id = open_id db.session.commit() token = base64.b64encode(os.urandom(24)).decode('utf-8', 'ignore') session['user_id'] = user.id session['username'] = user_name session[user_name + '_token'] = token session.permanent = True re_data_json = { 'ok': '1', 'info': '登陆成功', 'token': token, 'username': user.username, 'nickname': user.nickname, 'sex': user.sex, 'p_user': user.p_user, 'pic_path': user.pic_path, 'is_wx': user.is_wx, 'tel': user.tel } db.close_all_sessions() return jsonify(re_data_json) return jsonify(re_data_json)
def ht_reports_by_id(): r_id = request.args.get("id") re_data_json = {'ok': '0', 'info': ''} if session['username']: try: report = Reporter.query.filter_by(id=int(r_id)).first() db.close_all_sessions() re_data_json['info'] = serialize.serialize_model(report) re_data_json["ok"] = 1 lines = json.dumps(re_data_json, cls=serialize.DateEnconding) return jsonify(lines) # 返回数据 except Exception as e1: re_data_json['info'] = e1 re_data_json["ok"] = 0 return jsonify(re_data_json) # 返回数据 else: return ''
def eq_infos(): # recv_data = request.get_data() # 得到前端传送的数据 page_index = request.args.get("page_index") page_size = request.args.get("page_size") if session['username']: datas = EqInfo.query.order_by(EqInfo.O_time.desc()).offset((int(page_index)-1)*int(page_size))\ .limit(int(page_size)).all() # 对数据做某些处理 db.close_all_sessions() data_json = [] re_data_json = {'ok': '0', 'info': ''} for data in datas: data_json.append(serialize.serialize_model(data)) re_data_json['info'] = data_json re_data_json["ok"] = 1 lines = json.dumps(re_data_json, cls=serialize.DateEnconding) return jsonify(lines) # 返回数据 else: return ''
def delete_reports(): r_id = json.loads(request.args.get("id")) re_data_json = {'ok': '0', 'info': ''} if session['username']: try: report = Reporter.query.filter_by(id=int(r_id)).first() if report: db.session.delete(report) db.session.commit() db.close_all_sessions() re_data_json["ok"] = 1 return jsonify(re_data_json) # 返回数据 except Exception as e1: re_data_json['info'] = e1 re_data_json["ok"] = 0 return jsonify(re_data_json) # 返回数据 else: return ''
def ht_delete_user(): form_dict = request.form.to_dict() keys = list(form_dict.keys()) u_id = json.loads(keys[0])['params']['id'] re_data_json = {'ok': '0', 'info': ''} if session['username']: try: user = User.query.filter_by(id=int(u_id)).first() if user: db.session.delete(user) db.session.commit() db.close_all_sessions() re_data_json["ok"] = 1 return jsonify(re_data_json) # 返回数据 except Exception as e1: re_data_json['info'] = e1 re_data_json["ok"] = 0 return jsonify(re_data_json) # 返回数据 else: return ''
def ht_reports_by_cata_id(): cata_id = request.args.get("cata_id") is_wx = request.args.get("is_wx") re_data_json = {'ok': '0', 'info': ''} if session['username']: try: reports = Reporter.query.order_by(Reporter.updatetime.desc())\ .filter(Reporter.cata_id == cata_id, Reporter.is_wx > int(is_wx)).limit(100) db.close_all_sessions() report_json = [] for report in reports: report_json.append(serialize.serialize_model(report)) re_data_json["ok"] = 1 re_data_json['info'] = report_json return jsonify(re_data_json) # 返回数据 except Exception as e1: re_data_json['info'] = e1 re_data_json["ok"] = 0 return jsonify(re_data_json) # 返回数据 else: return ''
def wechat(): # recv_data = request.get_data() # 得到前端传送的数据 try: wx_config = WxConfig.query.first() appid = wx_config.appid secret = wx_config.secret js_code = request.data['code'] except Exception as e: logging.error(e) js_code = request.args.get("code") request_string = 'https://api.weixin.qq.com/sns/jscode2session?appid={APPID}' \ '&secret={SECRET}&js_code={JSCODE}&grant_type=authorization_code' \ .format(APPID=appid, SECRET=secret, JSCODE=js_code) res = urllib.request.urlopen(url=request_string) r = json.loads(res.read().decode('utf-8')) if 'openid' in r: result = User.query.filter(User.open_id == r['openid']).first() if not result: result = User( username=r['openid'], open_id=r['openid'], is_wx='1', state=datetime.datetime.now().strftime("%Y-%m-%d-%H:%M:%S")) db.session.add(result) db.session.commit() session['username'] = result.username r['ok'] = 1 r['username'] = result.username r['nickname'] = result.nickname r['p_user'] = result.p_user r['sex'] = result.sex r['pic_path'] = result.pic_path r['is_wx'] = result.is_wx r['tel'] = result.tel return r db.close_all_sessions()
def ht_eq_infos(): # recv_data = request.get_data() # 得到前端传送的数据 page_index = request.args.get("page_index") page_size = request.args.get("page_size") is_wx = request.args.get("is_wx") if session['username']: re_data_json = {'ok': '0', 'info': ''} try: page_total = db.session.query(func.count(EqInfo.cata_id)).scalar() datas = EqInfo.query.order_by(EqInfo.O_time.desc()).offset((int(page_index)-1)*int(page_size))\ .limit(int(page_size)).all() # 对数据做某些处理 data_json = [] for data in datas: eq_dict = serialize.serialize_model(data) reports = Reporter.query.order_by(Reporter.updatetime.desc()).filter_by(cata_id=data.cata_id).limit(page_size) report_json = [] for report in reports: if report.is_wx > int(is_wx): report_dict = serialize.serialize_model(report) report_dict['user'] = serialize.serialize_model(report.user) report_json.append(report_dict) # report_user_json = [] # user = User.query.filter_by(id=report.user_id).first() # report_user_json.append(serialize.serialize_model(user)) eq_dict['reports'] = report_json data_json.append(eq_dict) db.close_all_sessions() re_data_json['info'] = data_json re_data_json['page_total'] = page_total re_data_json["ok"] = 1 return jsonify(re_data_json) # 返回数据 except Exception as e1: re_data_json['info'] = e1 re_data_json["ok"] = 0 return jsonify(re_data_json) # 返回数据 else: return ''
def add_report(): re_son = {'ok': 0, 'info': '数据提交失败,请稍后再试'} try: if session['username']: js = json.loads(request.data.decode('utf-8')) r = js["eqReport"] cata_id = checkKeyValueReturnValue(r, 'cata_id') currenLat = checkKeyValueReturnValue(r, 'currenLat') currenLon = checkKeyValueReturnValue(r, 'currenLon') fell = checkKeyValueReturnValue(r, 'fell') house = checkKeyValueReturnValue(r, 'house') content = checkKeyValueReturnValue(r, 'content') open_id = checkKeyValueReturnValue(r, 'open_id') c_addr = checkKeyValueReturnValue(r, 'c_addr') death_count = checkKeyValueReturnValue(r, 'death_count') injured_count = checkKeyValueReturnValue(r, 'injured_count') wound_count = checkKeyValueReturnValue(r, 'wound_count') death_cause = checkKeyValueReturnValue(r, 'death_cause') intensity = checkKeyValueReturnValue(r, 'intensity') pic_path = checkKeyValueReturnValue(r, 'pic_path') old_pic_path = checkKeyValueReturnValue(r, 'old_pic_path') house_type = checkKeyValueReturnValue(r, 'house_type') is_wx = checkKeyValueReturnValue(r, 'is_wx') if open_id == "": re_son['ok'] = 0 re_son['info'] = '登录超时,请重新打开小程序' return re_son user = User.query.filter(User.open_id == open_id).first() if cata_id == '': re_son['ok'] = 0 re_son['info'] = '震情为空,请重新进入小程序' return re_son arricle = Reporter(cata_id=cata_id, currenLat=currenLat, currenLon=currenLon, fell=fell, house=house, content=content, open_id=open_id, user_id=user.id, c_addr=c_addr, death_count=death_count, injured_count=injured_count, wound_count=wound_count, death_cause=death_cause, intensity=intensity, pic_path=pic_path, old_pic_path=old_pic_path, house_type=house_type, is_wx=is_wx, updatetime=datetime.datetime.now().strftime( "%Y-%m-%d-%H:%M:%S")) db.session.add(arricle) db.session.commit() db.session.remove() re_son['ok'] = 1 re_son['info'] = '提交成功' db.close_all_sessions() else: re_son['ok'] = 0 re_son['info'] = '登录超时或者未登陆,请重新登陆' except Exception as e: logging.error(e) return re_son
def setUp(self): db.close_all_sessions() db.drop_all() db.create_all() insert_subreddits()
parent_idg = Categories.query.filter_by(little_name=parent).first().idg num = Categories.query.filter_by(little_name=course,parent=parent_idg).first().idg # Création des différents chapitres cat = [(f'C{i//10}{i%10}',)*2 for i in range(1,16)] for ln, rn in cat[::-1]: add_category(ln, rn, parent=num,isactive=(ln=='C01')) if not (os.path.exists(f"static/upload/{parent}/{course}/{ln}")): try: os.mkdir(f"static/upload/{parent}/{course}/{ln}") except: raise IOError else : num = Categories.query.filter_by(little_name=course).first().idg # Création des différents chapitres cat = [(f'C{i // 10}{i % 10}',) * 2 for i in range(1, 16)] for ln, rn in cat[::-1]: add_category(ln, rn, parent=num,isactive=(ln=='C01')) if not (os.path.exists(f"static/upload/{course}/{ln}")): try: os.mkdir(f"static/upload/{course}/{ln}") except: raise IOError print(f'Done for {parent}/f{course}...') print('Finished') db.close_all_sessions()
def ht_update_user(): form_dict = request.form.to_dict() keys = list(form_dict.keys()) user_new = json.loads(keys[0])['params']['user_new'] re_json = {'ok': '0', 'info': ''} if user_new: if session['username']: try: t = user_new['tel'] is_add = 0 if 'id' not in user_new.keys() or not isinstance( user_new['id'], int): user = User.query.filter_by(tel=t).first() if user: re_json['info'] = "电话号码重复,该电话已经注册" re_json["ok"] = 0 return jsonify(re_json) # 返回数据 user = User() pw = hashlib.md5(user_new["password"].encode( encoding='UTF-8')).hexdigest() user_new["password"] = pw user_new["username"] = user_new["tel"] is_add = 1 else: user_tel = User.query.filter_by(tel=t).first() user = User.query.filter_by(id=int(user_new['id'])).first() # 修改时不能使用别人的电话 if not user_tel or user_tel.id == user.id: is_add = 0 # 如果字典中有新密码则更新密码 if 'new_password' in user_new.keys(): new_password = user_new.pop('new_password') pw = hashlib.md5( new_password.encode( encoding='UTF-8')).hexdigest() user_new["password"] = pw else: re_json['info'] = "电话号码重复,该电话已经注册" re_json["ok"] = 0 return jsonify(re_json) # 返回数据 if user: print(user.__dict__) for key in user_new: if key == '_sa_instance_state': continue setattr(user, key, user_new[key]) if is_add == 1: db.session.add(user) db.session.commit() db.close_all_sessions() re_json['info'] = user_new re_json["ok"] = 1 return jsonify(re_json) # 返回数据 except Exception as e1: re_json['info'] = e1 re_json["ok"] = 0 return jsonify(re_json) # 返回数据 else: return '' return jsonify(re_json)