def comment(): if request.method == 'POST': commentdata = request.get_json() post_user_id = int(commentdata['post_user_id']) #发表帖子 if commentdata['is_host']: max_group_id = db_session.query(func.max(Comment.group_id)).filter(Comment.from_novel_id == int(commentdata['novel_id'])).first() if max_group_id is None: group_id = 1 else: group_id = int(max_group_id[0]) + 1 new_comment = Comment(from_user_id=post_user_id, from_novel_id=int(commentdata["novel_id"]), is_host=True, group_id=group_id, content=commentdata["comment"]) db_session.add(new_comment) db_session.flush() comment_id = new_comment.id db_session.commit() return jsonify(code=1, comment_id=comment_id, group_id=group_id) #回复帖子 else: new_comment = Comment(from_user_id=post_user_id, from_novel_id=int(commentdata['novel_id']), to_user_id=int(commentdata['to_user_id']), is_host=False, group_id=int(commentdata['group_id']), content=commentdata['comment']) db_session.add(new_comment) db_session.flush() comment_id = new_comment.id to_nickname = new_comment.to_user.nickname to_headpic = new_comment.to_user.headpic db_session.commit() return jsonify(code=1, comment_id=comment_id, to_nickname=to_nickname, to_headpic=to_headpic)
def book_infor(novel_id): novel = db_session.query(Novel).filter(Novel.id == novel_id).one() if request.method == 'GET': return render_template('book_infor.html', novel=novel) elif request.method == 'POST': novel.name = request.form['novel_name'] novel.author = request.form['novel_author'] novel.last_update = request.form['novel_last_update'] novel.type = request.form['novel_type'] novel.image = request.form['novel_image'] novel.description = request.form['novel_description'] novel.recommend = int(request.form['novel_recommend']) novel.source_url = request.form['novel_source_url'] novel.chapter_source_bequge_url = request.form['chapter_source_bequge_url'] novel.chapter_source_ybd_url = request.form['chapter_source_ybd_url'] db_session.flush() db_session.commit() return redirect(request.headers['referer'])
def post_book(): userid = g.current_user.id content = request.get_json().get('getnav') # print userid if len(content) > 0: addbook = Guestbook(userid=userid, content=content, addtime=datetime.datetime.now()) try: db_session.add(addbook) db_session.commit() db_session.flush() gbid = addbook.id teamid = g.current_user.teamid manageid = db_session.query(Manage).filter( or_(Manage.teamid == teamid, Manage.group_id == 1)).all() # print len(manageid) if manageid: glbooks = [ MuGb(manageid=manageid[i].id, bookid=gbid, status=0) for i in range(len(manageid)) ] db_session.query(MuGb).first() try: db_session.add_all(glbooks) db_session.commit() except Exception as e: print(e) db_session.rollback() return jsonify({"state": "数据库错误"}) except Exception as e: print(e) db_session.rollback() return jsonify({'code': 0, 'message': '数据库错误'}) db_session.close() return jsonify({'state': 'ok'})
def useralter(): ''' 用户修改 ''' # 得到用户参数 new_phone_number = request.values.get('new_phone_number') new_password = request.values.get('new_password') new_nickname = request.values.get('new_nickname') # 根据登陆的token 获得所登陆者的电话号码 # 获得用户 user = g.current_user # 修改电话号码 if new_phone_number and len(new_phone_number) != 11: return jsonify({'message': '电话位数不符合', 'code': 2}) # 修改密码 if new_password and len(new_password) < 6: return jsonify({'message': '密码至少六位数', 'code': 2}) # import ipdb; ipdb.set_trace() # 判断输入的密码和电话是否有为空的 不为空则修改原始数据 # 原始电话 phone_number = user.phone_number if new_phone_number: user.phone_number = new_phone_number if new_password: user.password = new_password # 判断用户昵称是否修改了 if new_nickname: user.nickname = new_nickname db_session.add(user) db_session.flush() db_session.commit() redis_store.delete('token:{0}'.format(g.token)) redis_store.delete('user:{0}'.format(phone_number)) return jsonify({'message': '修改成功,请重新登陆', 'code': 200})
def userregister(): ''' 用户注册 ''' # 得到用户参数 phone_number = request.values.get('phone_number') password = request.values.get('password') nickname = request.values.get('nickname') # 非空判断 if not phone_number: return jsonify({'message': '请输入电话号码', 'code': 0}) elif len(phone_number) != 11: return jsonify({'message': '电话位数不符合', 'code': 2}) if not password: return jsonify({'message': '密码不允许为空', 'code': 0}) if len(password) < 6: return jsonify({'message': '密码至少六位数', 'code': 2}) if not nickname: nickname = 'zhangsan' # 判断号码是否被使用 user = User.query.filter_by(phone_number=phone_number).first() # import ipdb; ipdb.set_trace() if user: return jsonify({'message': '该号码已被注册', 'code': 1}) u1 = User() u1.password = password u1.phone_number = phone_number u1.nickname = nickname # import ipdb; ipdb.set_trace() db_session.add(u1) db_session.flush() db_session.commit() # import ipdb; ipdb.set_trace() return jsonify({'message': '注册成功', 'code': 200})
def upload_and_db(title, imgs): """ 把得到的img的url和title上传到七牛,返回的url存入到数据库 """ q = Auth(access_key, secret_key) new_pic = Picture(title=title) db_session.add(new_pic) db_session.flush() picture_id = new_pic.id for img in imgs: print img data = requests.get(img).content new_path = Path(picture=new_pic) db_session.add(new_path) db_session.flush() key_path = key_upload + str(new_path.id) mime_type = "image/jpeg" token = q.upload_token(bucket_name, key_path) ret, info = put_data(token, key_path, data, mime_type=mime_type, check_crc=True) new_path.path_ = qiniu_url + ret['key'] db_session.commit() return picture_id
def edit_product(): this = 'edit' getid = request.args.get('id') washlist = Wash.wash_check().all() sizelist = Size.size_check().all() recommend = Recommend.recommend_check().all() towclass = [] for cls in recommend: towclass.append({'id':cls.id, 'topid':cls.topid, 'titles':cls.titles}) recommend = json.dumps(get_Children(0,towclass)) classify = Classify.classify_check().all() towclass = [] for cls in classify: towclass.append({'id':cls.classid, 'text':cls.classname, 'topid':cls.topid}) classifylist = json.dumps(getaChildren(0,towclass)) form = EditProductForm() productData = Product.query.filter_by(proid = getid).first() pid = productData.pid if productData: form.proid.data = productData.proid form.pid.data = productData.pid form.new_p.data = productData.new_p form.covers.data = productData.covers form.oldcovers.data = productData.covers form.oldpid.data = productData.oldpid form.creatorid.data = productData.creatorid form.teamid.data = productData.teamid form.proname.data = productData.proname form.price.data = productData.price form.model_height.data = productData.model_height form.fabric.data = productData.fabric form.lining.data = productData.lining form.size_table.data = productData.size_table form.weights.data = productData.weights form.the_net.data = productData.the_net form.first_order.data = productData.first_order form.again_order.data = productData.again_order form.shipping.data = productData.shipping form.flying.data = productData.flying form.place.data = productData.place form.size.data = productData.size form.colorid.data = productData.colorid form.display.data = productData.display form.text_centont.data = productData.text_centont if form.validate_on_submit(): productData.proid = int(request.form.get('proid')) productData.pid = int(request.form.get('pid')) productData.oldpid = int(request.form.get('oldpid')) productData.new_p = int(request.form.get('new_p')) productData.creatorid = int(request.form.get('creatorid')) productData.teamid = int(request.form.get('teamid')) productData.proname = request.form.get('proname') productData.price = request.form.get('price') productData.model_height = request.form.get('model_height') productData.fabric = request.form.get('fabric') productData.lining = request.form.get('lining') productData.wash = request.form.get('wash') productData.size_table = request.form.get('size_table') productData.weights = request.form.get('weights') productData.the_net = request.form.get('the_net') productData.first_order = request.form.get('first_order') productData.again_order = request.form.get('again_order') productData.shipping = request.form.get('shipping') productData.flying = request.form.get('flying') productData.place = request.form.get('place') productData.size = request.form.get('size') productData.colorid = request.form.get('colorid') productData.display = request.form.get('display') html_parser = HTMLParser.HTMLParser() html_con = request.form.get('text_centont') productData.text_centont = html_parser.unescape(html_con) # 处理封面图片 getcovers = request.form.get('covers') oldcovers = request.form.get('oldcovers') print (getcovers,oldcovers) if getcovers == '': productData.covers = oldcovers try: db_session.add(productData) db_session.commit() except: flash("数据库错误!") return redirect('%s%s' %('/manage/add_product?pid=',pid)) if getcovers != oldcovers and getcovers != '': productData.covers = getcovers try: db_session.add(productData) db_session.commit() except: flash("数据库错误!") return redirect('%s%s' %('/manage/add_product?pid=',pid)) if oldcovers != '' and oldcovers != None and oldcovers != '0': deli = db_session.query(Images).filter(Images.id == oldcovers).first(); imgurl = deli.picurl imgurl = actros_split(imgurl) delImage(imgurl) db_session.delete(deli) db_session.commit() proid = int(request.form.get('proid')) color_check = productData.colors.all() # 颜色部分 colortitle = request.form.getlist('colortitle') color = request.form.getlist('color') number = request.form.getlist('number') picurl = request.form.getlist('picid') cover = request.form.getlist('cover') if len(color_check) == len(color) : for i in range(len(color_check)): color_check[i].colortitle = colortitle[i] color_check[i].color = color[i] color_check[i].number = number[i] color_check[i].picurl = picurl[i] color_check[i].cover = cover[i] elif len(color_check) < len(color) : for i in range(len(color_check)): color_check[i].colortitle = colortitle[i] color_check[i].color = color[i] color_check[i].number = number[i] color_check[i].picurl = picurl[i] color_check[i].cover = cover[i] color_list = [ProColor( colortitle = str(colortitle[i]), color = str(color[i]), number = str(number[i]), cover = cover[i], proid = proid ) for i in range(len(color_check),len(color))] db_session.add_all(color_list) db_session.commit() db_session.flush() ''' 调用图片排序添加proid函数 因为是增加了新的颜色组,所以第一个参数使用 update 最后一个参数加入新添加的数据 color_list ''' give_picid('update',picurl,color_check,color_list) #调用图片排序添加proid函数 db_session.commit() db_session.flush() give_picid('up',picurl,color_check,None) #调用图片排序添加proid函数 db_session.commit() db_session.close() flash("添加成功,<span id='time'>3</span>秒后自动跳转管理页。") return redirect('%s%s' %('/manage/add_product?pid=',pid)) return render_template( "edit_product.html", this = this, pid = pid, thdata = productData, washlist = washlist, sizelist = sizelist, recommend= recommend, classifylist=classifylist, pagename='product', form=form)
def add_product(): pid = int(request.args.get('pid')) this = 'add' washlist = Wash.wash_check().all() sizelist = Size.size_check().all() recommend = Recommend.recommend_check().all() towclass = [] for cls in recommend: towclass.append({'id':cls.id, 'topid':cls.topid, 'titles':cls.titles}) recommend = json.dumps(get_Children(0,towclass)) classify = Classify.classify_check().all() towclass = [] for cls in classify: towclass.append({'id':cls.classid, 'text':cls.classname, 'topid':cls.topid}) classifylist = json.dumps(getaChildren(0,towclass)) form = AddProductForm() if form.validate_on_submit(): pid = int(request.form.get('pid')) oldpid = int(request.form.get('oldpid')) creatorid = int(request.form.get('creatorid')) teamid = int(request.form.get('teamid')) new_p = int(request.form.get('new_p')) covers = request.form.get('covers') proname = request.form.get('proname') price = request.form.get('price') model_height = request.form.get('model_height') fabric = request.form.get('fabric') lining = request.form.get('lining') wash = request.form.get('wash') size_table = request.form.get('size_table') weights = request.form.get('weights') the_net = request.form.get('the_net') first_order = request.form.get('first_order') again_order = request.form.get('again_order') shipping = request.form.get('shipping') flying = request.form.get('flying') place = request.form.get('place') size = request.form.get('size') colorid = request.form.get('colorid') display = request.form.get('display') html_parser = HTMLParser.HTMLParser() html_con = request.form.get('text_centont') text_centont = html_parser.unescape(html_con) if covers == '' or covers == None: covers = 0 product = Product( pid = pid, oldpid = oldpid, new_p = new_p, covers = covers, creatorid = creatorid, teamid = teamid, proname = proname, price = price, text_centont = text_centont, model_height = model_height, fabric = fabric, lining = lining, wash = wash, size_table = size_table, weights = weights, the_net = the_net, first_order = first_order, again_order = again_order, shipping = shipping, flying = flying, place = place, size = size, colorid = colorid, display = display, add_time = datetime.datetime.now() ) product_check = db_session.query(Product).first() if len(proname): try: db_session.add(product) db_session.commit() db_session.flush() pro_id = product.proid except: flash("数据库错误!") return redirect('%s%s' %('/manage/add_product?pid=',pid)) # 颜色部分 colortitle = request.form.getlist('colortitle') color = request.form.getlist('color') number = request.form.getlist('number') proid = pro_id picurl = request.form.getlist('picid') cover = request.form.getlist('cover') # print picurl color_list = [ProColor( colortitle = str(colortitle[i]), color = str(color[i]), number = str(number[i]), cover = cover[i], picurl = picurl[i], proid = proid ) for i in range(len(color))] color_check = db_session.query(ProColor).first() db_session.add_all(color_list) db_session.commit() db_session.flush() # 开始处理复杂的图片所属颜色id和排序问题 # 开始处理得到排序 give_picid('up',picurl,color_list,None) #调用图片排序添加proid函数 db_session.commit() db_session.close() flash("添加成功,<span id='time'>3</span>秒后自动跳转管理页。") return redirect('%s%s' %('/manage/add_product?pid=',pid)) # print recommend return render_template( "edit_product.html", pagename='product', this = this, pid = pid, washlist = washlist, sizelist=sizelist, recommend= recommend, classifylist=classifylist, form = form)
def post_order(): userid = g.current_user.id userphone = g.current_user.phone orderitems = request.get_json().get('orderitems') addressid = request.get_json().get('addressid') teamid = g.current_user.teamid # 设计订单编号 nowTime = datetime.datetime.now().strftime("%Y%m%d%H%M") #生成当前时间 randomNum = random.randint(10000, 100000) #生成的随机5位整数n,其中1000<=n<=10000 phnumber = str(userphone)[-4:] ordernumber = '%s%s%s%s' % (int(nowTime), int(phnumber), int(teamid), int(randomNum)) # 订单类型 order_type = orderitems[0]['order_type'] # 计算订单总金额 和 图片真实地址 和 购物车id cartid = [] all_total = 0 if 'cartid' not in orderitems[0]: all_total = orderitems[0]['color_total'] else: for i in range(len(orderitems)): # 计算订单总金额 all_total += orderitems[i]['color_total'] # 得到购物车id cartid.append(orderitems[i]['cartid']) if len(orderitems) > 0: addorder = Order(number=ordernumber, userid=userid, teamid=teamid, addressid=addressid, state=0, order_total=all_total, order_type=order_type, addtime=datetime.datetime.now()) try: db_session.add(addorder) db_session.commit() # 获取刚加添加的id db_session.flush() order_id = addorder.id order_item = [ OrderDetailed(proid=int(orderitems[i]['proid']), pronumber=orderitems[i]['pronumber'], size=orderitems[i]['size'], color=orderitems[i]['color'], unit=int(orderitems[i]['unit']), price=int(float(orderitems[i]['price'])), color_total=int(orderitems[i]['color_total']), order_id=int(order_id)) for i in range(len(orderitems)) ] try: db_session.add_all(order_item) db_session.commit() except Exception as e: print(e) db_session.rollback() return jsonify({'code': 3, 'message': '数据库错误'}) except Exception as e: print(e) db_session.rollback() return jsonify({'code': 3, 'message': '数据库错误'}) # 删除购物车 delcart = db_session.query(UserCart).filter(UserCart.id.in_( (cartid))).all() try: [db_session.delete(n) for n in delcart] db_session.commit() db_session.close() except Exception as e: print(e) db_session.rollback() return jsonify({'code': 3, 'message': '数据库错误'}) return jsonify({'code': 1, 'message': '下单成功'})