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
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}