Exemplo n.º 1
0
def edit(site_id):
    site = Site(current_app)
    hook_funcs = [];
    attrs = dir(hooks);
    for attr in attrs:
        if attr.find("__") == -1:
            hook_funcs.append(attr)
    if request.method == "POST":
        name = request.form.get("name")
        url = request.form.get("url")
        descript = request.form.get("descript")
        sync_type = request.form.get("sync_type")
        if not name:
            error = "请输入站点名称"
        elif not url:
            error = "请输入站点链接"
        elif not sync_type:
            error = "请选择入库方式"
        else:
            site = Site(current_app)
            sync_profile = {
                "staticUrl": request.form.get("staticUrl"),
                "staticType": request.form.get("staticType"),
                "mysql_server": request.form.get("mysql_server"),
                "mysql_dbname": request.form.get("mysql_dbname"),
                "mysql_prefix": request.form.get("mysql_prefix"),
                "mysql_username": request.form.get("mysql_username"),
                "mysql_password": request.form.get("mysql_password"),
                "ftp_server": request.form.get("ftp_server"),
                "ftp_port": request.form.get("ftp_port"),
                "ftp_path": request.form.get("ftp_path"),
                "ftp_username": request.form.get("ftp_username"),
                "ftp_password": request.form.get("ftp_password"),
                "access_id": request.form.get("access_id"),
                "secret_access_key": request.form.get("secret_access_key"),
                "hook_func": request.form.get("hook_func"),
                "api_url": request.form.get("api_url")
            }
            sync_profile = phpserialize.dumps(sync_profile)
            site.edit(id=site_id, name=name, url=url, descript=descript, sync_type=sync_type, sync_profile=sync_profile)
            return redirect(url_for('sites.index'))
    per = site.view(site_id)[0]
    if per["sync_profile"]:
        per["sync_profile"] = phpserialize.loads(per["sync_profile"])
    field = Field(current_app)
    types = field.getSeedType()
    site_map = Site_map(current_app)
    website_maps = site_map.list(site_id)
    maps = {}
    for website_map in website_maps:
        if website_map["seed_type"] not in maps:
            maps[website_map["seed_type"]] = website_map
    return render_template("site/add.html", site=per, types=types, maps=maps, hook_funcs=hook_funcs)
Exemplo n.º 2
0
def index(page=1):
    seed = Seed(current_app)
    field = Field(current_app)
    seed_fields = Seed_fields(current_app)
    filte = {}
    seed_type = None
    if request.method == "POST":
        error = None
        action = request.form.get("do")
        if action == "delete":
            seed_filter_model = Seed_filter(current_app)
            sids = request.form.getlist("sid[]")
            if len(sids) > 0:
                for sid in sids:
                    if sid:
                        seed.remove(sid)
                        seed_fields.remove(sid)
                        seed_filter_model.remove(sid)
                url = request.referrer and request.referrer or url_for('seeds.index')
                return redirect(url)
            else:
                error = "请选择要删除的数据"
        if action == "enable" or action == "disable":
            edid = (action == "enable") and 1 or 0
            sids = request.form.getlist("sid[]")
            if len(sids) > 0:
                for sid in sids:
                    if sid:
                        save = {"enabled":edid}
                        seed.edit(sid,**save)
                url = request.referrer and request.referrer or url_for('seeds.index')
                return redirect(url)
            else:
                error = "请选择要启用的数据"
        return error
    if request.args.get("keywords"):
        filte["seed_name"] = request.args.get("keywords")
    if request.args.get("type"):
        seed_type = request.args.get("type")
        filte["type"] = seed_type
    seeds1 = seed.list(page, PER_PAGE, filte)
    seeds = []
    if not seeds1 and page != 1:
        abort(404)
    for seed_item in seeds1:
        seed_item["tags"] = getTagsBySeedId(seed_item["sid"])
        seeds.append(seed_item)
    count = seed.totalcount(filte)
    pagination = Pagination(page, PER_PAGE, count)
    fields = field.getSeedType()
    return render_template("seed/list.html", pagination=pagination, seeds=seeds, fields=fields, seed_type=seed_type)
