ITMO_ICT_WebDevelopment_2021-2022_sem_2

Репозиторий для реализации дистанционного обучения по дисциплине "СРЕДСТВА ВЕБ-ПРОГРАММИРОВАНИЯ".

Учебный журнал по дисциплине. Тут доступна информация о сроках сдачи работ, о текущей успеваемости студентов и описаны все материалы необходимые для реализации курса.

Составляющие финальной оценки:

  • 60 баллов - лабы.
  • 10 баллов - тесты.
  • 10 баллов - дисскусии на практиках (1+ доклад за семестр (оценка складывается из доклада 50% + активности на занятиях 50%)).
  • 20 - экзамен. При выполнении всех лаб по дисциплине в срок - экзамен-автомат.

Лекция 1.1 - Концепции разработки веб сервисов.

Конспект с лекции тут.

Лабораторная работа 1. Контейниризация и оркестрация.

1. Контейниризация средствами Docker.

Отчет по работе необходимо выполнить в mkdocs.

Изучить:

Задание:

  1. Написать Dockerfile для запуска бэкенд части проекта из курса "Web-программирование".
  2. Выполнить следующие действия:

2. Оркестрация средствами Docker-compose.

Изучить:

Задание:

  1. Реализовать работу в оркестре всех сервисов из 3 и 4 работы из курса "Web-программирование".
  2. Выполнить команды необходимые для того, чтобы добавить нового пользователя в БД Postgres. С попощью пользователя должна быть возможность подключиться к БД из приложения для работы с БД (Valentina DB).

3. Работа с web-серверами.

Лекция на данную тему пройдет 10 марта. Задание будет дополнено.

Лабораторная работа 2. Возможности Django REST Framework.

Срок выполнения работы: 28.04.2022

2.1 Фильтры

Изучить:

Задание 2.1.1

Необходимо согласовать список фильтров с преподавателем перед выполнением задания. Задание выполняется на основе ЛР из предыдущего семестра или нового проекта (при желании)

Реализвать в ручную следующие фильтры (в ручную значит, что Вам необходимо передать в url параметры, далее переопределть метод list или get_queryset, c целью взять параметры из url-адреса, выполнить с ними запрос и вернуть responce пользователю):

  • принимает параметр из url-адреса и выводит отфильтрованные данные. (GET, ListAPIView)
  • принимает 2 параметра из url-адреса и выводит отфильтрованные данные. (GET, ListAPIView)
  • принимает 2 параметра из url-адреса и выводит отфильтрованные данные, если пользователь авторизован и неотфильтрованные, если не авторизован. (GET, ListAPIView)

Список фильтров и код их исполнения необходимо описать в mkdocs на странице с названием "2.1.1 Ручные фильтры"

Задание 2.1.2

Необходимо согласовать список фильтров с преподавателем перед выполнением задания. Задание выполняется на основе ЛР из предыдущего семестра или нового проекта (при желании)

Реализвать в ручную следующие фильтры (Необходимо использовать библиотеку django-filters:

  • сортировка по дате, поиск, поиск по полям из связной таблицы
  • сортировка в диапазоне цен, дат или каких-либо других числовых значений

Список фильтров и код их исполнения необходимо описать в mkdocs на странице с названием "2.1.2 Автоматические фильтры"

2.2 Пагинация

Изучить:

Задание 2.2.1

Настроить пагинацию для любых списков в Вашем проекте.

Задание 2.2.2

Написать и применить метод пагинации, который, кроме обычного вывода вернет количество страниц пагинации и номер текущей страницы (Это поможет)

Код и пример вывода описать в mkdocs на странице с названием "2.2.2 Кастомная пагинация"

2.3. Загрузка файлов

Изучить:

Задание 2.3.1

Реализовать следующие ендпоинты:

  • Ендпоинт для загрузки файлов, с указанием внешнего ключа на связный объект и сохранением имени и размера файла в базе данных.
  • Ендпоинт для сохранения нескольких файлов и валидации на максимальный размер файла и доступные для загрузки расширения файлов.

Код и пример вывода описать в mkdocs на странице с названием " 2.3.1 Загрузка и валидация файлов"

2.4. сигналы

Изучить:

Задание 2.4.1

Реализовать 3 сигнала, которые:

  • Вызывает логику, во время создания экземаляра объекта.
  • Сохраняет значения выбранных полей в таблице в специальные поля для хранения предыдущих значений при обновлении объекта.
  • При удалении объекта записывает информацию об удалении в лог реализованный любым образом.

Код и пример вывода описать в mkdocs на странице с названием " 2.4 Cигналы"

Лабораторная работа 3. Тесты Django REST Framework.

Выполнить практическую работу

Практическая работа

Задание 3.1.1

  • Написать тесты на модель в Вашем API (3 таблицы)
  • Написать тесты на ендпинты в Вашем API (3 GET запроса, 3 POST запроса, 3 PATHC запроса)

Код и пример вывода описать в mkdocs на странице с названием " 3.1 Тесты"

Сдача работы

Необходимо описать все этапы работы в документации mkdocs. Ссылку загрузить в markdown файл в своей папке в репозитории дисциплины.

Срок сдачи: 17.03.2022 (включительно). Вес работы в баллах – 15. После срока сдачи максимальный бал 10.

Лабораторная работа 4. Адаптация интерфейсов vue.js

Задание 3.1.1

Необходимо реализовать интерфейс списков объектов, в котором подключить фильтры из второй лабораторной. В интерфейсе должен быть обеспечен следующий функционал:

  • сортировка объектов.
  • пагинация.
  • поиск по объектам.
  • фильтрация с чекбоксами.
  • фитры на диапазон.

Можно сказать, необходимо реализовать страничку с фильтрами, как в интернет магазине и подключить к бэкенду.

Для реализации поставленной задачи на фронтенде можно использовать функционал для работы с таблицами в библиотеке vuetifyjs

Сдача работы

Описать реализованные интерфейсы со скриншотами в документации mkdocs. Ссылку загрузить в markdown файл в своей папке в репозитории дисциплины.

Срок сдачи: 12.06.2022 (включительно). Вес работы в баллах – 15. После срока сдачи максимальный бал 10.

Курсовой проект

В качестве курсовика, необходимо доделать Ваши интерфейсы, которые Вы делали в предыдущих работах, как единый проект.

Требования:

  • все должно быть в контейнерах
  • авторизация и регистрация
  • наличие навигационной панели
  • наличие главной страницы с описанием возможности сервиса
  • фильтры, триггеры, тесты, пагинация
  • минимум 10 страниц работающих интерфейсов

Срок сдачи: конец сессии (включительно).