예제 #1
0
 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)))
예제 #2
0
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 ''
예제 #3
0
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 ''
예제 #4
0
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 ''
예제 #5
0
파일: wx.py 프로젝트: sunqiang10/eq_collect
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)
예제 #6
0
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&center=" \
                          + str(data.Lon) + "," + str(data.Lat) + "&zoom=8&markers=" \
                          + str(data.Lon) + "," + str(data.Lat) \
                          + "&markerStyles=-1,-1,25,25&copyright=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()
예제 #7
0
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()
예제 #8
0
파일: wx.py 프로젝트: sunqiang10/eq_collect
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)
예제 #9
0
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 ''
예제 #10
0
파일: wx.py 프로젝트: sunqiang10/eq_collect
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 ''
예제 #11
0
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 ''
예제 #12
0
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 ''
예제 #13
0
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 ''
예제 #14
0
파일: wx.py 프로젝트: sunqiang10/eq_collect
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()
예제 #15
0
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 ''
예제 #16
0
파일: wx.py 프로젝트: sunqiang10/eq_collect
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
예제 #17
0
 def setUp(self):
     db.close_all_sessions()
     db.drop_all()
     db.create_all()
     insert_subreddits()
예제 #18
0
        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()
예제 #19
0
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)