def editQuestionnaire():
    userId = g.userInfo.userId
    form = QuestionnaireForm().validateForApi()
    Questionnaire.editQuestionnaire(ownerId=userId,
                                    questionnaireId=form.questionnaireId.data,
                                    form=form)
    return Success(information="编辑问卷成功")
def deleteQuestionnaire():
    userId = g.userInfo.userId
    form = DeleteQuestionnaireForm().validateForApi()
    Problem.deleteProblems(ownerId=userId,
                           questionnaireId=form.questionnaireId.data)
    Questionnaire.deleteQuestionnaire(
        ownerId=userId, questionnaireId=form.questionnaireId.data)
    return Success(information="删除问卷成功")
def getAllQuestionnaire():
    userId = g.userInfo.userId
    res = Questionnaire.getAllQuestionnaire(ownerId=userId)
    tlen = Questionnaire.getTemplatesAmount()
    return Success(information="获取用户问卷数据成功",
                   payload={
                       "questionnaires": res,
                       "tAmount": tlen
                   })
def pushWJWDataToDB():
    from app.models.problem import Problem
    from app.models.user import User
    from app.models.questionnaire import Questionnaire
    from app.models.basicInfo import BasicInfo
    with db.app.app_context():
        # 计数器
        count = 0
        failedNum = 0
        successNum = 0

        templateUserId = User.getTemplateUserId()
        info = BasicInfo.objects.first()

        myList = WJWSpider.getLinks(5)

        # 获得当前网站下已经爬到的最新链接
        newestLink = info.getNewestLink(0)

        for currentLink in myList:
            count += 1

            # 发现当前链接和最新链接相等
            if currentLink == newestLink:
                sendSuccessEmail(successNum, failedNum)
                return

            # 防止由于网站原因拿不到部分数据 如果异常则加载下一份问卷
            try:
                qid = getUniqueId()
                p = WJWSpider(url=currentLink).runSpider()
                Questionnaire.createByTemplates(templateUserId, qid, p.getTitle(), p.getSubTitle())
                problems = p.getProblems()
                for p in problems:
                    res = WJWProblem(p)
                    Problem.createByTemplates(res.getProblemTitle(), res.checkProblemType(), res.getProblemOptions(),
                                              getUniqueId(), templateUserId, qid)
                successNum += 1
            except Exception as e:
                current_app.logger.info(e)
                failedNum += 1
                continue
            # 最新数据 并且生效写入数据库了
            if successNum is 1:
                info.renewNewestLink(0, currentLink)
        sendSuccessEmail(successNum, failedNum)
Ejemplo n.º 5
0
def getAnalysisData(qid):
    res = Questionnaire.getAnalysisData(qid)
    return Success(information="获取分析数据成功", payload=res)
def getQuestionnaire(qid):
    userId = g.userInfo.userId
    res = Questionnaire.getQuestionnaire(ownerId=userId,
                                         questionnaireId=qid,
                                         isAdmin=True)
    return Success(information="获取问卷成功", payload=res)
def createQuestionnaire():
    userId = g.userInfo.userId
    qid = Questionnaire().createQuestionnaire(ownerId=userId)
    return Success(information="新建问卷成功", payload={"questionnaireId": qid})
def copyTemplates():
    userId = g.userInfo.userId
    form = CopyTemplatesForm().validateForApi()
    Questionnaire.copyTemplates(qid=form.templateId.data, uid=userId)
    return Success(information='更新成功')
def getTemplates():
    form = GetTemplatesForm().validateForApi()
    data = Questionnaire.getTemplatesBasicInfo(int(form.page.data))
    return Success(information='获取问卷模板成功', payload={"data": data})
def getCondition(qid):
    r = Questionnaire.getConditions(questionnaireId=qid, isAdmin=True)
    return Success(information="获取问卷状态成功", payload=r)
def checkSecretKey(qid):
    form = QuestionireSecretCheckForm().validateForApi()
    res = Questionnaire.checkSecretKey(questionnaireId=qid, key=form.secretKey.data)
    return Success(information="验证成功", payload=res)