Ejemplo n.º 1
0
def set():
    default_pwd = "******"
    if request.method == "GET":
        resp_data = {}
        req = request.args
        uid = int(req.get("id", 0))
        info = None
        if uid:
            info = User.query.filter_by(uid=uid).first()
        resp_data['info'] = info
        return ops_render("account/set.html", resp_data)
    resp = {'code': 200, 'msg': '编辑成功', 'data': {}}
    req = request.values
    nickname = req['nickname'] if 'nickname' in req else ''
    email = req['email'] if 'email' in req else ''
    mobile = req['mobile'] if 'mobile' in req else ''
    login_name = req['login_name'] if 'login_name' in req else ''
    login_pwd = req['login_pwd'] if 'login_pwd' in req else ''
    id = req['id'] if 'id' in req else '0'

    if nickname is None or len(nickname) < 1:
        resp['code'] = -1
        resp['msg'] = "nickname failed"
        return jsonify(resp)

    if email is None or len(email) < 1:
        resp['code'] = -1
        resp['msg'] = "email failed"
        return jsonify(resp)

    has_in = User.query.filter(User.login_name == login_name,
                               User.uid != id).first()
    if has_in:
        resp['code'] = -1
        resp['msg'] = "email failed"
        return jsonify(resp)

    user_info = User.query.filter(User.uid == id).first()
    if user_info:
        model_user = user_info
    else:
        model_user = User()
        model_user.updated_time = getCurrentDate()
        model_user.created_time = getCurrentDate()

    if login_pwd != default_pwd:
        model_user.login_salt = UserService.genSalt()
        model_user.login_pwd = UserService.genePwd(login_pwd,
                                                   model_user.login_salt)

    model_user.nickname = nickname
    model_user.email = email
    model_user.mobile = mobile
    model_user.login_name = login_name

    db.session.add(model_user)
    db.session.commit()
    return jsonify(resp)
Ejemplo n.º 2
0
def new_speech():
    if request.method == "GET":
        return ops_render("dong_tai/new_speech.html")
    resp = {'code': 200, 'msg': '操作成功', 'data': {}}
    req = request.values
    title = req['title'] if 'title' in req else ''
    address = req['address'] if 'address' in req else ''
    teacher = req['teacher'] if 'teacher' in req else ''
    email = req['email'] if 'email' in req else ''
    teacher_intro = req['teacher_intro'] if 'teacher_intro' in req else ''
    speech_intro = req['speech_intro'] if 'speech_intro' in req else ''
    app.logger.info(req['time'])
    app.logger.info(getCurrentDate())
    time = req['time'] if 'time' in req else getCurrentDate()
    app.logger.info(time)

    # 注意:
    # input datetime-local控件获取的日期格式是****-**-**T**:**:**,中间有个很奇怪的T,下面的这个函数已经的证明可以将其赋给数据库
    #这里和上一个函数原理不同
    def deleteT(time):
        time1 = time[:4]
        time2 = time[5:7]
        time3 = time[8:10]
        time4 = time[11:13]
        time5 = time[14:]
        time = time1 + time2 + time3 + time4 + time5 + '00'
        time = int(time)
        return time

    time = deleteT(time)
    app.logger.info(time)
    #假吧意思判断两个
    if title is None or len(title) > 20:
        resp['code'] = -1
        resp['msg'] = "请输入规范的标题名~~"
        return jsonify(resp)

    if address is None or len(address) > 15:
        resp['code'] = -1
        resp['msg'] = "请输入规范的讲座地址~~"
        return jsonify(resp)

    speech = Speeches()
    speech.title = title
    speech.address = address
    speech.teacher = teacher
    speech.teacher_conn = email
    speech.speech_time = time
    speech.teacher_intro = teacher_intro
    speech.speech_intro = speech_intro

    # 数据库提交
    db.session.add(speech)
    db.session.commit()

    return jsonify(resp)
