コード例 #1
0
def item_detail(current_user, item_type, item):
    """Display item and students who are learning that item"""
    user_id = current_user.public_id
    item_object = Item.query.filter_by(item_id=item, user_id=user_id).first()
    student_items = StudentItem.query.filter_by(
        item_id=item).options(db.joinedload('students')).all()
    learned_student_list = []
    unlearned_student_list =[]
    item_detail = {}

    for student in student_items:
        if student.Learned == False:
            student = {
                'student_id': student.students.student_id,
                'name': student.students.name
                }
            unlearned_student_list.append(student)

        else:
            student = {
                'student_id': student.students.student_id,
                'name': student.students.name
                }
            learned_student_list.append(student)

    item_object = {
        'item_id': item_object.item_id,
        'item': item_object.item,
        'date': item_object.date_added,
        'itemType': item_object.item_type
    }
    item_detail['unlearnedStudentList'] = unlearned_student_list
    item_detail['learnedStudentList'] = learned_student_list
    item_detail['item'] = item_object
    return jsonify(item_detail)
コード例 #2
0
def get_items(current_user, item_type):
    start = time.time()
    user_id = current_user.public_id
    items = StudentItem.query.filter_by(user_id=user_id).filter_by(item_type=item_type).options(
    db.joinedload('items')).filter_by(user_id=user_id).filter_by(item_type=item_type).options(
        db.joinedload('students')).filter_by(user_id=user_id).all()
    item_list =[]
    items_dict = {}
    for item in items:
        if not items_dict.get(item.items.item_id):
            items_dict[item.items.item_id] = {"item": item.items.item, "itemId": item.items.item_id, "itemType": item.item_type, "unlearnedCount": 0, "learnedCount": 0, "unlearnedStudents": [], "learnedStudents": [], "totalCount": 0}
        prefix = "un" if item.Learned == False else ""
        key = "{}learned".format(prefix)
        items_dict[item.items.item_id][key + "Count"] += 1
        items_dict[item.items.item_id]["totalCount"] += 1
        items_dict[item.items.item_id][key + "Students"].append(item.students.name)
    end = time.time()
    elapsed_time = end - start
    return jsonify(items_dict)
コード例 #3
0
def get_student_reading_leels(current_user):
    user_id = current_user.public_id
    reading_levels = ReadingLevel.query.filter_by(user_id=user_id).options(
    db.joinedload('students')).filter_by(user_id=user_id).all()
    reading_level_dict = {}
    for entry in reading_levels:
        if entry.reading_level not in reading_level_dict:
            reading_level_dict[entry.reading_level] = [entry.students.name]
        else:
            reading_level_dict[entry.reading_level].append(entry.students.name)

    return jsonify(reading_level_dict)
コード例 #4
0
def student_detail(current_user, student_id):
    """Show student detail"""
    start = time.time()
    user_id = current_user.public_id
    averages = get_class_averages(user_id)
    student_items = Item.query.filter(Item.custom.is_(False)).all()
    student = Student.query.filter_by(
        student_id=student_id, user_id=user_id).options(db.joinedload('studentgroups')).options(db.joinedload('readinglevels')).all()
    student_items = StudentItem.query.filter_by(
        student_id=student_id).options(db.joinedload('items')).all()
    student_dict = {}

    items = StudentItem.query.filter_by(user_id=user_id, student_id=student_id).options(db.joinedload('items')).all()
    item_dict = get_student_detail_item_dict(items)
    student_dict['classAverages'] = get_class_averages(user_id)
    student_dict['wordList'] = item_dict.get("wordList")
    student_dict['letterList'] = item_dict.get("letterList")
    student_dict['soundList'] = item_dict.get("soundList")
    student_dict['unlearnedWordList'] = item_dict.get("unlearnedWordList")
    student_dict['unlearnedLetterList'] = item_dict.get("unlearnedLetterList")
    student_dict['unlearnedSoundList'] = item_dict.get("unlearnedSoundList")
    student_dict['wordCount'] = item_dict.get("wordCount")
    student_dict['letterCount'] = item_dict.get("letterCount")
    student_dict['soundCount'] = item_dict.get("soundCount")
    student_dict['unlearnedWordCount'] = item_dict.get("unlearnedWordCount")
    student_dict['unlearnedLetterCount'] = item_dict.get("unlearnedLetterCount")
    student_dict['unlearnedSoundCount'] = item_dict.get("unlearnedSoundCount")
    student_dict['totalWordCount'] = item_dict.get("totalWordCount")
    student_dict['totalLetterCount'] = item_dict.get("totalLetterCount")
    student_dict['totalSoundCount'] = item_dict.get("totalSoundCount")
    student_dict['student_id'] = student[0].student_id,
    student_dict['name'] = student[0].name
    student_dict['readingLevel'] = get_all_student_reading_levels(student[0])[0]
    student_dict['lastReadingUpdate'] = get_all_student_reading_levels(student[0])[1]
    student_dict['group'] = get_student_group(student[0], user_id)
    end = time.time()
    elapsed_time = end - start
    print('getting student detail took', elapsed_time)
    return jsonify(student_dict)
