Esempio n. 1
0
def get_studentwise_info(class_id: str):
    students_data = MongoConnection.get_students_data_collection()
    pipeline = [{
        "$match": {
            "class_id": int(class_id)
        }
    }, {
        "$project": {
            "_id": 0,
            "student_id": 1
        }
    }, {
        "$lookup": {
            "from": "students",
            "localField": "student_id",
            "foreignField": "_id",
            "as": "view"
        }
    }, {
        "$project": {
            "_id": 0,
            "student_name": {
                "$arrayElemAt": ["$view.name", 0]
            },
            "student_id": 1
        }
    }]
    query = students_data.aggregate(pipeline)
    return [i for i in query]
Esempio n. 2
0
def get_student_marks_by_course(student_id: str, class_id: str):
    student_data = MongoConnection.get_students_data_collection()
    pipeline = [{
        "$match": {
            "class_id": int(class_id)
        }
    }, {
        "$lookup": {
            "from": "students",
            "localField": "student_id",
            "foreignField": "_id",
            "as": "view"
        }
    }, {
        "$match": {
            "student_id": int(student_id)
        }
    }, {
        "$unwind": "$scores"
    }, {
        "$project": {
            "type": "$scores.type",
            "marks": "$scores.score",
            "_id": 0
        }
    }]

    query = student_data.aggregate(pipeline)
    return [i for i in query]
Esempio n. 3
0
def get_classes_taken_by_student(student_id: str):
    student_data = MongoConnection.get_students_data_collection()

    pipeline = [{
        "$match": {
            "student_id": int(student_id)
        }
    }, {
        "$project": {
            "_id": 0,
            "class_id": 1
        }
    }, {
        "$group": {
            "_id": "$class_id"
        }
    }, {
        "$project": {
            "class_id": "$_id",
            "_id": 0
        }
    }]

    classes_taken = student_data.aggregate(pipeline)
    return [i for i in classes_taken]
Esempio n. 4
0
def get_studentwise_performance(class_id: str):
    pipeline = [{
        '$match': {
            'class_id': int(class_id)
        }
    }, {
        '$project': {
            '_id': 0,
            'student_id': 1,
            "total_marks": {
                "$sum": "$scores.score"
            }
        }
    }, {
        "$lookup": {
            "from": "students",
            "localField": "student_id",
            "foreignField": "_id",
            "as": "student_data_view"
        }
    }, {
        "$project": {
            "student_name": {
                "$arrayElemAt": ["$student_data_view.name", 0]
            },
            "student_id": 1,
            "total_marks": 1
        }
    }]
    # using aggregation framework
    student_data = MongoConnection.get_students_data_collection()
    query = student_data.aggregate(pipeline)
    return [i for i in query]
Esempio n. 5
0
def get_students():
    students = MongoConnection.get_students_collection()
    pipeline = [{
        "$project": {
            "student_id": "$_id",
            "student_name": "$name",
            "_id": 0
        }
    }]
    query = students.aggregate(pipeline)
    return [i for i in query]
Esempio n. 6
0
def create_user(username: str, password: bytes):

    users = MongoConnection.get_users_collection()

    result = users.insert_one({
        "username": username,
        "password": password.decode("utf-8")
    })

    if result.acknowledged:
        return result.inserted_id
    else:
        raise Exception("Error while inserting user. acknowledged is False")
Esempio n. 7
0
def get_classes():
    student_data = MongoConnection.get_students_data_collection()
    pipeline = [{
        "$group": {
            "_id": "$class_id"
        }
    }, {
        "$project": {
            "class_id": "$_id",
            "_id": 0
        }
    }]
    query = student_data.aggregate(pipeline)
    return [i for i in query]
Esempio n. 8
0
def get_student(student_id: str):
    students = MongoConnection.get_students_collection()
    pipeline = [{
        "$match": {
            "_id": int(student_id)
        }
    }, {
        "$project": {
            "_id": 0,
            "student_id": "$_id",
            "student_name": "$name"
        }
    }]
    query = students.aggregate(pipeline)
    results = [i for i in query]
    if len(results) == 1:
        return results[0]
    else:
        return []
Esempio n. 9
0
def get_classes_taken_by_student_total_marks(student_id: str):
    student_data = MongoConnection.get_students_data_collection()

    pipeline = [{
        "$match": {
            "student_id": int(student_id)
        }
    }, {
        '$project': {
            "_id": 0,
            "class_id": 1,
            "total_marks": {
                "$sum": "$scores.score"
            }
        }
    }]

    classes_taken = student_data.aggregate(pipeline)
    return [i for i in classes_taken]
Esempio n. 10
0
def get_user_credentials(username: str):
    users = MongoConnection.get_users_collection()
    query = users.find_one({"username": username})
    return query