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)
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)
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)
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)