Esempio n. 1
0
def reptile_list():
    request_id = request.args.get('request_id')
    if request_id:
        request_id = int(request_id)
    if request.args.get('page'):
        page = int(request.args.get('page'))
    else:
        page = 1
    request_data = Crud.get_data(ReptileRequest,
                                 ReptileRequest.create_time.desc())
    if request_id:
        page_data = Crud.search_data_paginate(
            ReptileList, ReptileList.request_id == request_id,
            ReptileList.create_time.desc(), page, 20)
    else:
        page_data = Crud.get_data_paginate(ReptileList,
                                           ReptileList.create_time.desc(),
                                           page, 20)
    category_data = Crud.get_data(Category, Category.sort.desc())
    category_tree = build_tree(category_data, 0, 0)
    return render_template("admin/reptile/reptile_list.html",
                           request_data=request_data,
                           page_data=page_data,
                           category_tree=category_tree,
                           request_id=request_id)
Esempio n. 2
0
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)
Esempio n. 3
0
def searchData(cate_id, tag_id, search, page):
    '''
    数据查询
    '''
    cate_select, tag_select = '', ''
    if cate_id:
        cate_select = 'AND b.category_id=%d' % (cate_id)
    if tag_id:
        tag_select = 'AND r.tag_id=%d' % (tag_id)
    sql = '''select SQL_CALC_FOUND_ROWS b.* ,c.type,GROUP_CONCAT(r.tag_id SEPARATOR ',') as tags ,c.pid as cate_pid
    FROM
	(select p.id,p.title,p.cover,p.info,p.content,p.click,p.category_id,p.create_time,p.sort,p.is_del
	from product as p  
	union all 
	select a.id,a.title,a.cover,a.info,a.content,a.click,a.category_id,a.create_time,a.sort,a.is_del
	from article  as a) as b
    left join tag_relation as r on b.id = r.relation_id 
    left join category as c on c.id = b.category_id
    WHERE (b.title LIKE '%{0}%' OR b.content LIKE '%{0}%' OR b.info LIKE '%{0}%' ) {1} {2}
    GROUP BY b.id
    ORDER BY b.sort DESC
    LIMIT {3},{4};
    '''.format(search, tag_select, cate_select, (page - 1) * 8, 8)
    sql_data = Crud.auto_select(sql)
    count_num = Crud.auto_select("SELECT FOUND_ROWS() as countnum")
    count = int((count_num.first()).countnum)
    if sql_data:
        return Pagination(page, 8, count, sql_data.fetchall())
    return False
Esempio n. 4
0
def op_log(reason):
    operation_log = Operationlog(
            admin_id=current_user.id,
            ip=request.remote_addr,
            reason=reason
    )
    Crud.easy_add(operation_log)