コード例 #5
0
def get_all_groups(current_user):
    """get all groups and students in each group"""
    user_id = current_user.public_id
    groups = Group.query.filter_by(user_id=user_id).all()
    group_dict = {}
    for group in groups:
        group_dict[group.group_id] = {'name': group.group_name, 'students': []}
    student_groups = StudentGroup.query.filter_by(user_id=user_id).options(db.joinedload('groups')).options(db.joinedload('students')).all()

    for entry in student_groups:
        if entry.groups.group_id in group_dict:
            group_dict[entry.groups.group_id]['students'].append(entry.students.name)
        

    return jsonify(group_dict)
コード例 #6
0
def get_student_item_test(current_user, item_type, student):
    """get list of student test results, word_counts and chart_data"""

    user_id = current_user.public_id
    student_id = student
    student_items = StudentItem.query.filter_by(
        user_id=user_id, student_id=student_id, item_type=item_type).options(db.joinedload('items')).options(db.joinedload('students')).all()
    student_tests = StudentTestResult.query.filter_by(
        student_id=student_id, user_id=user_id, test_type=item_type).all()
    item_counts = get_item_counts(student_items)
    student_test_list = get_student_item_test_list(student_tests)
    learned_items_list = get_learned_items_list(student_items)
    item_counts = get_item_counts(student_items)
    test_data = {'itemCounts': item_counts, 'studentTestList':student_test_list, 'learnedItemList': learned_items_list
    }
    return test_data
コード例 #7
0
def get_unassigned_students_item(current_user, item):
    """gets students are not assigned to item"""
    user_id = current_user.public_id
    students = StudentItem.query.filter_by(
        item_id=item, user_id=user_id).options(db.joinedload('students')).all()
    student_ids = []
    for student in students:
        student_ids.append(student.student_id)

    unassigned_students = Student.query.filter_by(user_id=user_id).filter(Student.student_id.notin_(student_ids)).all()
    student_list = []

    for student in unassigned_students:
        student = {
            'student_id': student.student_id,
            'student': student.name 
            
        }

        student_list.append(student)
    return jsonify([student_list])
コード例 #8
0
def update_incorrect_items(student_id, incorrect_items, test_type, user_id):
    """updates incorrect letters in db, called by create_student_test"""
    student_item_list = StudentItem.query.filter_by(student_id=student_id, user_id=user_id, item_type=test_type).options(db.joinedload('items')).filter(
    Item.item.in_(incorrect_items)).all()
    for item in student_item_list:
        if item.items.item in incorrect_items:
            item.incorrect_count = StudentItem.incorrect_count + 1
            db.session.commit()
    return "incorrect items"
