def passageResults(): response.view = 'passages/passageResults.html' response.title = "Results" userId = (auth.user.id) if (auth.is_logged_in()) else 0 passageId = request.vars.passageId if(not(utilityFunctions.checkIfVariableIsInt(passageId))): redirect(URL('passages','solvePassage')) startTime = datetime.datetime.strptime(str(request.vars.startTime),'%Y-%m-%d %H:%M:%S.%f') curTime = datetime.datetime.now() elapsedTime = curTime - startTime elapsedTimeStr = str(elapsedTime) elapsedTimeStr = str(elapsedTimeStr.split(":")[1]) + ":" + str(elapsedTimeStr.split(":")[2].split(".")[0]) numberOfQuestions = databaseQueries.getNumberOfQuestions(db, passageId) #TODO : Check args and bypass this loop answers = [] for i in range(1, numberOfQuestions + 1): questionId = "question-" + str(i) answers += [request.vars[questionId]] passageContent = databaseQueries.getPassage(db, passageId) numberOfAttempts = databaseQueries.getNumberOfAttempts(db, passageId) questionContent = utilityFunctions.getResultsReviewHTMLCode(db, passageId, answers, numberOfAttempts) resultsContent = utilityFunctions.getResultsHTMLCode(db, passageId, answers, elapsedTimeStr, numberOfAttempts) utilityFunctions.updateStats(db, passageId, userId, elapsedTime.seconds, answers) answerDicts = databaseQueries.getPassageQuestionAnswerDistribution(db, passageId) return dict(passageContent = passageContent, questionContent = questionContent, resultsContent = resultsContent, elapsedTime = elapsedTimeStr, answerDicts = answerDicts)
def solvePassage(): response.view = 'passages/solvePassage.html' response.title = "Solve A Passage" response.ignoreHeading = True passageId = request.vars.passageId if(not(utilityFunctions.checkIfVariableIsInt(passageId))): numberOfPassages = databaseQueries.getNumberOfPassages(db) passageId = utilityFunctions.getRandomNumber(1, numberOfPassages) passageContent = databaseQueries.getPassage(db, passageId) passageContent = passageContent.replace("\n","<br/><br/>") questionContent = utilityFunctions.getQuestionsHTMLCode(db, passageId) numberOfQuestions = databaseQueries.getNumberOfQuestions(db, passageId) fields = [] fields += [Field("startTime", 'datetime')] fields += [Field("passageId", 'string')] for i in range(1, numberOfQuestions + 1): questionNumber = "question-" + str(i) fields += [Field(questionNumber,'string')] form = SQLFORM.factory(*fields, _action = URL('passages','passageResults')) startTime = datetime.datetime.now() return dict(form = form, passageId = passageId, startTime = startTime, passageContent = passageContent, questionContent = questionContent)
def getQuestionCode(): questionNumber = request.vars.questionNumber question = str(request.vars.question) optionA = str(request.vars.optionA) optionB = str(request.vars.optionB) optionC = str(request.vars.optionC) optionD = str(request.vars.optionD) optionE = str(request.vars.optionE) answer = str(request.vars.answer) htmlCode = "" if(utilityFunctions.checkIfVariableIsInt(questionNumber)): htmlCode = utilityFunctions.getQuestionInputHtmlCode(questionNumber, question, optionA, optionB, optionC, optionD, optionE, answer) return htmlCode
def changeLikeStatus(): userId = auth.user.id articleType = request.vars.articleType articleId = request.vars.articleId if (not(utilityFunctions.checkIfVariableIsInt(articleId))): return "Invalid" if not(databaseQueries.checkIfArticleExists(db, articleId, articleType)): return "Invalid" if(databaseQueries.hasUserLikedArticle(db, articleId, articleType, userId)) : databaseQueries.unlike(db, articleId, articleType, userId) else: databaseQueries.like(db, articleId, articleType) return databaseQueries.getNumberOfLikes(db, articleId, articleType)
def deleteComment(): userId = auth.user.id commentId = request.vars.commentId takeId = request.vars.takeId if not(utilityFunctions.isTakeIdValid(takeId,db)): redirect(URL('default','index')) if not(utilityFunctions.checkIfVariableIsInt(commentId)): commentId = 0 if not(databaseQueries.checkIfUserCommentPairExists(db, userId, commentId)): redirect(URL('default','index')) databaseQueries.deleteComment(db, commentId) redirect(URL('takes','viewTake',vars=dict(takeId = takeId))) return dict()
def tagFeed(): response.view = "takes/feed.html" response.title = "Tag Feed" tagId = request.vars.tagId sortParameter = "Date" if(request.vars.sortParameter!=None): sortParameter = request.vars.sortParameter if not(utilityFunctions.checkIfVariableIsInt(tagId)): redirect(URL('default','index')) tagName = databaseQueries.getTagName(db, tagId) if(tagName==None): redirect(URL('default','index')) response.title = tagName + " Feed" pageNumber = 0 rangeLowerLimit = pageNumber*items_per_page rangeUpperLimit = (pageNumber+1)*items_per_page toDate = datetime.datetime.now() fromDate = datetime.datetime.now() - datetime.timedelta(hours=numOfHours) topicId = 0 ignoredTakesList = [] ignoredUserList = [] userIdList = [] feedCode = utilityFunctions.getRequiredTakesHTML(3, sortParameter, db, fromDate, toDate, rangeLowerLimit, rangeUpperLimit, ignoredTakesList, ignoredUserList, topicId, tagId, userIdList) loadContentLink = URL('ajax','getNewTakes', vars=dict(feedType = 1, sortParameter = "replaceMESortParameter", pageNumber = "replaceMEPageNumber", ignoredTakesList = ignoredTakesList, ignoredUserList = ignoredUserList, topicId = topicId, tagId = tagId, userIdList = userIdList, numOfHours = "replaceMENumOfHours")) alternateSortURL = URL('ajax','getNewTakes', vars=dict(feedType = 1, sortParameter = "replaceMESortParameter", pageNumber = 0, ignoredTakesList = ignoredTakesList, ignoredUserList = ignoredUserList, topicId = topicId, tagId = tagId, userIdList = userIdList, numOfHours = "replaceMENumOfHours")) return dict(feedCode = feedCode, alternateSortURL = alternateSortURL, sortParameter = sortParameter, numOfHours = numOfHours, loadContentLink = loadContentLink)