Ejemplo n.º 3
0
def login():
    resp = {'code': 200, 'msg': "操作成功", "data": {}}
    req = request.values

    code = req['code']
    app.logger.info(len(code))
    app.logger.info(code)
    if code == None or len(code) < 10:
        resp['code'] = -1
        resp['msg'] = "需要code"
        app.logger.info("need code")
        return jsonify(resp)
    openid = MemberService.getWeChatOpenId(code)
    if openid == None:
        resp['code'] = -1
        resp['msg'] = "微信调用登录接口失败"
        app.logger.info("微信调用登录接口失败")
        return jsonify(resp)
    resp["openid"] = openid
    nickname = req['nickName']
    sex = req['gender']
    avatar = req['avatarUrl']

    bind_info = OauthMemberBind.query.filter_by(openid=openid, type=1).first()
    app.logger.debug("bind_info")
    app.logger.debug(bind_info)
    if not bind_info:
        model_member = Member()
        model_member.nickname = nickname
        model_member.sex = sex
        model_member.avatar = avatar
        model_member.salt = MemberService.genSalt()
        model_member.created_time = model_member.updated_time = getCurrentDate(
        )
        db.session.add(model_member)
        db.session.commit()

        model_bind = OauthMemberBind()
        model_bind.member_id = model_member.id
        model_bind.type = 1
        model_bind.extra = ''
        model_bind.openid = openid
        model_bind.updated_time = model_bind.created_time = getCurrentDate()
        db.session.add(model_bind)
        db.session.commit()

        db.session.flush()

        bind_info = model_bind

    member_info = Member.query.filter_by(id=bind_info.member_id).first()
    token = "%s#%s" % (MemberService.geneAuthCode(member_info), member_info.id)
    resp['data'] = {'token': token}
    return jsonify(resp)
	def uploadByFile( file ):     #保存到服务器目录的同时将路径的存储到数据库中
		config_upload = app.config['UPLOAD']
		resp = { 'code':200,'msg':'操作成功~~','data':{} }
		filename = secure_filename( file.filename ) #获取文件名,这个引入的方法可以获取安全的文件名
		app.logger.info(filename)#排除不能上传时文件名的问题
		ext = filename.split(".",1)[1]   #获取扩展文件的扩展名,通过切割.来进行获取。0代表前面的文件名,1代表后面的扩展
		if ext not in config_upload['ext']:   #判断是否是我们定义的文件类型,根据文件的扩展名进行判断
			resp['code'] = -1
			resp['msg'] = "不允许的扩展类型文件"
			return resp


		root_path = app.root_path + config_upload['prefix_path'] #定义存放路径,app.root_path是app下面的一个方法
		#不使用getCurrentDate创建目录,为了保证其他写的可以用,这里改掉,服务器上好像对时间不兼容
		file_dir = datetime.datetime.now().strftime("%Y%m%d")#生成文件,这里是按照时间生成文件
		save_dir = root_path + file_dir       #图片存放路径
		if not os.path.exists( save_dir ):   #查看这个文件路径是不是存在
			os.mkdir( save_dir )              #如果不存在就创建一个
			os.chmod( save_dir,stat.S_IRWXU | stat.S_IRGRP |  stat.S_IRWXO )  #选择这个目录的操作权限,直接网上查

		file_name = str( uuid.uuid4() ).replace("-","") + "." + ext    #拼接文件名,uuid是根据硬件和时间生成唯一的一个字符串
		file.save( "{0}/{1}".format( save_dir,file_name ) )#将这个文件完整的存放起来,路径加文件名就可以存放

		model_image = Image()
		model_image.file_key = file_dir + "/" + file_name   #这里存的只是从日期文件目录那里开始的文件路径,并不是完全的全部路径
		#model_image.file_key = save_dir + "/" + file_name    #这里存的是完全的路径:就是C:\pytest\appconstruction/web/static/这种的。
		model_image.created_time = getCurrentDate()
		db.session.add( model_image)#
		db.session.commit()

		resp['data'] = {
			'file_key':  model_image.file_key   #file_key就是日期加上文件名  ,这里的值model_image.file_key可以替换为save_dir + "/" + file_name
		}
		return resp
Ejemplo n.º 5
0
def new_set():
    if request.method == "GET":
        resp = {}
        resp['lib_location'] = app.config['LIB_LOCATION']
        return ops_render("index/new_set.html", resp)

    resp = {'code': 200, 'msg': '操作成功', 'data': {}}
    req = request.values
    title = req['title'] if 'title' in req else ''
    location = req['location'] if 'location' in req else ''
    content = req['content'] if 'content' in req else ''
    # 参数有效性的再次判断的 之前判断了title字数不能小于2,地点名不能少于5个字和content不能为空,这里就暂时鸡肋地随便判断下
    if title is None or len(title) > 20:
        resp['code'] = -1
        resp['msg'] = "请输入规范的标题名~~"
        return jsonify(resp)

    if location is None or len(location) > 15:
        resp['code'] = -1
        resp['msg'] = "请输入规范的校区图书馆名~~"
        return jsonify(resp)

    bulletin = News()
    bulletin.title = title
    bulletin.content = content
    bulletin.location = location
    bulletin.created_time = getCurrentDate()
    # 数据库提交
    db.session.add(bulletin)
    db.session.commit()

    return jsonify(resp)
