def loginRelease(request): resp = None result = { "isSuccess": False } if base_util.getPostAsBool(request, "isLogin"): tokenMd5, expires = "", 0 if _GG("DecodeStr")(request.POST.get("token", "")) == _GG("GetReleaseToken")(): randCode = random_util.randomMulti(32) # 32位随机码 tokenMd5 = hashlib.md5("|".join([ datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S.%f%z"), randCode ]).encode("utf-8")).hexdigest() expires = 12 * 60 * 60 # 默认12小时 cache.set(tokenMd5, _GG("GetReleaseToken")(), expires) result["isSuccess"] = True else: result["tips"] = "输入Token有误或已过期!" resp = JsonResponse(result) if result["isSuccess"] == True: resp.set_cookie("jdreamheart_token", _GG("EncodeStr")(tokenMd5), expires) elif base_util.getPostAsBool(request, "isLogout"): result["isSuccess"] = True resp = JsonResponse(result) resp.set_cookie("jdreamheart_token", None) return resp
def update(request, result, wtype=0): cid = request.POST.get("cid", None) if cid: try: c = models.Carouse.objects.get(id=int(cid)) opType = request.POST.get("opType", "") if opType == "enable": isEnable = base_util.getPostAsBool(request, "isEnable") state = Status.Close.value if isEnable: state = Status.Open.value if c.state != state: c.update_time = timezone.now() c.state = state c.save() result["isSuccess"] = True elif opType == "update": form = CarouseForm(instance=c) html = HttpResponse(form.as_p()) result["id"] = c.id result["sortId"] = c.sort_id result["html"] = html.getvalue().decode() result["isSuccess"] = True except Exception as e: _GG("Log").w(e) pass
def register(request): _GG("Log").d("register get :", request.GET, "; register post :", request.POST, "; register files :", request.FILES) # 判断是否校验 if base_util.getPostAsBool(request, "isVerify"): return verify(request) # 获取验证码 if base_util.getPostAsBool(request, "isGetVerifyCode"): return getVerifyCode(request) # 注册用户 if base_util.getPostAsBool(request, "isRegister"): return registerUser(request) # 重置用户密码 if base_util.getPostAsBool(request, "isResetPwd"): return resetUserPwd(request) # 获取用户随机码 if base_util.getPostAsBool(request, "isGetRandomCode"): return getRandomCode(request) return JsonResponse({})
def upload(request, result, isSwitchTab): if not isSwitchTab: gid = request.POST.get("gid", None); if gid: try: gi = models.GameItem.objects.get(id = int(gid)); if base_util.getPostAsBool(request, "isRelease"): wf = GameLogForm(request.POST, request.FILES); if wf.is_valid(): wc = models.WebContent(content = wf.cleaned_data["content"]); wc.save(); gl = models.GameLog(**{ "gid" : gi, "title" : wf.cleaned_data["title"], "sub_title" : wf.cleaned_data["sub_title"], "sketch" : wf.cleaned_data["sketch"], "cid" : wc, "time" : timezone.now(), "update_time" : timezone.now(), }); gl.save(); result["requestTips"] = f"游戏日志【{gl.title},{gl.sub_title}】上传成功。"; # 发送邮件通知 try: base_util.sendMsgToAllMgrs(f"游戏日志【{gl.title},{gl.sub_title}】于({timezone.localtime(timezone.now()).strftime('%Y-%m-%d %H:%M:%S')})上传成功。"); except Exception as e: _GG("Log").e(f"Failed to send message to all managers! Error({e})!"); else: result["requestFailedTips"] = "游戏日志内容无效!"; _GG("Log").w("Invalid game log!"); else: result["isEdit"] = True; result["form"] = GameLogForm(); result["gid"] = gid; return; except Exception as e: _GG("Log").w(e); pass; # 返回已发布的游戏 searchText = request.POST.get("searchText", ""); infoList = models.GameItem.objects.filter(name__icontains = searchText).order_by("-sort_id", "-update_time"); result["searchText"] = searchText; result["isSearchNone"] = len(infoList) == 0; if not searchText: result["searchNoneTips"] = f"还未上传过任何游戏网页~"; else: result["searchNoneTips"] = f"未上传过名称包含【{searchText}】的游戏网页,请重新搜索!"; result["onlineInfoList"] = [{ "id" : gameInfo.id, "name" : gameInfo.name, "category" : gameInfo.category, "thumbnail" : gameInfo.thumbnail.url, "description" : gameInfo.description, } for gameInfo in infoList]; pass;
def upload(request, result, isSwitchTab): if not isSwitchTab: isRelease = base_util.getPostAsBool(request, "isRelease") if isRelease: rtf = ResumeTokenForm(request.POST, request.FILES) if rtf.is_valid(): rt = models.ResumeToken( **{ "token": createToken(), "name": rtf.cleaned_data["name"], "remarks": rtf.cleaned_data["remarks"], "expires": rtf.cleaned_data["expires"], "create_at": timezone.now(), "active_at": timezone.now(), }) rt.save() result["requestTips"] = f"简历Token【{rt.token}】创建成功。" # 发送邮件通知 try: base_util.sendMsgToAllMgrs( f"简历Token【{rt.token}】于({timezone.localtime(timezone.now()).strftime('%Y-%m-%d %H:%M:%S')})上传成功。" ) except Exception as e: _GG("Log").e( f"Failed to send message to all managers! Error({e})!") else: result["requestFailedTips"] = "简历信息无效!" _GG("Log").w("Invalid resume info!") else: opType = request.POST.get("opType", "") if opType: try: tid = request.POST.get("tid", -1) t = models.ResumeToken.objects.get(id=int(tid)) if opType == "change_remarks": if "remarks" in request.POST: t.remarks = request.POST["remarks"] t.save() elif opType == "change_expires": if "expires" in request.POST: t.expires = int(request.POST["expires"]) t.save() elif opType == "active": t.active_at = timezone.now() t.save() elif opType == "delete": t.delete() except Exception as e: _GG("Log").e(f"Failed to operate resume token! Err[{e}]!") result["form"] = ResumeTokenForm() result["onlineInfoList"] = getOlTokenList() pass
def verify(request): # 校验用户名 if "uname" in request.POST: if len(models.User.objects.filter(name=request.POST["uname"])) == 0: return HttpResponse("true") # 校验邮箱 if "email" in request.POST: isExist = len( models.User.objects.filter(email=request.POST["email"])) > 0 if isExist == base_util.getPostAsBool(request, "isExist"): return HttpResponse("true") # 校验失败 _GG("Log").d("Verify Fail!", request.POST) return HttpResponse("false")
def login(request): isLogin, isLogout = base_util.getPostAsBool( request, "isLogin"), base_util.getPostAsBool(request, "isLogout") result = { "isSuccess": False } resp = JsonResponse(result) if isLogin: uname, upwd = request.POST.get("uname", ""), request.POST.get("upwd", "") isRemember = base_util.getPostAsBool(request, "isRemember") token, expires = getLoginToken(result, uname, decodePwd(upwd), isRemember) resp = JsonResponse(result) if result["isSuccess"]: resp.set_cookie("pytoolsip_token", _GG("EncodeStr")(token), expires) resp.set_cookie("is_logined", "logined", expires) elif isLogout: result["isSuccess"] = True resp = JsonResponse(result) resp.set_cookie("pytoolsip_token", None) resp.set_cookie("is_logined", None) return resp
def release(request): _GG("Log").d(request.method, "release get :", request.GET, "release post :", request.POST, "release files :", request.FILES) # 判断是否校验 if "isVerify" in request.POST: return verify(request) # 返回消息 ret = { "MAIN_HOME_TITLE": settings.MAIN_HOME_TITLE, "MAIN_HOME_URL": settings.MAIN_HOME_URL, "RESOURCE_URL": settings.RESOURCE_URL, "HOME_TITLE": settings.HOME_TITLE, "HOME_URL": settings.HOME_URL, "HEAD_TITLE": "PyToolsIP-发布平台", } # 判断是否已登陆 if request.method == 'GET': return render(request, "release/index.html", ret) # 获取登陆玩家 userAuth = request.userAuth if not userAuth: # 返回登陆页面信息 ret["HEAD_TITLE"] = "PyToolsIP-登陆发布平台" return render(request, "release/login.html", ret) # 是否切换Tab isSwitchTab = base_util.getPostAsBool(request, "isSwitchTab") # 获取请求键值 mkey = request.POST.get("mk", "") # 判断是否重定向 if (mkey not in PtipKeyList and mkey not in PtKeyList) or (mkey in PtipKeyList and userAuth.authority == 0): # 重置mkey if userAuth.authority == 0: mkey = PtKeyList[0] else: mkey = PtipKeyList[0] isSwitchTab = True # 返回管理项的内容 return render(request, "release/item.html", getReleaseResult(request, userAuth, mkey, isSwitchTab))
def release(request): _GG("Log").d(request.method, "release get :", request.GET, "release post :", request.POST, "release files :", request.FILES) # 判断是否校验 if "isVerify" in request.POST: return verify(request) # 操作carouse信息 if "isOpCarouse" in request.POST: return opCarouse(request) # 判断是否已登陆 if request.method == 'GET': return render( request, "release/index.html", { "HOME_URL": HOME_URL, "RESOURCE_URL": RESOURCE_URL, "HOME_TITLE": "JDreamHeart" }) # 检测登陆 loginResult = loginRelease(request) if loginResult: return loginResult if not checkReleaseToken(request): # 返回登陆页面信息 ret = { "HOME_URL": HOME_URL, "RESOURCE_URL": RESOURCE_URL, "HOME_TITLE": "JDreamHeart" } return render(request, "release/login.html", ret) # 是否切换Tab isSwitchTab = base_util.getPostAsBool(request, "isSwitchTab") # 获取请求键值 mkey = request.POST.get("mk", "") # 判断是否重定向 if mkey not in keyList and mkey not in gameList: # 重置mkey mkey = keyList[0] isSwitchTab = True # 返回管理项的内容 return render(request, "release/item.html", getReleaseResult(request, mkey, isSwitchTab))
def upload(request, result, isSwitchTab, wtype=0): result["title"] = webTypeTitleMap.get(wtype, "网页") if not isSwitchTab: isRelease = base_util.getPostAsBool(request, "isRelease") if isRelease: wf = WebItemForm(request.POST, request.FILES) if wf.is_valid(): wc = models.WebContent(content=wf.cleaned_data["content"]) wc.save() wi = models.WebItem( **{ "name": wf.cleaned_data["name"], "title": wf.cleaned_data["title"], "thumbnail": wf.cleaned_data["thumbnail"], "description": wf.cleaned_data["description"], "url": wf.cleaned_data["url"], "cid": wc, "wtype": wtype, "state": Status.Close.value, "time": timezone.now(), "update_time": timezone.now(), "sort_id": 0, }) wi.save() result[ "requestTips"] = f"网页【{wi.name},{wi.title}】上传成功,当前处于禁用状态,需手动进行启用。" # 发送邮件通知 try: base_util.sendMsgToAllMgrs( f"网页【{wi.name},{wi.title}】于({timezone.localtime(timezone.now()).strftime('%Y-%m-%d %H:%M:%S')})上传成功。" ) except Exception as e: _GG("Log").e( f"Failed to send message to all managers! Error({e})!") else: result["requestFailedTips"] = f"网页内容无效(不能为空)!" _GG("Log").w(f"Invalid web content!") pass result["form"] = WebItemForm() pass
def uploadArticle(request, userAuth, result, isSwitchTab): if not isSwitchTab: isRelease = base_util.getPostAsBool(request, "isRelease") if isRelease: af = ArticleForm(request.POST, request.FILES) if af.is_valid(): ae = models.ArticleExamination( **{ "uid": userAuth.uid, "title": af.cleaned_data["title"], "sub_title": af.cleaned_data.get("sub_title", None), "thumbnail": af.cleaned_data.get("thumbnail", None), "sketch": af.cleaned_data["sketch"], "content": af.cleaned_data["content"], "time": timezone.now(), "atype": ArticleType.Article.value, }) ae.save() result["requestTips"] = f"文章【{ae.title}】上传成功,正在等待审核。" pass result["articleType"] = ArticleType.Article.value result["form"] = ArticleForm()
def upload(request, result, isSwitchTab): if not isSwitchTab: isRelease = base_util.getPostAsBool(request, "isRelease") if isRelease: wf = GameItemForm(request.POST, request.FILES) if wf.is_valid(): wc = models.WebContent(content=wf.cleaned_data["content"]) wc.save() gi = models.GameItem( **{ "name": wf.cleaned_data["name"], "category": wf.cleaned_data["category"], "thumbnail": wf.cleaned_data["thumbnail"], "description": wf.cleaned_data["description"], "cid": wc, "schedule": Schedule.Pending.value, "time": timezone.now(), "update_time": timezone.now(), "sort_id": 0, "state": Status.Close.value, "token": random_util.randomToken(), }) gi.save() result["requestTips"] = f"游戏网页【{gi.name},{gi.category}】上传成功。" # 发送邮件通知 try: base_util.sendMsgToAllMgrs( f"游戏网页【{gi.name},{gi.category}】于({timezone.localtime(timezone.now()).strftime('%Y-%m-%d %H:%M:%S')})上传成功。" ) except Exception as e: _GG("Log").e( f"Failed to send message to all managers! Error({e})!") else: result["requestFailedTips"] = f"游戏网页内容无效!" _GG("Log").w(f"Invalid game web!") pass result["form"] = GameItemForm() pass
def update(request, result, isSwitchTab, wtype=0): result["title"] = webTypeTitleMap.get(wtype, "网页") if not isSwitchTab: wid = request.POST.get("wid", None) if wid: try: isEdit = False wi = models.WebItem.objects.get(id=int(wid)) if base_util.getPostAsBool(request, "isRelease"): wf = WebItemForm(request.POST, request.FILES) if wf.is_valid(): wi.cid.content = wf.cleaned_data["content"] wi.cid.save() # 保存网页信息 wi.name = wf.cleaned_data["name"] wi.title = wf.cleaned_data["title"] if wf.cleaned_data["thumbnail"]: wi.thumbnail = wf.cleaned_data["thumbnail"] wi.description = wf.cleaned_data["description"] wi.url = wf.cleaned_data["url"] wi.update_time = timezone.now() wi.save() # 更新成功 result[ "requestTips"] = f"网页【{wi.name},{wi.title}】更新成功。" # 跳转编辑页面 isEdit = True # 发送邮件通知 try: base_util.sendMsgToAllMgrs( f"网页【{wi.name},{wi.title}】于({timezone.localtime(timezone.now()).strftime('%Y-%m-%d %H:%M:%S')})更新成功。" ) except Exception as e: _GG("Log").e( f"Failed to send message to all managers! Error({e})!" ) else: result["requestFailedTips"] = f"网页内容无效(不能为空),更新失败!" _GG("Log").w(f"Invalid web content!") opType = request.POST.get("opType", None) if opType: if opType == "update": # 更新状态 if "state" in request.POST: if request.POST["state"] == "open": wi.state = Status.Open.value else: wi.state = Status.Close.value wi.update_time = timezone.now() wi.save() result[ "requestTips"] = f"网页【{wi.name},{wi.title}】状态更新成功。" # 更新排序值 if "sortId" in request.POST: wi.sort_id = int(request.POST["sortId"]) wi.update_time = timezone.now() wi.save() result[ "requestTips"] = f"网页【{wi.name},{wi.title}】排序值({wi.sort_id})更新成功。" # 跳转编辑页面 isEdit = True elif opType == "delete": wi.delete() result[ "requestTips"] = f"网页【{wi.name},{wi.title}】成功删除。" # 发送邮件通知 try: base_util.sendMsgToAllMgrs( f"网页【{wi.name},{wi.title}】于({timezone.localtime(timezone.now()).strftime('%Y-%m-%d %H:%M:%S')})成功删除。" ) except Exception as e: _GG("Log").e( f"Failed to send message to all managers! Error({e})!" ) # 返回页面数据 if isEdit: result["isEdit"] = True result["form"] = WebItemForm(instance=wi) result["wid"] = wid # 状态信息 result["stateInfo"] = { "state": "close", "label": "禁用", "style": "danger" } if wi.state == Status.Close.value: result["stateInfo"] = { "state": "open", "label": "启用", "style": "primary" } # 排序值 result["sortId"] = wi.sort_id return except Exception as e: _GG("Log").w(e) # 返回已发布的网页 searchText = request.POST.get("searchText", "") infoList = models.WebItem.objects.filter( Q(name__icontains=searchText) | Q(title__icontains=searchText), wtype=wtype).order_by("-sort_id", "-update_time") result["searchText"] = searchText result["isSearchNone"] = len(infoList) == 0 if not searchText: result["searchNoneTips"] = f"还未上传过任何网页~" else: result["searchNoneTips"] = f"未上传过名称(或标题)包含【{searchText}】的网页,请重新搜索!" result["onlineInfoList"] = [{ "id": webInfo.id, "name": webInfo.name, "title": webInfo.title, "thumbnail": webInfo.thumbnail.url, "description": webInfo.description, "url": webInfo.url, "time": webInfo.time, "updateTime": webInfo.update_time, "state": webInfo.state == Status.Open.value and "启用" or "禁用", "sortId": webInfo.sort_id, "type": "首页网页", } for webInfo in infoList] pass
def upload(request, result, isSwitchTab, wtype=0): wTitle = webTypeTitleMap.get(wtype, "轮播图") result["title"] = wTitle if not isSwitchTab: isRelease = base_util.getPostAsBool(request, "isRelease") if isRelease: cf = CarouseForm(request.POST, request.FILES) if cf.is_valid(): c = models.Carouse( **{ "name": cf.cleaned_data["name"], "title": cf.cleaned_data["title"], "url": cf.cleaned_data["url"], "img": cf.cleaned_data["img"], "alt": cf.cleaned_data["alt"], "state": Status.Close.value, "wtype": wtype, "time": timezone.now(), "update_time": timezone.now(), "sort_id": 0, }) c.save() result[ "requestTips"] = f"Carouse【{c.name},{c.title}】上传成功,当前处于未启用状态,需手动进行启用。" # 发送邮件通知 try: base_util.sendMsgToAllMgrs( f"Carouse【{c.name},{c.title}】于({timezone.localtime(timezone.now()).strftime('%Y-%m-%d %H:%M:%S')})上传成功。" ) except Exception as e: _GG("Log").e( f"Failed to send message to all managers! Error({e})!") else: result["requestFailedTips"] = f"Carouse内容无效!" _GG("Log").w(f"Invalid carouse!") cid, opType = request.POST.get("cid", None), request.POST.get("opType", None) if cid and opType: try: c = models.Carouse.objects.get(id=int(cid)) if opType == "delete": c.delete() result[ "requestTips"] = f"Carouse【{c.name},{c.url},{wTitle}】成功删除。" # 发送邮件通知 try: base_util.sendMsgToAllMgrs( f"Carouse【{c.name},{c.url},{wTitle}】于({timezone.localtime(timezone.now()).strftime('%Y-%m-%d %H:%M:%S')})成功删除。" ) except Exception as e: _GG("Log").e( f"Failed to send message to all managers! Error({e})!" ) elif opType == "update": cf = CarouseForm(request.POST, request.FILES) if cf.is_valid(): c.name = cf.cleaned_data["name"] c.title = cf.cleaned_data["title"] c.url = cf.cleaned_data["url"] if cf.cleaned_data["img"]: c.img = cf.cleaned_data["img"] c.alt = cf.cleaned_data["alt"] c.sort_id = request.POST.get("sort_id", c.sort_id) c.update_time = timezone.now() c.save() # 更新成功 result[ "requestTips"] = f"Carouse【{c.name},{c.url},{wTitle}】更新成功" # 发送邮件通知 try: base_util.sendMsgToAllMgrs( f"Carouse【{c.name},{c.url},{wTitle}】于({timezone.localtime(timezone.now()).strftime('%Y-%m-%d %H:%M:%S')})成功更新。" ) except Exception as e: _GG("Log").e( f"Failed to send message to all managers! Error({e})!" ) else: result["requestFailedTips"] = f"Carouse内容无效,更新失败!" _GG("Log").w(f"Invalid carouse!") except Exception as e: _GG("Log").w(e) pass result["form"] = CarouseForm() # 返回已发布的轮播图 infoList = models.Carouse.objects.filter(wtype=wtype).order_by( "-sort_id", "-update_time") result["onlineInfoList"] = [{ "id": info.id, "name": info.name, "title": info.title, "url": info.url, "img": info.img.url, "alt": info.alt, "time": info.time, "updateTime": info.update_time, "isEnable": info.state == Status.Open.value and True or False, "sortId": info.sort_id, } for info in infoList] pass
def update(request, result, isSwitchTab): if not isSwitchTab: gid = request.POST.get("gid", None) if gid: try: isEdit = False gi = models.GameItem.objects.get(id=int(gid)) if base_util.getPostAsBool(request, "isRelease"): wf = GameItemForm(request.POST, request.FILES) if wf.is_valid(): gi.cid.content = wf.cleaned_data["content"] gi.cid.save() # 保存游戏网页信息 gi.name = wf.cleaned_data["name"] gi.category = wf.cleaned_data["category"] if wf.cleaned_data["thumbnail"]: gi.thumbnail = wf.cleaned_data["thumbnail"] if wf.cleaned_data["version"]: gi.version = wf.cleaned_data["version"] if wf.cleaned_data["file_path"]: gi.file_path = wf.cleaned_data["file_path"] if wf.cleaned_data["demo_video"]: gi.demo_video = wf.cleaned_data["demo_video"] gi.description = wf.cleaned_data["description"] gi.update_time = timezone.now() gi.save() # 更新成功 result[ "requestTips"] = f"游戏网页【{gi.name},{gi.category}】更新成功。" # 跳转编辑页面 isEdit = True # 发送邮件通知 try: base_util.sendMsgToAllMgrs( f"游戏网页【{gi.name},{gi.category}】于({timezone.localtime(timezone.now()).strftime('%Y-%m-%d %H:%M:%S')})更新成功。" ) except Exception as e: _GG("Log").e( f"Failed to send message to all managers! Error({e})!" ) else: result["requestFailedTips"] = f"游戏网页内容无效!" _GG("Log").w("Invalid form data!") opType = request.POST.get("opType", None) if opType: if opType == "update": # 更新进度值 if "schedule" in request.POST: gi.schedule = request.POST["schedule"] gi.update_time = timezone.now() gi.save() result[ "requestTips"] = f"游戏网页【{gi.name},{gi.category}】进度({gi.schedule})更新成功。" # 更新排序值 if "sortId" in request.POST: gi.sort_id = int(request.POST["sortId"]) gi.update_time = timezone.now() gi.save() result[ "requestTips"] = f"游戏网页【{gi.name},{gi.category}】排序值({gi.sort_id})更新成功。" # 更新状态 if "state" in request.POST: if request.POST["state"] == "open": gi.state = Status.Open.value else: gi.state = Status.Close.value gi.update_time = timezone.now() gi.save() result[ "requestTips"] = f"游戏网页【{gi.name},{gi.category}】状态更新成功。" # 更新Token if "token" in request.POST: gi.token = random_util.randomToken() gi.update_time = timezone.now() gi.save() result[ "requestTips"] = f"游戏网页【{gi.name},{gi.category}】Token值({gi.token})更新成功。" # 跳转编辑页面 isEdit = True elif opType == "delete": # 删除游戏日志 for log in models.GameLog.objects.filter(gid=gi): log.delete() # 删除游戏网页 gi.delete() result[ "requestTips"] = f"游戏网页【{gi.name},{gi.category}】成功删除。" # 发送邮件通知 try: base_util.sendMsgToAllMgrs( f"游戏网页【{gi.name},{gi.category}】于({timezone.localtime(timezone.now()).strftime('%Y-%m-%d %H:%M:%S')})成功删除。" ) except Exception as e: _GG("Log").e( f"Failed to send message to all managers! Error({e})!" ) # 返回页面数据 if isEdit: result["isEdit"] = True result["form"] = GameItemForm(instance=gi) result["gid"] = gid # 进度 result["schedule"] = ScheduleMap.get(gi.schedule, "未知") result["scheduleInfoList"] = [{ "key": v, "val": k } for k, v in ScheduleMap.items()] # 排序值 result["sortId"] = gi.sort_id # 状态信息 result["stateInfo"] = { "state": "close", "label": "关闭", "style": "danger" } if gi.state == Status.Close.value: result["stateInfo"] = { "state": "open", "label": "启用", "style": "primary" } # Token值 result["token"] = gi.token result[ "token_url"] = f"{HOME_URL}/game?k=detail&gid={gi.id}&token={gi.token}" return except Exception as e: _GG("Log").w(e) # 返回已发布的游戏 searchText = request.POST.get("searchText", "") infoList = models.GameItem.objects.filter( name__icontains=searchText).order_by("-sort_id", "-update_time") result["searchText"] = searchText result["isSearchNone"] = len(infoList) == 0 if not searchText: result["searchNoneTips"] = f"还未上传过任何游戏网页~" else: result["searchNoneTips"] = f"未上传过名称包含【{searchText}】的游戏网页,请重新搜索!" result["onlineInfoList"] = [{ "id": gameInfo.id, "name": gameInfo.name, "category": gameInfo.category, "thumbnail": gameInfo.thumbnail.url, "description": gameInfo.description, "schedule": ScheduleMap.get(gameInfo.schedule, "未知"), "version": gameInfo.version or "0.0", "filePath": gameInfo.file_path and gameInfo.file_path.url or "", "demoVideo": gameInfo.demo_video, "time": gameInfo.time, "updateTime": gameInfo.update_time, "sortId": gameInfo.sort_id, "state": gameInfo.state == Status.Open.value and "启用" or "关闭", "type": "游戏网页", } for gameInfo in infoList] pass
def update(request, result, isSwitchTab): if not isSwitchTab: glid = request.POST.get("glid", None); if glid: try: gl = models.GameLog.objects.get(id = int(glid)); if base_util.getPostAsBool(request, "isRelease"): wf = GameLogForm(request.POST, request.FILES); if wf.is_valid(): gl.cid.content = wf.cleaned_data["content"]; gl.cid.save(); # 保存游戏日志信息 gl.title = wf.cleaned_data["title"]; gl.sub_title = wf.cleaned_data["sub_title"]; gl.update_time = timezone.now(); gl.save(); # 更新成功 result["requestTips"] = f"游戏日志【{gl.title},{gl.sub_title}】更新成功。"; # 发送邮件通知 try: base_util.sendMsgToAllMgrs(f"游戏日志【{gl.title},{gl.sub_title}】于({timezone.localtime(timezone.now()).strftime('%Y-%m-%d %H:%M:%S')})更新成功。"); except Exception as e: _GG("Log").e(f"Failed to send message to all managers! Error({e})!"); else: result["requestFailedTips"] = "游戏日志内容无效!"; _GG("Log").w("Invalid game log!"); opType = request.POST.get("opType", None); if opType: if opType == "update": result["isEdit"] = True; result["form"] = GameLogForm(instance = gl); result["glid"] = glid; return; elif opType == "delete": gl.delete(); result["requestTips"] = f"游戏日志【{gl.title},{gl.sub_title}】成功删除。"; # 发送邮件通知 try: base_util.sendMsgToAllMgrs(f"游戏日志【{gl.title},{gl.sub_title}】于({timezone.localtime(timezone.now()).strftime('%Y-%m-%d %H:%M:%S')})成功删除。"); except Exception as e: _GG("Log").e(f"Failed to send message to all managers! Error({e})!"); except Exception as e: _GG("Log").w(e); # 返回已发布的游戏日志 searchText = request.POST.get("searchText", ""); infoList = models.GameLog.objects.filter(title__icontains = searchText).order_by("-update_time"); result["searchText"] = searchText; result["isSearchNone"] = len(infoList) == 0; if not searchText: result["searchNoneTips"] = f"还未上传过任何游戏日志~"; else: result["searchNoneTips"] = f"未上传过名称包含【{searchText}】的游戏日志,请重新搜索!"; result["onlineInfoList"] = [{ "id" : gameInfo.id, "title" : gameInfo.title, "subTitle" : gameInfo.sub_title, "sketch" : gameInfo.sketch, "time" : gameInfo.time, "updateTime" : gameInfo.update_time, "gid" : gameInfo.gid.id, "gname" : gameInfo.gid.name, "type" : "游戏日志", } for gameInfo in infoList]; pass;
def updateOlArticle(request, userAuth, result, isSwitchTab): if not isSwitchTab: aid = request.POST.get("aid", None) if aid: try: a = models.Article.objects.get(id=aid) isRelease = base_util.getPostAsBool(request, "isRelease") if isRelease and a.atype == ArticleType.Tool.value: af = ArticleForm(request.POST, request.FILES) if af.is_valid(): ae = models.ArticleExamination( **{ "uid": userAuth.uid, "title": a.title, "sub_title": a.sub_title, "thumbnail": af.cleaned_data.get( "thumbnail", None), "sketch": af.cleaned_data["sketch"], "content": af.cleaned_data["content"], "time": timezone.now(), "atype": a.atype, }) ae.save() result[ "requestTips"] = f"工具详情【{a.title}[{a.sub_title}]】更新成功,正在等待审核。" opType = request.POST.get("opType", None) if opType: if opType == "update" and a.atype == ArticleType.Tool.value: result["isEdit"] = True result["articleType"] = a.atype result["form"] = ArticleForm( instance=models.ArticleExamination( **{ "uid": a.uid, "title": a.title, "sub_title": a.sub_title, "thumbnail": a.thumbnail, "content": a.cid.content, })) result["aid"] = aid return elif opType == "delete" and a.atype == ArticleType.Article.value: a.delete() result["requestTips"] = f"文章【{a.title}】成功删除。" except Exception as e: _GG("Log").w(e) # 返回已发布的文章 searchText = request.POST.get("searchText", "") infoList = models.Article.objects.filter( title__icontains=searchText, uid=userAuth.uid).order_by('-time') result["searchText"] = searchText result["isSearchNone"] = len(infoList) == 0 if not searchText: result["searchNoneTips"] = f"您未发布过文章~" else: result["searchNoneTips"] = f"您未发布过名称包含为【{searchText}】的文章,请重新搜索!" result["onlineInfoList"] = [{ "id": articleInfo.id, "title": articleInfo.title, "subTitle": articleInfo.sub_title, "thumbnail": articleInfo.thumbnail and articleInfo.thumbnail.url or "", "sketch": articleInfo.sketch, "time": articleInfo.time, "author": articleInfo.uid.name, "atype": articleInfo.atype, } for articleInfo in infoList] pass