Личный кабинет - это платформа управления проектной работой студентов и единое окно в онлайн-сервисы МИЭМ НИУ ВШЭ.
Поддержка всех этапов жизненного цикла проекта: подачи заявки, трекинг задач, мониторинг показателей, контроль отчетности. Видеоконференции и чат в подарок.
Импортируем модели из нашего пакета:
from footprint_mongoengine.models import cabinet, user
Структура записи cabinet_projects следующая. Основной класс в себе содержит информацию о проекте: номер проекта, имя проекта, информацию о руководителях, ссылку на проект, департамент и студентов проекта.
Стоит отметить что еще есть поле с ReferenceField. Данное поле ссылается на другие модели (а именно модель User, котороая содержит в себе информацию о пользователе).
class Project(Document):
meta = {
'collection': 'cabinet_projects'
}
project_id = StringField(required=True)
name = StringField(required=True)
head_id = ReferenceField(user.User)
direction_head_id = ReferenceField(user.User)
link = StringField(required=True)
department = StringField(required=True)
students_ids = ListField(ReferenceField(user.User))
Получим пользователя используя модель из user и посмотрим его проекты.
user = cabinet.User.objects(slug='kdgryazeva')[0]
print(f'user(slug={user.slug}, firstname={user.name.firstname}, '
f'lastname={user.name.lastname})')
Вывод:
user(slug=kdgryazeva, firstname=Ксения, lastname=Грязева)
project = cabinet.Project.objects(students_ids=user)[0]
print(project.project_id, project.name, project.department)
Вывод:
394 Цифровой след: сбор данных ДПМ
Усложним запрос:
user = cabinet.User.objects(slug='sslastnikov')[0]
for project in cabinet.Project.objects(department='ДПМ', head_id=user):
print(project.project_id, project.name)
Вывод:
1379 Аналитическая платформа цифрового следа
1318 Образовательное веб-приложение "Нейрогеометрия"
1491 Разработка макета программного комплекса для диагностики глазных заболеваний
1380 Рекомендательная система для формирования меню и покупки продуктов
24 Цифровое портфолио
400 Цифровой след: аналитика
394 Цифровой след: сбор данных
1515 Исследование современных технологий генерации изображений по фото и текстовому описанию
Если нужны еще более сложные запросы, можно воспользоваться продвинутым форматом запросов.
Больше информации позапросам к базе данных можно найти по ссылке в официальной документации mongoengine.