Ejemplo n.º 6
0
def ops():
    resp = {'code': 200, 'msg': '操作成功~~', 'data': {}}
    req = request.values

    id = int(req['id']) if 'id' in req else 0
    act = req['act'] if 'act' in req else ''
    if not id:
        resp['code'] = -1
        resp['msg'] = "请选择要操作的对象~~"
        return jsonify(resp)

    if act not in ['remove', 'recover']:
        resp['code'] = -1
        resp['msg'] = "操作有误,请重试~~"
        return jsonify(resp)

    news_info = News.query.filter_by(id=id).first()
    if not news_info:
        resp['code'] = -1
        resp['msg'] = "指定对象不存在~~"
        return jsonify(resp)

    if act == "remove":
        news_info.status = 0
    elif act == "recover":
        news_info.status = 1

    news_info.created_time = getCurrentDate()
    db.session.add(news_info)
    db.session.commit()
    return jsonify(resp)
Ejemplo n.º 7
0
def ops():
    resp = {'code': 200, 'msg': '编辑成功', 'data': {}}
    req = request.values

    id = req['id'] if 'id' in req else 0
    act = req['act'] if 'act' in req else ""
    if not id:
        resp['code'] = -1
        resp['msg'] = "login_name is already exist"
        return jsonify(resp)

    if not act in ['remove', 'recover']:
        resp['code'] = -1
        resp['msg'] = "login_name is already exist"
        return jsonify(resp)
    user_info = User.query.filter(User.uid == id).first()
    if not user_info:
        resp['code'] = -1
        resp['msg'] = "login_name don't  exist"
        return jsonify(resp)

    if act == "remove":
        user_info.status = 0
    elif act == "recover":
        user_info.status = 1
    user_info.update_time = getCurrentDate()
    db.session.add(user_info)
    db.session.commit()

    return jsonify(resp)
Ejemplo n.º 8
0
def new_set():
    if request.method == "GET":
        resp_data = {}
        req = request.args
        id = int( req.get('id',0) )
        info = Books.query.filter_by( id = id ).first()
        if info and info.status != 1:
            return redirect( UrlManager.buildUrl("/books_lib/index") )
        resp_data['info'] = info
        resp_data['lib_location'] = app.config['LIB_LOCATION']
        resp_data['book_types'] = app.config['BOOK_TYPES']
        return ops_render("books_lib/new_set.html", resp_data)

    resp = {'code': 200, 'msg': '操作成功~~', 'data': {}}
    req = request.values
    id = int(req['id']) if 'id' in req and req['id'] else 0
    cat_id = int(req['cat_id']) if 'cat_id' in req and req['cat_id'] else 0
    title = req['title'] if 'title' in req else ''
    author = req['author'] if 'author' in req else ''
    press = req['press'] if 'press' in req else ''
    intro = req['intro'] if 'intro' in req else ''
    location = req['location'] if 'location' in req else ''
    amount = int(req['amount']) if 'amount' in req and req['amount'] else 0
    image = req['image'] if 'image' in req else ''

    if image is None or len(image) < 3:
        resp['code'] = -1
        resp['msg'] = "请上传封面图~~"
        return jsonify(resp)

    book_info = Books.query.filter_by(id=id).first()
    if book_info:
        model_info = book_info
        model_info.current_amount = amount  # 现在的数量,只有修改已有书籍的时候的才能修改
    else: #这里铁定的是第一次上新才能修改
        model_info = Books()
        model_info.status = 1
        model_info.current_amount = amount  #第一次上新在馆数量和上新数量是一样的
        model_info.update_amount = amount   #上新数量,只能 第一次 上新书才能更改,不允许出错,因为涉及到新书推荐的地方
        model_info.update_time = getCurrentDate()  #上新时间,只能第一次上新才能更改

    # 这6个均可修改的原因是有可能第一次上新的时候输错了书籍信息

    model_info.book_type = cat_id
    model_info.title = title
    model_info.author = author
    model_info.image = image
    model_info.press = press
    model_info.intro = intro
    model_info.location = location

    db.session.add(model_info)
    db.session.commit()

    return jsonify(resp)
Ejemplo n.º 9
0
def upload_info():
    req = request.values
    global id
    id = req['id'] if 'id' in req else 0
    name = req['name'] if 'name' in req else ""
    app.logger.info("name:" + name + " no:" + id)
    student = Student()
    student.updated_time = getCurrentDate()
    student.no = id
    student.name = name
    student.status = 0
    db.session.add(student)
    db.session.commit()
    return ""
