def current_words_json(user):
    progress = get_user_progress(user)

    # Get level words
    words = current_words(progress)

    # UserWords for this level
    userwords = get_or_create_userwords(words,user)

    # Definitions
    definitions = Definition.objects.filter(word__in = words)

    # Create the resulting object
    json = []
    for word in words:
        userword = [userword for userword in userwords if userword.word == word][0]
        defs = [definition for definition in definitions if definition.word == word]
        def def_to_json(defn):
            return {
                "id":defn.id,
                "text":defn.text,
            }
        defs_json = [def_to_json(defn) for defn in defs]
        json.append({
            'id':word.id,
            'word':word.text,
            'skill':userword.skill,
            'current':True,
            'definitions':defs_json,
        })
    return json
Example #2
0
def update_skills_handler(request, reqObj):
    user = request.user

    # Get the words
    word_to_skills = {}
    words = []
    for entry in reqObj:
        # Validate
        wordId = int(entry["wordId"])
        word = Word.objects.get(id=wordId)
        words.append(word)

        skill = max(0, min(100, int(entry["skill"])))
        word_to_skills[word] = skill

    # Get userwords
    userwords = get_or_create_userwords(words=words, user=user)

    # Update
    for userword in userwords:
        # Get and update UserWord
        userword.skill = word_to_skills[userword.word]
        userword.save()

    # Check for levelup
    leveled_up = False
    if can_level_up(user):
        leveled_up = level_up(user.userprogress)

    return {"leveled_up": leveled_up}