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)
def login(): form = LoginForm() data = form.data # 如果没有超级管理员,就开始初始化数据 count = Admin.query.filter().count() if count == 0 and data["username"] == 'xuannan': from app.init_data import init_ad,init_admin,init_adspace,init_auth,init_category,init_conf,init_menu,init_role,init_reptile,init_template,init_article Crud.auto_commit(init_admin) Crud.auto_commit(init_menu) Crud.auto_commit(init_auth) Crud.auto_commit(init_role) Crud.auto_commit(init_category) Crud.auto_commit(init_ad) Crud.auto_commit(init_adspace) Crud.auto_commit(init_conf) Crud.auto_commit(init_reptile) Crud.auto_commit(init_template) Crud.auto_commit(init_article) if form.validate_on_submit(): admin = Admin.query.filter_by(username=data["username"]).first() if admin and admin.check_pwd(data["password"]): login_user(admin) adminlog = Adminlog( admin_id=admin.id, ip=request.remote_addr, info = '登录成功' ) Crud.easy_add(adminlog) # 登陆成功后的初始值 # 用户权限列表 sql = ''' SELECT url FROM auth LEFT JOIN role ON FIND_IN_SET(auth.id,role.auths) LEFT JOIN admin ON admin.role_id = role.id WHERE admin.id = %i AND auth.is_del = 0 '''%(current_user.id) auth_data = Crud.auto_select(sql) session['auth_urls'] = [v.url for v in auth_data.fetchall()] return redirect(request.args.get("next") or url_for("admin.index")) else: adminlog = Adminlog( admin_id=0, ip=request.remote_addr, info = '登录失败,账号:%s;密码%s'%(data["username"],data["password"]) ) Crud.easy_add(adminlog) flash("用户名或密码错误!") return redirect(url_for("admin.login")) return render_template("admin/login.html", form=form)