/NoteApi_05_12

Учебный проект по курсу Flask-2

Primary LanguagePython

Развертывание на локальной машине

  1. Создаем виртуальное окружение: python3 -m venv flask_venv
  2. Активируем venv: source flask_venv/bin/activate
  3. Устанавливаем зависимости: pip install -r requirements.txt
  4. Создаем локальную БД: flask db upgrade

Миграции

  1. Активировать миграции: flask db init
  2. Создать миграцию: flask db migrate -m "comment"
  3. Применить миграции: flask db upgrade

Автотесты

  1. Запуск: pytest -v tests

Чек-лист проекта

Complete Priority Auth Task Url
USER
✔️ Base Регистрация пользователя POST: /users
✔️ Base Список пользователей GET: /users
✔️ Base Пользователь по id GET: /users/{id}
Medium fa-crown Авторизация пользователя GET: /auth/token
High fa-crown Редактирование пользователя PUT: /users/{id}
Medium fa-crown Удаление пользователя DELETE: /users/{id}
NOTE
✔️ Base fa-crown Создание заметки POST: /notes
✔️ Base fa-crown Список заметок GET: /notes
✔️ Base fa-crown Заметка по id GET: /notes/{id}
Medium Список всех публичных заметок GET: /notes/public
Medium fa-crown Список заметок по имени тега GET: /notes/filter?tag=<tag_name>
Low Публичные заметки по имени автора GET: /notes/filter?username=
High fa-crown Редактирование заметки PUT: /notes/{id}
Medium fa-crown Удаление заметки DELETE: /notes/{id}
Base fa-crown Добавление тегов заметке PUT: /notes/<note_id>/tags \ body: {“tags”: [id1, id2]}
Medium fa-crown Удаление тегов с заметок DELETE: /notes/<note_id>/tags \ body: {“tags”: [id1, id2]}
TAG
✔️ Base Создание тега POST: /tags
✔️ Base Список всех тегов GET: /tags
High Редактирование тега PUT: /tags/{id}
Medium Удаление тега DELETE: /tags/{id}

Регистрация пользователя

Создание нового пользователя в БД.

Авторизация пользователя

Получение токена авторизации (Bearer Token)

Создание заметки

Каждая заметка привязывается к конкретному пользователю.

Список заметок

Пользователь должен видеть только заметки созданные им и публичные заметки других пользователей.

Заметка по id

По id можно получить только свои заметки или публичные заметки созданные другими пользователями.

Список всех публичных заметок

Получает список всех публичных заметок всех пользователей.

Список заметок по определенни тега

Теперь заметки можно фильтровать по прикрепленным к ним тегам.
Если указано имя несуществующего тега, то возвращаем пустой список, т.е. заметки с таким тегом не найдены.

Публичные заметки по имени автора

Возвращаем все публичные заметки автором с указанным username.
Если автор с указанным username не существует, возвращаем пустой список.

Редактирование заметки

Изменение текста заметки и ее статуса(публичная/частная). Пользователь может редактировать только свои заметки.

Удаление заметки

Удаление заметки из базы. Пользователь может удалять только свои заметки.

Создание тегов

Можно создать теги(метки, хештеги). Затем каждый тег(или несколько тегов) можно назначить заметке. Теги дают возможность удобной фильтрации заметок.

Добавление тегов к заметке

Каждой метке можно назначить любое кол-во тегов. Теги дают возможность удобной фильтрации заметок.

Редактирование тега

Изменение названия тега.

Удаление тега

Удаление тега из базы.

Priority

Таблица приоритетов: чем выше приоритет в списке, тем задача важнее.

Priority Description
Base Самые важные задачи, без которых невозможно продолжать курс
High Задачи с высоким приоритетом, их рекомендуется выполнять в первую очередь
Medium Задачи со средним приоритетом, их рекомендуется выполнять когда нет задач с более высокими приоритетами
Low Дополнительные задачи с низким приоритетом, их рекомендуется выполнять в самый последний момент./ Часто - это задачи повышенной сложности