def article_edit(): if request.method == 'GET': getdata = request.args data = Crud.get_data_by_id(Article, getdata["id"]) article_data = object_to_dict(data) #替换掉产品数据里面的TAGS tags = Crud.search_data(TagRelation,and_(TagRelation.relation_id==getdata["id"] , TagRelation.tag_type == 2),'create_time') if tags: article_data['tags'] = [v.tag_id for v in tags] return {"code": 1, "data": article_data} elif request.method == "PUT": data = request.form form = ArticleForm(data) if form.validate(): #移除已保存的tag tags = Crud.search_data(TagRelation,and_(TagRelation.relation_id==data["id"] , TagRelation.tag_type == 2),'create_time') if tags: del_tags = Crud.clean_all(tags) #保存修改后的信息 result = Crud.update(Article,data) # 如果有标签信息,根据产品的id和标签ID保存关联的标签数据 if data['tags']: tags = data['tags'].split(',') tag_data = [TagRelation( tag_type = 2, relation_id = data["id"], tag_id =v ) for v in tags] Crud.add_all(tag_data) if result: op_log("修改文章 #%s" % data["id"]) return {"code": 1, "msg": '修改成功'} return {"code": 0, "msg": '修改失败,系统错误'} return {"code": 0, "msg": form.get_errors()}
def ad_list(space_id=None): sapce_data= Crud.get_data(Adspace) if space_id == None: ad_data = Crud.get_data(Ad,Ad.sort.desc()) else: ad_data = Crud.search_data(Ad,Ad.space_id == space_id,Ad.sort.desc()) return render_template("admin/ad/ad_list.html", space_id=space_id,ad_data=ad_data,sapce_data=sapce_data)
def auth_list(menuid=None): if menuid == None: auth_data = Crud.get_data(Auth) else: auth_data = Crud.search_data(Auth, Auth.menu_id == menuid) return render_template("admin/auth/auth_list.html", menuid=menuid, auth_data=auth_data)
def services(nav_id=None): if nav_id == None: return redirect(url_for('home.index')) #如果在本页搜索 if ('search' in request.args) and (request.args['search']): search = request.args['search'] return redirect(url_for('home.products', nav_id=53, search=search)) products = Crud.search_data(Product, Product.relation_id == nav_id, Product.sort.desc(), 9) return render_template("home/services.html", seo_data=seo_data, products=products)
def template_list(nav_id=None): data = Crud.get_data(Category, Category.sort.desc()) nav_tree = build_tree(data, 0, 0) if nav_id == None: template_data = Crud.get_data(Template, Template.sort.desc()) else: template_data = Crud.search_data(Template, Template.nav_id == nav_id, Template.sort.desc()) return render_template("admin/template/template_list.html", nav_tree=nav_tree, template_data=template_data, nav_id=nav_id)
def product(nav_id=None, id=None): rule = str(request.path) if id == None or nav_id == None: return redirect(url_for('home.index')) #如果在详情页搜索 if ('search' in request.args) and (request.args['search']): search = request.args['search'] return redirect(url_for('home.products', nav_id=nav_id, search=search)) #获取产品的详细信息 product_detail = Crud.get_data_by_id(Product, id) #如果点击量为None,赋值0 if not product_detail.click: product_detail.click = 0 #如果有缓存的点击量,更新点击量 if rule in CLICKS_COUNT: product_detail.click = int(product_detail.click) + int( CLICKS_COUNT[rule]) else: product_detail.click = int(product_detail.click) + 1 Crud.easy_update(product_detail) # 如果进行了非法操作 if product_detail.column_id != nav_id: return redirect(url_for('home.index')) #获取相识产品,用途和分类一致的产品 similar_products = Crud.search_data( Product, and_(Product.column_id == product_detail.column_id, Product.relation_id == product_detail.relation_id), Product.sort.desc(), 9) #获取标签作为关键词 keywords = ','.join([v.name for v in product_detail.tags]) #获取图集 pictures = product_detail.pictures.split(',') product_data = object_to_dict(product_detail) product_data['pictures'] = pictures #SEO信息 seo_data.keywords = keywords seo_data.description = product_detail.description seo_data.title = product_detail.title return render_template("home/product.html", product_data=product_data, seo_data=seo_data, similar_products=similar_products)
def products(nav_id=None): if nav_id == None: return redirect(url_for('home.index')) #参数转为字典 request_data = request.args.to_dict() if request.args.get('page'): page = int(request.args.get('page')) else: page = 1 param = [] #栏目筛选,当前栏目的所有子栏目 products_column = Crud.search_data(Category, Category.pid == nav_id) products_column_ids = [v.id for v in products_column] products_column_ids.append(nav_id) param.append(Product.column_id.in_(products_column_ids)) # 根据关联栏目筛选 if ('services' in request.args) and (request.args['services']): services = request.args['services'] param.append(Product.relation_id == services) #根据搜索条件筛选 if ('search' in request.args) and (request.args['search']): search = request.args['search'] param.append( or_(Product.title.like("%" + search + "%"), Product.info.like("%" + search + "%"), Product.content.like("%" + search + "%"))) #根据标签筛选 if ('tag' in request.args) and (request.args['tag']): tag = request.args['tag'] param.append(product_tag.c.tag_id == tag) param.append(Product.is_del == 0) products = Product.query.join(product_tag).filter(*param).order_by( Product.sort.desc()).paginate(page, 8) #如果没有标签信息,就不需要连表查询 else: products = Crud.search_data_paginate(Product, param, Product.sort.desc(), page, 8) return render_template("home/products.html", request_data=request_data, seo_data=seo_data, products=products)
def articles(nav_id=None): if nav_id == None: return redirect(url_for('home.index')) #参数转为字典 request_data = request.args.to_dict() if request.args.get('page'): page = int(request.args.get('page')) else: page = 1 param = [] #栏目筛选,当前栏目的所有子栏目 articles_column = Crud.search_data(Category, Category.pid == nav_id) articles_column_ids = [v.id for v in articles_column] articles_column_ids.append(nav_id) param.append(Article.column_id.in_(articles_column_ids)) #根据搜索条件筛选 if ('search' in request.args) and (request.args['search']): search = request.args['search'] param.append( or_(Article.title.like("%" + search + "%"), Article.info.like("%" + search + "%"), Article.content.like("%" + search + "%"))) #根据标签筛选 if ('tag' in request.args) and (request.args['tag']): tag = request.args['tag'] param.append(article_tag.c.tag_id == tag) param.append(Article.is_del == 0) articles = Article.query.join(article_tag).filter(*param).order_by( Article.sort.desc()).paginate(page, 4) else: articles = Crud.search_data_paginate(Article, param, Article.sort.desc(), page, 4) #articles = db.session.query(Article,Admin).join(Admin,Article.admin_id == Admin.id).filter(*param).order_by(Article.sort.desc()).paginate(page,4) return render_template("home/articles.html", request_data=request_data, seo_data=seo_data, articles=articles)
def reptile_export(): data = request.form #查询全部要到出的数据 reptile_ids = data['reptile_id'].split(',') reptile_data = Crud.search_data(ReptileList, ReptileList.id.in_(reptile_ids)) #导入到产品 add_data = [] if int(data['type']) == 1: #批量新增 for v in reptile_data: product = Product( title=v.content_name, cover=v.content_img, pictures=v.content_img, info=v.content_info, content=v.content_main, category_id=data['id'], ) add_data.append(product) #导入到文章 elif int(data['type']) == 2: #批量新增 for v in reptile_data: product = Article( title=v.content_name, cover=v.content_img, info=v.content_info, content=v.content_main, category_id=data['id'], ) add_data.append(product) result = Crud.add_all(add_data) if result: return {"code": 1, "msg": '导入数据到栏目完成'} return {"code": 0, "msg": '导入数据到栏目失败'}
def index(nav_id=None, cate_id=None, content_id=None): # 页码 url = request.url rule = str(request.path) page,artpage,seo_data,templates, category_data,all_templates= 1,1,{},[],getCategory(),getTemplates() nav_data, cate_data, content_data = { 'id': nav_id }, { 'id': cate_id }, { 'id': content_id } if request.args.get('page'): page = int(request.args.get('page')) if nav_id: nav_data = [v for v in category_data if v.id == nav_id][0] seo_data = seoData(nav_data.keywords, nav_data.info, nav_data.name) templates_data = [v for v in all_templates if v.nav_id == nav_id] else: templates_data = [v for v in all_templates if v.nav_id == 0] if cate_id: cate_data = [v for v in category_data if v.id == cate_id][0] seo_data = seoData(cate_data.keywords, cate_data.info, cate_data.name) if content_id: # 详情页 tableName = getTableName(int(cate_data.type)) relation_cate, relation_data = {}, [] if tableName: content_data = getSubData(tableName, content_id) #点击量 click = 0 #如果有缓存的点击量,更新点击量 if rule in CLICKS_COUNT: click = int(content_data.click) + int(CLICKS_COUNT[rule]) # 如果记录了缓存的更新,就把数据重置 CLICKS_COUNT[rule] = 0 else: click = int(content_data.click) + 1 Crud.auto_commit('UPDATE {} SET click = {} WHERE id = {} '.format( tableName, click, content_id)) if not content_data.id: return render_template('admin/404.html') seo_data = seoData(content_data.keywords, content_data.description, content_data.title) if content_data.relation_id: relation_cate = [ v for v in category_data if v.id == content_data.relation_id ][0] # 当前产品tag对应的产品 str_tag_content = '' if content_data.tags: tag_content = Crud.search_data( TagRelation, TagRelation.tag_id.in_((content_data.tags).split(',')), 'tag_id') #关联数据查询语句 if tag_content: str_tag_content = 'OR {0}.id in ({1})'.format( tableName, ','.join([ str(x) for x in [ v.relation_id for v in tag_content if v.tag_type == cate_data.type ] ])) relation_data = selectSubData( tableName, '{tableName}.relation_id={0} {1} AND {tableName}.id<>{2}'. format(noneToZero(content_data.relation_id), str_tag_content, content_data.id, tableName=tableName), 1, 8) temp_data = { "temp": { "template": getContentTemplate(int(cate_data.type)) }, "data": { "cate_data": cate_data, "content_data": content_data, "tags": getTag(), "relation_cate": relation_cate, "relation_data": relation_data } } templates.append(temp_data) else: for v in templates_data: temp_data, data = {}, {} ''' temp_data{ temp:模板设置内容 data:{当前栏目数据 sub_category:子栏目数据 sub_data:子栏目数据 tag:所有标签数据 } } ''' temp_data['temp'] = object_to_dict(v) sub_category, cates = [], [] for val in category_data: if v.data_id: if val.id == v.data_id: # 如果分配了数据当前栏目的数据就是分配的栏目 data = object_to_dict(val) if v.relation: # 如果是关联数据,直接取当前栏目的子栏目 if val.pid == nav_id: sub_category.append(val) else: # 当前栏目的子栏目 if val.pid == v.data_id: sub_category.append(val) data['sub_category'] = sub_category #如果是栏目数据 if v.data_type == 1: if cate_id: # url传了分类id cates.append(cate_id) cates = cates + [ cate.id for cate in category_data if cate.pid == cate_id ] else: # URL没有传分类id,读取设置的数据 cates.append(v.data_id) cates = cates + [cate.id for cate in sub_category] tableName = getTableName(int(data['type'])) # 如果是关联查询,就是通过 relation_id 进行搜索 if v.relation: selectColumn = 'relation_id' # 如果不是关联查询,就是通过 category_id 进行搜索 else: selectColumn = 'category_id' str_cats = ','.join([str(x) for x in cates]) data['sub_data'] = selectSubData( tableName, "%s.%s in (%s)" % (tableName, selectColumn, str_cats), page, v.data_num) elif v.data_type == 2: data['sub_data'] = Crud.search_data(Ad, Ad.space_id == v.data_id, Ad.sort.desc(), v.data_num) data['tags'] = getTag() temp_data['data'] = data # 全部页面数据压入数组 templates.append(temp_data) param = { 'nav_data': nav_data, 'cate_data': cate_data, 'content_data': content_data } return render_template("home/%s/home.html" % getWebTemplate(), seo_data=seo_data, templates=templates, param=param)