コード例 #1
0
ファイル: __init__.py プロジェクト: dzjh-web/weblist
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
コード例 #2
0
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
コード例 #3
0
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({})
コード例 #4
0
ファイル: game_log.py プロジェクト: dzjh-web/weblist
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;
コード例 #5
0
ファイル: resume_token.py プロジェクト: dzjh-web/weblist
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
コード例 #6
0
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")
コード例 #7
0
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
コード例 #8
0
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))
コード例 #9
0
ファイル: __init__.py プロジェクト: dzjh-web/weblist
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))
コード例 #10
0
ファイル: web_item.py プロジェクト: dzjh-web/weblist
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
コード例 #11
0
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()
コード例 #12
0
ファイル: game_item.py プロジェクト: dzjh-web/weblist
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
コード例 #13
0
ファイル: web_item.py プロジェクト: dzjh-web/weblist
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
コード例 #14
0
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
コード例 #15
0
ファイル: game_item.py プロジェクト: dzjh-web/weblist
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
コード例 #16
0
ファイル: game_log.py プロジェクト: dzjh-web/weblist
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;
コード例 #17
0
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