Exemplo n.º 3
0
def seed_logs(page=1):
    seed = Seed(current_app)
    seed_logs = Seed_log(current_app)
    field = Field(current_app)
    filte = []
    status = None
    start_time = ""
    end_time = ""
    if request.args.get("start_time"):
        start_time = request.args.get("start_time")
        tmp = time.mktime(datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M").timetuple())
        filte.append("start_time >= "+str(tmp))
    if request.args.get("end_time"):
        end_time = request.args.get("end_time")
        tmp = time.mktime(datetime.datetime.strptime(end_time, "%Y-%m-%d %H:%M").timetuple())
        filte.append("start_time <= "+str(tmp))
    if request.args.get("status"):
        status = request.args.get("status")
        filte.append("status = "+str(status))
    if request.args.get("seed_id"):
        seed_id = request.args.get("seed_id")
        filte.append("sid = "+str(seed_id))
    filte = " and ".join(filte)
    seeds1 = seed_logs.list(page, PER_PAGE, filte, "start_time DESC")
    seeds = []
    if not seeds1 and page != 1:
        abort(404)
    for seed_item in seeds1:
        tmp = seed.view(seed_item["sid"]).list()
        if len(tmp) > 0:
            seed_item["seed_name"] = tmp[0]["seed_name"]
        else:
            seed_item["seed_name"] = u"未知"
        seeds.append(seed_item)
    count = seed_logs.totalcount(filte)
    pagination = Pagination(page, PER_PAGE, count)
    fields = field.getSeedType()
    return render_template("logs/seed.html", pagination=pagination, seeds=seeds, fields=fields, status=status, start_time=start_time, end_time=end_time)
Exemplo n.º 4
0
def add():
    field = Field(current_app)
    if request.method == "POST":
        list1 = {
            "urlformat": request.form.get("urlformat"),
            "urltype": request.form.get("urltype"),
            "startpage": request.form.get("startpage"),
            "maxpage": request.form.get("maxpage"),
            "step": request.form.get("step"),
            "zero": request.form.get("zero"),
            "listparent": request.form.get("listparent"),
            "entryparent": request.form.get("entryparent"),
            "contenturl": request.form.get("contenturl"),
            "contentparent": request.form.get("contentparent"),
            "pageparent": request.form.get("pageparent"),
            "filters": request.form.get("filters"),
        }
        time1 = int(time.time())
        save = {
            "type": request.form.get("type"),
            "seed_name": request.form.get("seed_name"),
            "charset": request.form.get("charset"),
            "frequency": float(request.form.get("frequency")) * 3600,
            "timeout": request.form.get("timeout"),
            "tries": request.form.get("tries"),
            "enabled": request.form.get("enabled") is 1 and 1 or 0,
            "listtype": request.form.get("listtype"),
            "lang": request.form.get("lang"),
            "created_time": time1,
            "update_time": time1,
            "rule": phpserialize.dumps(list1),
        }
        fields = field.list(save["type"]).list()
        guid_rule_datas = request.form.get("guid_rule")
        save["guid_rule"] = getFeildIdByTitle(guid_rule_datas, save["type"])
        seed = Seed(current_app)
        sid = seed.add(**save)
        if sid:
            seed_field = Seed_fields(current_app)
            # page_types = request.form.getlist("page_type[]")
            for field in fields:
                seed_value = {}
                seed_value["seed_id"] = sid
                seed_value["field_id"] = field.id
                seed_value["value"] = request.form.get(field.name)
                seed_value["page_type"] = request.form.get("page_type_" + field.name)
                seed_value["fetch_all"] = (
                    request.form.get("fetch_all_" + field.name) and request.form.get("fetch_all_" + field.name) or 0
                )
                seed_field.add(**seed_value)
            # 插入标签
            tags_data = request.form.get("tags")
            tags_data = tags_data.split(",")
            tags_model = Tags(current_app)
            seed_tag = Seed_tag(current_app)
            for tag in tags_data:
                tag = tag.strip()
                if tag:
                    ishere = tags_model.findByName(tag).list()
                    if len(ishere) > 0:
                        tid = ishere[0]["id"]
                    else:
                        tid = tags_model.add(name=tag)
                    ishere = seed_tag.view(sid, tid).list()
                    if len(ishere) == 0:
                        seed_tag.add(sid=sid, tid=tid)
        url = getReferer()
        url = url and url or url_for("seeds.index")
        return redirect(url)
    fields = field.getSeedType()
    if request.method == "GET" and request.args.get("type"):
        setReferer()
        size = request.cookies.get("editorSize")
        if not size:
            size = 50
        seed_data = {}
        seed_data["rule"] = {}
        seed_type = request.args.get("type")
        fields = field.list(seed_type).list()
        seed_field = Seed_fields(current_app)
        page_types = seed_field.getpageType()
        alltags = []
        tags_model = Tags(current_app)
        alltags_data = tags_model.list()
        for tag in alltags_data:
            alltags.append(tag["name"])
        return render_template(
            "seed/add.html",
            seed_type=seed_type,
            fields=fields,
            seed_data=seed_data,
            page_types=page_types,
            alltags=alltags,
            size=size,
        )
    return render_template("seed/select_type.html", fields=fields)