Ejemplo n.º 10
0
def set():
    if request.method == "GET":
        resp_data = {}
        req = request.args
        id = req['id'] if 'id' in req else ''
        reback_url = UrlManager.buildUrl("/")
        info = News.query.filter_by(id=id).first()
        if not info:
            return redirect(reback_url)

        # news_info = News.query.filter(News.id == id).order_by(News.id.asc()).all()

        resp_data['info'] = info
        resp_data['lib_location'] = app.config['LIB_LOCATION']
        return ops_render("index/set.html", resp_data)

    resp = {'code': 200, 'msg': '操作成功', 'data': {}}
    req = request.values
    id = int(req['id']) if 'id' in req else 0
    title = req['title'] if 'title' in req else ''
    location = req['location'] if 'location' in req else ''
    content = req['content'] if 'content' in req else ''
    # 参数有效性的再次判断的 之前判断了title字数不能小于2,地点名不能少于5个字和content不能为空,这里就暂时鸡肋地随便判断下
    if title is None or len(title) > 20:
        resp['code'] = -1
        resp['msg'] = "请输入规范的标题名~~"
        return jsonify(resp)

    if location is None or len(location) > 15:
        resp['code'] = -1
        resp['msg'] = "请输入规范的校区图书馆名~~"
        return jsonify(resp)

    bulletin_info = News.query.filter_by(id=id).first()
    bulletin_info.title = title
    bulletin_info.content = content
    bulletin_info.location = location
    bulletin_info.created_time = getCurrentDate()
    # 数据库提交
    db.session.add(bulletin_info)
    db.session.commit()

    return jsonify(resp)
Ejemplo n.º 11
0
def login():
    resp = {'code': 200, 'msg': "success", "data": {}}
    req = request.values
    code = req['code']
    app.logger.info(req)
    if code == None or len(code) < 10:
        resp['code'] = -1
        resp['msg'] = "需要code"
        app.logger.info("need code")
        return jsonify(resp)
    openid = UserService.getWeChatOpenId(code)
    if openid == None:
        resp['code'] = -1
        resp['msg'] = "微信调用登录接口失败"
        app.logger.info("微信调用登录接口失败")
        return jsonify(resp)

    user_model = Users()
    resp["is_user"] = True
    user_info = Users.query.filter_by(openid=openid).first()
    if not user_info:
        user_model.openid = openid
        user_model.nickName = req['nickName']
        user_model.avatarUrl = req['avatarUrl']
        user_model.sex = req['gender']
        user_model.createTime = user_model.updateTime = getCurrentDate()
        db.session.add(user_model)
        db.session.commit()
        db.session.flush()
        resp["is_user"] = False
        user_info = Users.query.filter_by(openid=openid).first()
    resp['data'] = {
        'nickName': user_info.nickName,
        'avatarUrl': user_info.avatarUrl,
        'openid': user_info.openid
    }
    response = make_response(json.dumps(resp))
    response.set_cookie(
        "sunners",
        "%s#%s" % (UserService.geneAuthCode(user_info), user_info.id))
    return response
Ejemplo n.º 12
0
def back():
    resp_data = {}
    query = Lending.query
    query.count()  # 这个就是取得总的页数
    req = request.values
    page = int(req['p']) if ('p' in req and req['p']) else 1

    # if 'mix_kw' in req:
    #     rule = or_(Lending.title.ilike("%{0}%".format(req['mix_kw'])),
    #              Lending.lending_name.ilike("%{0}%".format(req['mix_kw'])))
    #   query = query.filter(rule)

    #    if 'status' in req and int(req['status']) > -1:
    #   query = query.filter(Lending.status == int(req['status']))

    page_params = {
        'total': query.count(),
        'page_size': app.config['PAGE_SIZE'],
        'page': page,
        'display': app.config['PAGE_DISPLAY'],
        'url': request.full_path.replace("&p={}".format(page), "")
    }
    pages = iPagination(page_params)
    offset = (page - 1) * app.config['PAGE_SIZE']
    limit = app.config['PAGE_SIZE'] * page

    #这里进行条件查询,查询逾期未还的
    list = query.filter(Lending.status == 1).all()[offset:limit]

    resp_data['list'] = list
    resp_data['pages'] = pages
    #resp_data['search_con'] = req
    #resp_data['status_mapping'] = app.config['STATUS_MAPPING']
    resp_data['current'] = 'back'
    resp_data['cur_date'] = getCurrentDate()

    return ops_render("member/back.html", resp_data)