コード例 #9
0
def get_students(current_user):
    start = time.time()
    user_id = current_user.public_id
    students = Student.query.filter_by(user_id=user_id).options(
        db.joinedload('studentitems')).options(db.joinedload('studenttestresults')).options(db.joinedload('studentgroups')).options(db.joinedload('readinglevels')).all()
    student_dict = {}
    for student in students:
        student_dict[student.student_id] = {
                'studentId': student.student_id, 
                'name': student.name, 
                'wordCount': 0, 
                'totalWordCount': 0, 
                'unlearnedWordCount': 0, 
                'wordList':[], 
                'unlearnedWordList': [], 
                'lastWordTest': "",
                'letterCount': 0, 
                'unlearnedLetterCount': 0,
                'totalLetterCount': 0, 
                'letterList':[], 
                'unlearnedLetterList': [],
                'lastLetterTest': "",
                'soundCount': 0,
                'unlearnedSoundCount': 0,
                'soundList': [],
                'unlearnedSoundList': [],
                'totalSoundCount': 0,
                'lastSoundTest': "",
                'readingLevel': "",
                'lastReadingLevelUpdate': "",
                'group': ""
                }
        tests = get_student_test_dates(student)
        wordTest = tests.get('lastWordTest')
        if wordTest == None:
            wordTest = ""
        letterTest = tests.get('lastLetterTest')
        if letterTest == None:
            letterTest = ""
        soundTest = tests.get('lastSoundTest')
        if soundTest == None:
            soundTest = ""
        student_dict[student.student_id]['lastWordTest'] = wordTest
        student_dict[student.student_id]['lastLetterTest'] = letterTest
        student_dict[student.student_id]['lastSoundTest'] = soundTest
        student_dict[student.student_id]['group'] = get_student_group(student, user_id)
        student_dict[student.student_id]['readingLevel'] = get_all_student_reading_levels(student)[0]
        student_dict[student.student_id]['lastReadingLevelUpdate'] = get_all_student_reading_levels(student)[1]
        items = StudentItem.query.filter_by(user_id=user_id, student_id=student.student_id).options(db.joinedload('items')).all()
        item_dict = get_student_item_dict(items)
        student_dict[student.student_id]['wordList'] = item_dict.get("wordList")
        student_dict[student.student_id]['letterList'] = item_dict.get("letterList")
        student_dict[student.student_id]['soundList'] = item_dict.get("soundList")
        student_dict[student.student_id]['unlearnedWordList'] = item_dict.get("unlearnedWordList")
        student_dict[student.student_id]['unlearnedLetterList'] = item_dict.get("unlearnedLetterList")
        student_dict[student.student_id]['unlearnedSoundList'] = item_dict.get("unlearnedSoundList")
        student_dict[student.student_id]['wordCount'] = item_dict.get("wordCount")
        student_dict[student.student_id]['letterCount'] = item_dict.get("letterCount")
        student_dict[student.student_id]['soundCount'] = item_dict.get("soundCount")
        student_dict[student.student_id]['unlearnedWordCount'] = item_dict.get("unlearnedWordCount")
        student_dict[student.student_id]['unlearnedLetterCount'] = item_dict.get("unlearnedLetterCount")
        student_dict[student.student_id]['unlearnedSoundCount'] = item_dict.get("unlearnedSoundCount")
        student_dict[student.student_id]['totalWordCount'] = item_dict.get("totalWordCount")
        student_dict[student.student_id]['totalLetterCount'] = item_dict.get("totalLetterCount")
        student_dict[student.student_id]['totalSoundCount'] = item_dict.get("totalSoundCount")
        
    end = time.time()
    elapsed_time = end - start
    print('getting all students took', elapsed_time)

    return jsonify(student_dict)
コード例 #10
0
def group_detail(current_user, group):
    """Display group and students in that group"""
    user_id = current_user.public_id
    group_object = Group.query.filter_by(group_name=group, user_id=user_id).first()
    group_id = group_object.group_id
    group_notes = GroupNote.query.filter_by(group_id=group_id, user_id=user_id).all()
    student_group = StudentGroup.query.filter_by(
        group_id=group_id, user_id=user_id).options(db.joinedload('students')).all()
    notes = [{'note': note.note, 'date': note.date_added} for note in group_notes]
    words_list = []
    letters_list = []
    sounds_list = []
    if student_group: 
        student_names = []
        student_ids =[]
        for student in student_group:
            student_names.append(student.students.name)
            student_ids.append(student.student_id)


        reading_levels ={}


        for student in student_ids:
            student_reading_level = ReadingLevel.query.filter_by(user_id=user_id, student_id=student).options(db.joinedload('students')).first()
            if student_reading_level:
                reading_levels[student_reading_level.students.name] = student_reading_level.reading_level

            student_words = StudentItem.query.filter(StudentItem.Learned.is_(False)).filter_by(user_id=user_id, student_id=student, item_type="words").options(db.joinedload('students')).options(db.joinedload('items')).all()
            student_word_list = []
            for word in student_words:
                student_word_list.append(word.items.item)
            words_list.append(student_list)


            student_letters = StudentItem.query.filter(StudentItem.Learned.is_(False)).filter_by(user_id=user_id, student_id=student, item_type="letters").options(db.joinedload('students')).options(db.joinedload('items')).all()
            student_letter_list = []
            for letter in student_letters:
                student_letter_list.append(letter.items.item)
            letter_list.append(student_letter_list)

            student_sounds = StudentItem.query.filter(StudentItem.Learned.is_(False)).filter_by(user_id=user_id, student_id=student, item_type="sounds").options(db.joinedload('students')).options(db.joinedload('items')).all()
            student_sound_list = []
            for sound in student_sounds:
                student_sound_list.append(sound.items.item)
            sound_list.append(student_sound_list)


        word_result = set(words_list[0])
        for word in words_list[1:]:
           word_result.intersection_update(word)
        
        letter_result = set(letters_list[0])
        for letter in letters_list[1:]:
           letter_result.intersection_update(letter)
    
        sound_result = set(sounds_list[0])
        for sound in sounds_list[1:]:
           sound_result.intersection_update(sound)
    
    
        group_data = {
            'name': group,
            'students': student_names,
            'words' : list(word_result),
            'letters': list(letter_result),
            'sounds': list(sound_result),
            'readingLevels': reading_levels,
            'notes': notes
        }
        return jsonify(group_data)
    else:
        return jsonify({"message":"no students yet"})