Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
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
Esempio n. 4
0
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)
Esempio n. 5
0
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()
Esempio n. 6
0
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)