Ejemplo n.º 13
0
def set():
    default_pwd = "******"
    if request.method == 'GET':
        resp_data = {}
        req = request.args
        uid = int(req.get('id',0))
        user_info = None
        if uid:
            user_info = User.query.filter_by(uid=uid).first()
        resp_data['user_info'] = user_info
        return ops_render("account/set.html", resp_data)

    resp ={'code':200,'msg':"操作成功",'data':{}}
    req = request.values
    id = req['id'] if 'id'in req else 0
    nickname= req['nickname'] if 'nickname' in req else ""
    mobile = req['mobile'] if 'mobile' in req else ""
    email = req['email'] if 'email' in req else ""
    login_name = req['login_name'] if 'login_name' in req else ""
    login_pwd = req['login_pwd'] if 'login_pwd' in req else ""
    if nickname is None or len(nickname)<2:
        resp['code'] = -1
        resp['msg'] = '请输入符合规范的姓名'
        return jsonify(resp)
    if mobile is None or len(mobile)<2:
        resp['code'] = -1
        resp['msg'] = '请输入符合规范的mobile'
        return jsonify(resp)
    if email is None or len(email)<2:
        resp['code'] = -1
        resp['msg'] = '请输入符合规范的email'
        return jsonify(resp)
    if login_name is None or len(login_name)<2:
        resp['code'] = -1
        resp['msg'] = '请输入符合规范login_name'
        return jsonify(resp)
    if login_pwd is None or len(login_pwd)<6:
        resp['code'] = -1
        resp['msg'] = '请输入符合规范的密码'
        return jsonify(resp)

    has_in = User.query.filter(User.login_name == login_name, User.uid!=id).first()
    if has_in:
        resp['code'] = -1
        resp['msg'] = '登录用户名已存在!'
        return jsonify(resp)
    user_info = User.query.filter_by(uid=id).first()
    if user_info:
        #编辑
        model_user = user_info
    else:
        #新增
        model_user = User()
        model_user.created_time = getCurrentDate()
        model_user.login_salt = UserService.geneSalt()

    model_user.nickname = nickname
    model_user.mobile = mobile
    model_user.email = email
    model_user.login_name = login_name
    if login_pwd != default_pwd:
        model_user.login_pwd = UserService.genePwd(login_pwd,model_user.login_salt)
    model_user.updated_time = getCurrentDate()


    db.session.add(model_user)
    db.session.commit()
    return jsonify(resp)
Ejemplo n.º 14
0
def speech_edit():
    if request.method == "GET":
        resp_data = {}
        req = request.args
        id = req['id'] if 'id' in req else ''
        reback_url = UrlManager.buildUrl("/dong_tai/speeches")
        speech_info = Speeches.query.filter_by(id=id).first()
        if not speech_info:
            return redirect(reback_url)

        # news_info = News.query.filter(News.id == id).order_by(News.id.asc()).all()

        resp_data['info'] = speech_info
        return ops_render("dong_tai/speech_edit.html", resp_data)

    resp = {'code': 200, 'msg': '操作成功', 'data': {}}
    req = request.values
    sid = int(req['id']) if 'id' in req else 0
    title = req['title'] if 'title' in req else ''
    address = req['address'] if 'address' in req else ''
    teacher = req['teacher'] if 'teacher' in req else ''
    email = req['email'] if 'email' in req else ''
    teacher_intro = req['teacher_intro'] if 'teacher_intro' in req else ''
    speech_intro = req['speech_intro'] if 'speech_intro' in req else ''
    time = req['time'] if 'time' in req else getCurrentDate()
    app.logger.info(time)

    #注意:
    #input datetime-local控件获取的日期格式是****-**-**T**:**:**,中间有个很奇怪的T,下面的这个函数已经的证明可以将其赋给数据库
    def deleteT(time):
        time1 = time[:10]
        time2 = time[11:]
        time = time1 + ' ' + time2 + ':00'
        return time

    time = deleteT(time)
    app.logger.info(time)

    # 假吧意思判断两个,重点是判断时间到底对没对
    if title is None or len(title) > 20:
        resp['code'] = -1
        resp['msg'] = "请输入规范的标题名~~"
        return jsonify(resp)

    if address is None:
        resp['code'] = -1
        resp['msg'] = "请输入规范的讲座地址~~"
        return jsonify(resp)

    speech_info = Speeches.query.filter_by(id=sid).first()
    speech_info.title = title
    speech_info.address = address
    speech_info.teacher = teacher
    speech_info.teacher_conn = email
    speech_info.speech_time = time
    speech_info.teacher_intro = teacher_intro
    speech_info.speech_intro = speech_intro
    # 数据库提交
    db.session.add(speech_info)
    db.session.commit()

    return jsonify(resp)