Esempio n. 5
0
def article(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.articles', nav_id=nav_id, search=search))
    #获取产品的详细信息
    article_detail = Crud.get_data_by_id(Article, id)
    #如果点击量为None,赋值0
    if not article_detail.click:
        article_detail.click = 0
    #如果有缓存的点击量,更新点击量
    if rule in CLICKS_COUNT:
        article_detail.click = int(article_detail.click) + int(
            CLICKS_COUNT[rule])
    else:
        article_detail.click = int(article_detail.click) + 1
    Crud.easy_update(article_detail)
    # 如果进行了非法操作
    if article_detail.column_id != nav_id:
        return redirect(url_for('home.index'))
    #获取标签作为关键词
    keywords = ','.join([v.name for v in article_detail.tags])

    #SEO信息
    seo_data.keywords = keywords
    seo_data.description = article_detail.description
    seo_data.title = article_detail.title
    return render_template(
        "home/article.html",
        article_data=article_detail,
        seo_data=seo_data,
    )
Esempio n. 6
0
def tpl_extra():
    menu_data = Crud.get_data(Menu, Menu.sort.desc())
    rule = str(request.url_rule)
    #用户权限列表
    auth_urls = []
    if  hasattr(current_user, 'id') and current_user.id != 1:
        auth_urls = session.get('auth_urls')
    # 如果有分页,去掉分页标签
    has_pagination = rule.find("<")
    if has_pagination>0:
        rule = rule[0:has_pagination-1]
    #获取当前菜单信息,用于页面展示
    active_menu = Menu.query.filter(Menu.url == rule).first()
    #配置项
    conf_model_data = Crud.get_data(Conf, Conf.sort.desc())
    conf_data,webconfig = [],{}
    for v in conf_model_data:
        conf = object_to_dict(v)
        if conf['optional_values']:
            conf['optional_values'] = (conf['optional_values']).split(',')
        conf_data.append(conf)
        webconfig[conf['ename']] = conf['default_value']
    data = dict(
            online_time= datetime.now().strftime("%Y/%m/%d %H:%M:%S"),
            menu_tree=build_tree(menu_data, 0, 0),
            rule = rule,
            active_menu = active_menu,
            conf_data = conf_data,
            webconfig = webconfig,
            auth_urls = auth_urls
    )
    return data
Esempio n. 7
0
def article_list():
    category_id = None
    page = 1
    search = ''
    if request.args.get('category_id'):
        category_id = int(request.args.get('category_id'))
    if request.args.get('page'):
        page = int(request.args.get('page'))
    if request.args.get('search'):
        search = request.args.get('search')
    #产品可用标签
    tag_data = Crud.get_data(Tag)
    #栏目树
    category_data = Crud.get_data(Category, Category.sort.desc())
    category_tree = build_tree(category_data, 0, 0)
    #产品栏目
    article_category = [v  for v in category_tree if v['type'] == 2 or v['type'] == 3 ]
    if category_id == None:
        article_data = Crud.search_data_paginate(Article,Article.title.like("%" + search + "%"),Article.sort.desc(),page,10)
    else:
        article_data = Crud.search_data_paginate(Article,and_(Article.category_id == category_id,Article.title.like("%" + search + "%")),Article.sort.desc(),page,10)
    return render_template("admin/article/article_list.html",
                           category_id=category_id,
                           article_data=article_data,
                           article_category = article_category,
                           tag_data = tag_data,
                           )
Esempio n. 8
0
 def post(self):
     '''
     角色授权
     '''
     args = parse_rules.parse_args()
     id = args.get('id')
     if not id:
         abort(RET.BadRequest, msg='请勿非法操作')
     sing_data = getSingData(id)
     rules = json.loads(args.get('rules'))
     # 清空原来的rules
     old_data = RoleRule.query.filter_by(role_id=id).all()
     if old_data:
         Crud.clean_all(old_data)
     #没有设置任何权限点就清空后返回
     if not rules:
         return {'status': RET.OK, 'msg': '权限设置成功'}
     # 新增新的权限
     relation_data = [
         RoleRule(role_id=sing_data.id, rule_id=v) for v in rules
     ]
     if Crud.add_all(relation_data):
         sing_data.last_editor = g.admin.username
         sing_data.updata()
         return {'status': RET.OK, 'msg': '权限设置成功'}
     abort(RET.BadRequest, msg='权限设置失败,请重试...')
Esempio n. 9
0
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)
Esempio n. 10
0
def reptile_get():
    getdata = request.args
    reptile_request = Crud.get_data_by_id(ReptileRequest, getdata['id'])
    urls = []  #处理为数组,接受多页查询
    if reptile_request.begin_page and reptile_request.end_page:  #有起止页面
        urls = [
            reptile_request.url.replace("{}", str(v))
            for v in range(int(reptile_request.begin_page),
                           int(reptile_request.end_page) + 1)
        ]
    else:
        urls.append(reptile_request.url)
    content_obj = {
        'content_name': reptile_request.content_name,
        'content_info': reptile_request.content_info,
        'content_main': reptile_request.content_main,
        'content_img': reptile_request.content_img,
    }
    page_list, number = [], 0
    for url in urls:
        page_list.extend(getReptileList(url, reptile_request.dom))
    for content_url in page_list:
        number += 1
        print('-' * 40 + '开始爬第%d/%d个数据(%s)' %
              (number, len(page_list), content_url) + '-' * 40)
        #如果url已经被爬过了,跳过
        count = ReptileList.query.filter(
            ReptileList.is_del == 0,
            getattr(ReptileList, 'url') == content_url).count()
        if count > 0:
            print('-' * 40 + '该数据已经被拿下' + '-' * 40)
            continue
        content = getReptileContent(content_url, content_obj)
        #如果没有取到数据
        if 'content_name' not in content.keys(
        ) or 'content_main' not in content.keys():
            return
        #如果有图片,下载图片,替换url
        if 'content_img' in content.keys():
            if content['content_img']:
                content['content_img'] = downImage(
                    full_url(url, content['content_img']))
        content['request_id'] = getdata['id']
        content['url'] = content_url
        #匹配新增代码,因批量爬取可能会中断,采用采集一个存一个的方式
        # reptile_obj = ReptileList(
        #     request_id=getdata['id'],
        #     url=content_url,
        #     content_name=content['content_name'],
        #     content_info=content.setdefault('content_info', ''),
        #     content_main=content['content_main'],
        #     content_img=content.setdefault('content_img', ''),
        # )
        Crud.add(ReptileList, content, 'url')
        print('-' * 40 + '第%d个数据已爬取成功' % (number) + '-' * 40)
    if number > 0:
        return {"code": 1, "msg": "已成功爬取" + str(number) + "个数据!"}
    return {"code": 0, "msg": "数据不存在或已经被爬过啦!"}
