def api_file_upload(): ''' POST 文件上传 api返回json数据,格式默认如下: {'urls':[<url>, ...,<url>], 'state':<'success' or 'error'>, 'msg_type':<'s' or e'>, 'msg':'' } return_url_key: <str>, 自定义返回数据的urls的key, 默认'urls' return_state_key:<str>, 自定义返回数据的状态的key, 默认'state' return_success:<str or int>, 自定义返回数据成功的状态的值, 默认'success' return_error:<str or int>, 自定义返回数据错误的状态的值, 默认'error' prefix:<str>, 默认为“generic/”, 则会将文件放入到generic目录下 save_temporary_url:<0 or 1>,默认为1, 如果 :return: ''' return_url_key = request.argget.all('return_url_key', "urls") return_state_key = request.argget.all('return_state_key', "state") return_success = request.argget.all('return_success', "success") return_error = request.argget.all('return_error', "error") prefix = request.argget.all('prefix', "generic/") save_temporary_url = request.argget.all('save_temporary_url', 1) data = file_upload(return_url_key=return_url_key, return_state_key=return_state_key, return_success=return_success, return_error=return_error, save_temporary_url=save_temporary_url, prefix=prefix) return response_format(data)
def add_display_setting(): """ :return: """ batch = request.argget.all("batch", False) name = request.argget.all("name") link = request.argget.all("link") link_open_new_tab = str_to_num(request.argget.all("link_open_new_tab", 1)) link_name = request.argget.all("link_name") title = request.argget.all("title") text = request.argget.all("text", "") text_html = request.argget.all("text_html", "") code = request.argget.all("code", "") code_type = request.argget.all("code_type") ctype = request.argget.all("ctype") category_id = request.argget.all("category_id") data = {} category = "Default" if code_type == "json": code = json_to_pyseq(code) if category_id and category_id.lower() != "default": display_setting_category = mdbs["web"].db.category.find_one( {"_id": ObjectId(category_id)}) if display_setting_category: category = display_setting_category["name"] elif not category_id or category_id.lower() == "default": category_id = "" s, r = arg_verify([(gettext("type"), ctype)], only=get_config("category", "CATEGORY_TYPE").values()) if not s: return r s, r = arg_verify([(gettext("name"), name)], required=True) if not s and not batch: return r # 如果有上传文件 if request.files: data = file_upload(return_key=True, prefix="multidisplay_setting/{}/".format(ctype)) if data["msg_type"] != "s": return data theme_name = get_config("theme", "CURRENT_THEME_NAME") if not batch and mdbs["sys"].db.theme_display_setting.find_one( { "name": name, "type": ctype, "theme_name": theme_name }): type_alias = ctype for k, v in get_config("category", "CATEGORY_TYPE").items(): if v == ctype: type_alias = k break data = { "msg": gettext('The type "{}" exists in the name "{}"').format( type_alias, name), "msg_type": "w", "custom_status": 403 } else: # 获取text_html使用的图片 if text_html: srcs = richtext_extract_img(richtext=text_html) else: srcs = [] text_imgs = clean_tempfile(user_id=current_user.str_id, type="image", keey_file=srcs) info = { "theme_name": theme_name, "category": category, "category_id": category_id, "link": link, "link_open_new_tab": link_open_new_tab, "link_name": link_name, "title": title, "text": text, "text_html": text_html, "code": code, "code_type": code_type, "switch": 0, "text_imgs": text_imgs, "type": ctype, "time": time.time() } if "keys" in data: for key in data["keys"]: rand_name = "{}_{}".format(name, uuid1()) info["name"] = rand_name info["url"] = key mdbs["sys"].db.theme_display_setting.insert_one(info) data["msg"] = gettext("{} uploaded successfully").format( ctype.capitalize()) else: info["name"] = name info["url"] = None mdbs["sys"].db.theme_display_setting.insert_one(info) data["msg"] = gettext("Added successfully").format( ctype.capitalize()) data["msg_type"] = "s" data["custom_status"] = 201 return data
def edit_display_setting(): """ :return: """ display_setting_id = request.argget.all("id") name = request.argget.all("name") link = request.argget.all("link") link_name = request.argget.all("link_name") link_open_new_tab = str_to_num(request.argget.all("link_open_new_tab", 1)) title = request.argget.all("title") text = request.argget.all("text", "") text_html = request.argget.all("text_html", "") code = request.argget.all("code", "") code_type = request.argget.all("code_type") switch = request.argget.all("switch") category_id = request.argget.all("category_id") s, r = arg_verify([("id", display_setting_id)], required=True) if not s: return r s, r = arg_verify([(gettext("name"), name)], required=True) if not s: return r if code_type == "json": code = json_to_pyseq(code) theme_name = get_config("theme", "CURRENT_THEME_NAME") old_display_setting = mdbs["sys"].db.theme_display_setting.find_one({ "_id": ObjectId(display_setting_id), "theme_name": theme_name }) # 如果只是更新图片, 则保存上传图片 if request.files: data = file_upload(return_key=True, prefix="multidisplay_setting/{}/".format( old_display_setting["type"])) if data["msg_type"] != "s": return data else: # 删除旧的图片 if "url" in old_display_setting: file_del(old_display_setting["url"]) temp_url = None if "keys" in data: for key in data["keys"]: temp_url = key if temp_url: mdbs["sys"].db.theme_display_setting.update_one( { "_id": ObjectId(display_setting_id), "theme_name": theme_name }, {"$set": { "url": temp_url }}) data = { "msg": gettext("Update picture successfully"), "msg_type": "s", "custom_status": 201 } else: data = { "msg": gettext("Failed to update"), "msg_type": "e", "custom_status": 400 } return data category = "Default" not_updated_category = False if category_id is None: # 不更新category not_updated_category = True elif category_id and category_id.lower() != "default": display_setting_category = mdbs["web"].db.category.find_one( {"_id": ObjectId(category_id)}) if display_setting_category: category = display_setting_category["name"] elif category_id.lower() == "default": category_id = "" # 处理其他字段更新 query = { "name": name, "type": old_display_setting["type"], "_id": { "$ne": ObjectId(display_setting_id) }, "theme_name": theme_name } if mdbs["sys"].db.theme_display_setting.find_one(query): type_alias = old_display_setting["type"] for k, v in get_config("category", "CATEGORY_TYPE").items(): if v == old_display_setting["type"]: type_alias = k break data = { "msg": gettext('The type "{}" exists in the name "{}"').format( type_alias, name), "msg_type": "w", "custom_status": 403 } else: # 获取text_html使用的图片 old_imgs = old_display_setting.get("text_imgs", []) if text_html: srcs = richtext_extract_img(richtext=text_html) else: srcs = [] text_imgs = clean_tempfile(user_id=current_user.str_id, type="image", old_file=old_imgs, keey_file=srcs) info = { "name": name, "link": link, "link_name": link_name, "link_open_new_tab": link_open_new_tab, "title": title, "text": text, "text_html": text_html, "code": code, "code_type": code_type, "text_imgs": text_imgs, } if switch is not None and switch.isdigit(): info["switch"] = int(switch) if not not_updated_category: info["category_id"] = category_id info["category"] = category r = mdbs["sys"].db.theme_display_setting.update_one( { "_id": ObjectId(display_setting_id), "theme_name": theme_name }, {"$set": info}) if r.modified_count: data = { "msg": gettext("Modify the success"), "msg_type": "s", "custom_status": 201 } else: data = { "msg": gettext("The content is not modified"), "msg_type": "w", "custom_status": 400 } return data
def add_media(user_id=None): """ :param user_id: 媒体为管理端(系统)所有时需要传入user_id = 0 :return: """ if user_id is None: user_id = current_user.str_id batch = request.argget.all("batch", False) name = request.argget.all("name") link = request.argget.all("link") link_open_new_tab = str_to_num(request.argget.all("link_open_new_tab", 1)) link_name = request.argget.all("link_name") title = request.argget.all("title") text = request.argget.all("text", "") text_html = request.argget.all("text_html", "") ctype = request.argget.all("ctype") category_id = request.argget.all("category_id") data = {} category = "Default" if category_id and category_id.lower() != "default": media_category = mdb_web.db.category.find_one( {"_id": ObjectId(category_id)}) if media_category: category = media_category["name"] elif not category_id or category_id.lower() == "default": category_id = "" s, r = arg_verify([(gettext("type"), ctype)], only=get_config("category", "CATEGORY_TYPE").values()) if not s: return r s, r = arg_verify([(gettext("name"), name)], required=True) if not s and not batch: return r # 如果有上传文件 if request.files: data = file_upload(return_key=True, prefix="multimedia/{}/".format(ctype)) if data["msg_type"] != "s": return data if not batch and mdb_web.db.media.find_one({"name": name, "type": ctype}): type_alias = ctype for k, v in get_config("category", "CATEGORY_TYPE").items(): if v == ctype: type_alias = k break data = { "msg": gettext('The type "{}" exists in the name "{}"').format( type_alias, name), "msg_type": "w", "http_status": 403 } else: # 获取text_html使用的图片 text_imgs = [] if text_html: srcs = richtext_extract_img(richtext=text_html) else: srcs = [] text_imgs = clean_tempfile(user_id=current_user.str_id, type="image", keey_file=srcs) info = { "category": category, "category_id": category_id, "link": link, "link_open_new_tab": link_open_new_tab, "link_name": link_name, "title": title, "text": text, "text_html": text_html, "text_imgs": text_imgs, "type": ctype, "time": time.time(), "user_id": user_id } if "keys" in data: for key in data["keys"]: rand_name = "{}_{}".format(name, uuid1()) info["name"] = rand_name info["url"] = key mdb_web.db.media.insert_one(info) data["msg"] = gettext("{} uploaded successfully").format( ctype.capitalize()) else: info["name"] = name info["url"] = None mdb_web.db.media.insert_one(info) data["msg"] = gettext("Added successfully").format( ctype.capitalize()) data["msg_type"] = "s" data["http_status"] = 201 return data
def edit_media(user_id=None): """ :param user_id: 媒体为管理端(系统)所有时需要传入user_id = 0 :return: """ if user_id is None: user_id = current_user.str_id media_id = request.argget.all("id") name = request.argget.all("name") link = request.argget.all("link") link_name = request.argget.all("link_name") link_open_new_tab = str_to_num(request.argget.all("link_open_new_tab", 1)) title = request.argget.all("title") text = request.argget.all("text", "") text_html = request.argget.all("text_html", "") category_id = request.argget.all("category_id") s, r = arg_verify([("id", media_id)], required=True) if not s: return r s, r = arg_verify([(gettext("name"), name)], required=True) if not s: return r old_media = mdb_web.db.media.find_one({"_id": ObjectId(media_id)}) # 如果只是更新图片, 则保存上传图片 if request.files: data = file_upload(return_key=True, prefix="multimedia/{}/".format(old_media["type"])) if data["msg_type"] != "s": return data else: # 删除旧的图片 file_del(old_media["url"]) temp_url = None if "keys" in data: for key in data["keys"]: temp_url = key if temp_url: mdb_web.db.media.update_one( { "_id": ObjectId(media_id), "user_id": user_id }, {"$set": { "url": temp_url }}) data = { "msg": gettext("Update picture successfully"), "msg_type": "s", "http_status": 201 } else: data = { "msg": gettext("Failed to update"), "msg_type": "e", "http_status": 400 } return data category = "Default" not_updated_category = False if category_id is None: # 不更新category not_updated_category = True elif category_id and category_id.lower() != "default": media_category = mdb_web.db.category.find_one( {"_id": ObjectId(category_id)}) if media_category: category = media_category["name"] elif category_id.lower() == "default": category_id = "" # 处理其他字段更新 query = { "name": name, "type": old_media["type"], "_id": { "$ne": ObjectId(media_id) } } if mdb_web.db.media.find_one(query): type_alias = old_media["type"] for k, v in get_config("category", "CATEGORY_TYPE").items(): if v == old_media["type"]: type_alias = k break data = { "msg": gettext('The type "{}" exists in the name "{}"').format( type_alias, name), "msg_type": "w", "http_status": 403 } else: # 获取text_html使用的图片 old_imgs = old_media.get("text_imgs", []) if text_html: srcs = richtext_extract_img(richtext=text_html) else: srcs = [] text_imgs = clean_tempfile(user_id=current_user.str_id, type="image", old_file=old_imgs, keey_file=srcs) info = { "name": name, "link": link, "link_name": link_name, "link_open_new_tab": link_open_new_tab, "title": title, "text": text, "text_html": text_html, "text_imgs": text_imgs } if not not_updated_category: info["category_id"] = category_id info["category"] = category r = mdb_web.db.media.update_one( { "_id": ObjectId(media_id), "user_id": user_id }, {"$set": info}) if r.modified_count: data = { "msg": gettext("Modify the success"), "msg_type": "s", "http_status": 201 } else: data = { "msg": gettext("The content is not modified"), "msg_type": "w", "http_status": 400 } return data