Esempio n. 11
0
def interface(model_name=None):
    data = {}
    if model_name =='category':
        category_data = Crud.get_data(Category,Category.sort.desc())
        data = build_tree(category_data, 0, 0)
    elif model_name == 'adspace':
        adspace_data = Crud.get_data(Adspace,Adspace.create_time.desc())
        data = [ object_to_dict(v) for v in adspace_data]
    return jsonify(data)
Esempio n. 12
0
def admin_reset():
    getdata = request.args
    data = Crud.get_data_by_id(Admin, getdata['id'])
    data.password = "******"
    result = Crud.easy_update(data)
    if result:
        op_log("重置密码")
        return {"code": 1, "msg": "重置密码成功!"}
    return {"code": 0, "msg": '重置失败,系统错误'}
Esempio n. 13
0
def role_list(page=None):
    sql = '''
    SELECT menu.name as menu_name,auth.id,auth.name
    FROM auth LEFT JOIN menu ON auth.menu_id = menu.id 
    WHERE auth.is_del = 0
    ORDER BY menu.sort DESC;
    '''
    data = Crud.auto_select(sql)  
    menu_auths = rows_by_date(data.fetchall(),'menu_name')
    page_data = Crud.get_data_paginate(Role, Role.create_time.asc(), page, 10)
    return render_template("admin/role/role_list.html",page_data = page_data,menu_auths = menu_auths)
Esempio n. 14
0
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)
Esempio n. 15
0
def webconfig():
    data = Crud.get_data(Conf, Conf.sort.desc())
    if request.method == 'GET':
        return render_template("admin/conf/webconfig.html")
    elif request.method == 'POST':
        form_data = request.form
        for v in data:
            v.default_value = form_data[v.ename]
        result = Crud.easy_update(data)
        if result:
            op_log("修改配置")
            return {"code":1, "msg": '保存成功'}
        return {"code":0, "msg": '保存失败,系统错误'}
Esempio n. 16
0
def menu_edit():
    if request.method == 'GET':
        getdata = request.args
        data = Crud.get_data_by_id(Menu, getdata['id'])
        return jsonify({"code": 1, "data": object_to_dict(data)})
    elif request.method == "PUT":
        data = request.form
        form = MenuForm(data)
        if form.validate():
            result = Crud.update(Menu, data, 'name')
            if result:
                op_log("修改菜单#%s" % data["id"])
                return {"code": 1, "msg": "修改成功!"}
            return {"code": 0, "msg": "修改失败,系统错误或菜单已存在"}
        return {"code": 0, "msg": form.get_errors()}
Esempio n. 17
0
def reptile_edit():
    if request.method == 'GET':
        getdata = request.args
        data = Crud.get_data_by_id(ReptileRequest, getdata['id'])
        return jsonify({"code": 1, "data": object_to_dict(data)})
    elif request.method == "PUT":
        data = request.form
        form = ReptileForm(data)
        if form.validate():
            result = Crud.update(ReptileRequest, data, "name")
            if result:
                op_log("修改爬虫任务#%s" % data["id"])
                return {"code": 1, "msg": '修改成功'}
            return {"code": 0, "msg": '修改失败,系统错误或名称已存在'}
        return {"code": 0, "msg": form.get_errors()}
Esempio n. 18
0
def auth_edit():
    if request.method == 'GET':
        getdata = request.args
        data = Crud.get_data_by_id(Auth, getdata["id"])
        return {"code": 1, "data": object_to_dict(data)}
    elif request.method == "PUT":
        data = request.form
        form = AuthForm(data)
        if form.validate():
            result = Crud.update(Auth, data, 'name')
            if result:
                op_log("修改权限 #%s" % data["id"])
                return {"code": 1, "msg": '修改成功'}
            return {"code": 0, "msg": '修改失败,系统错误或名称重复'}
        return {"code": 0, "msg": form.get_errors()}
Esempio n. 19
0
def adspace_edit():
    if request.method == 'GET':
        getdata = request.args
        data = Crud.get_data_by_id(Adspace, getdata['id'])
        return  {"code": 1, "data": object_to_dict(data)}
    elif request.method == "PUT":
        data = request.form
        form = AdspaceForm(data)
        if form.validate():
            result = Crud.update(Adspace,data,"name")
            if result:
                op_log("修改广告位#%s" %  data["id"])
                return {"code": 1, "msg": '修改成功'}
            return {"code": 0, "msg": '修改失败,系统错误或名称已存在'}    
        return {"code": 0, "msg": form.get_errors()}
Esempio n. 20
0
def _permission():
    admin = g.admin
    if not admin:
        abort(RET.NotFound, msg='请登录后访问')
    # 是否有权限
    if admin.is_super == 0:
        # 获取权限列表
        method = request.method
        path = request.path
        sql = '''
        SELECT  CONCAT(r.url,':',r.method) as 'request', r.*
        FROM admin as a
        left join admin_role as ar on a.id = ar.admin_id
        left join role_rule as rr on rr.role_id = ar.role_id
        left join rule as r on r.id = rr.rule_id
        WHERE a.is_del = 0
        AND a.id = %s
        ''' % admin.id
        sql_data = Crud.auto_select(sql)
        fetchall_data = sql_data.fetchall()
        rules = list(set([v.request for v in fetchall_data]))
        # 当前用户的菜单和权限
        g.menus = list(set([v.menu_id for v in fetchall_data]))
        g.auth = fetchall_data
        if (path + ':' + method) not in rules:
            abort(RET.Forbidden, msg='您的权限不足,请联系管理员')
Esempio n. 21
0
def conf_edit():
    if request.method == 'GET':
        getdata = request.args
        data = Crud.get_data_by_id(Conf, getdata['id'])
        conf_data = object_to_dict(data)
        return jsonify({"code": 1, "data":conf_data})
    elif request.method == "PUT":
        data = request.form
        form = ConfForm(data)
        if form.validate():
            result = Crud.update(Conf,data,"ename")
            if result:
                op_log("修改配置项#%s" %  data["id"])
                return {"code":1, "msg": '修改成功'}
            return {"code":0, "msg": '修改失败,系统错误或调用名已存在'}
        return {"code": 0, "msg": form.get_errors()}
Esempio n. 22
0
def article_del():
    deldata = request.form
    data = Article.query.filter_by(id=deldata['id']).first_or_404()
    result = Crud.delete(data)
    if result:
        op_log("删除文章-%s" % data.title)
        return {"code": 1, "msg": '删除成功'}
    return {"code": 0, "msg": '删除失败'}    
Esempio n. 23
0
def tag_del():
    deldata = request.form
    data = Tag.query.filter_by(id=deldata['id']).first_or_404()
    result = Crud.delete(data)
    if result:
        op_log("删除标签-%s" % data.name)
        return {"code": 1, "msg": '删除成功'}
    return {"code": 0, "msg": '删除失败,请重试'}
Esempio n. 24
0
def admin_edit():
    if request.method == 'GET':
        getdata = request.args
        data = Crud.get_data_by_id(Admin, getdata['id'])
        return {
            "code": 1,
            "id": data.id,
            "role_id": data.role_id,
            "username": data.username
        }
    elif request.method == "PUT":
        data = request.form
        result = Crud.update(Admin, data)
        if result:
            op_log("修改管理员角色#%s" % data["id"])
            return {"code": 1, "msg": '修改成功'}
        return {"code": 0, "msg": '修改失败,系统错误或管理员已存在'}
Esempio n. 25
0
def auth_del():
    deldata = request.form
    data = Auth.query.filter_by(id=deldata['id']).first_or_404()
    result = Crud.delete(data)
    if result:
        op_log("删除权限-%s" % data.name)
        return {"code": 1, "msg": '删除成功'}
    return {"code": 0, "msg": '删除失败,系统错误'}
Esempio n. 26
0
def reptile_data_del():
    deldata = request.form
    data = ReptileList.query.filter_by(id=deldata['id']).first_or_404()
    result = Crud.delete(data)
    if result:
        op_log("删除爬虫数据-%s" % data.content_name)
        return {"code": 1, "data": '删除成功'}
    return {"code": 0, "data": '删除失败'}
Esempio n. 27
0
def role_del():
    delData = request.form
    if int(delData['id']) == 1:
            return jsonify({"code": 2, "msg": "超级管理员不能删除!"})
    data = Role.query.filter_by(id=delData['id']).first_or_404()
    result = Crud.delete(data)
    op_log("删除角色-%s" % data.name)
    return jsonify(result)
Esempio n. 28
0
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()}
Esempio n. 29
0
def getWebConfig():
    '''
    获取站点配置信息
    '''
    webconfig = {}
    conf_model_data = Crud.get_data(Conf, Conf.sort.desc())
    for v in conf_model_data:
        webconfig[v.ename] = v.default_value
    return webconfig
Esempio n. 30
0
 def delete(self):
     '''
     删除
     '''
     args = parse_id.parse_args()
     id = args.get('id')
     if not id:
         abort(RET.BadRequest, msg='请勿非法操作')
     sing_data = getSingData(id)
     sing_data.last_editor = g.admin.username
     result = sing_data.delete()
     # 清空原来的授权
     _auth = RoleRule.query.filter_by(role_id=id).all()
     if _auth:
         Crud.clean_all(_auth)
     if result:
         return {'status': RET.OK, 'msg': '删除成功'}
     abort(RET.BadRequest, msg='删除失败,请重试')