patch archive handler#26
Conversation
petrCher
left a comment
There was a problem hiding this comment.
А почему не тестил код?
Надо делать еще небольшой user story что пользователь архивировал модалку и потом делает get запрос, а там та модалка со статусом active
|
Как сделаешь изменения скинь на ревью, планирую потом дать тебе доработать ручку
|
This comment was marked as resolved.
This comment was marked as resolved.
a2381df to
68f174a
Compare
|
@rifcrat сделай git rebase прежде чем коммитить дальше, появились изменения в мейне |
68f174a to
7aa6d8a
Compare
| note = Note.get(session=db.session, id=id) | ||
| group_ids = note.group_ids | ||
| for group_id in group_ids: | ||
| Group.get(session=db.session, id=group_id) |
There was a problem hiding this comment.
https://github.com/profcomff/modal-service-api/blob/main/modal_backend/models/base.py#L60
При вызове метода get может вылететь 404, если не найдено ничего. Если выскакивает 404, то код дальше не пойдет и 404 так и высветится в статусе. План такой, что для групп и сервисов, которые существуют мы модалку сможем вернуть из архива. Поэтому в данном случае лучше использовать db.session.query(...).filter(...) и тд, так как при таком поиске автоматического вылета 404 не будет, максимум вернется пустое значение (так же не забудь is_deleted=true убирать из рассмотрения). А дальше надо подготовить массив групп и сервисов, которые будут отправлены в параметры update
db.session.query(...).filter(...) см пример реализации https://github.com/profcomff/rental-api/blob/main/rental_backend/routes/item.py#L130
То есть если ты пропишешь сперва Group а потом к нему метод get то будет работать наше кастомное решение с дополнительными автоматическими проверками (см самую первую ссылку в этом комменте)
| Group.get(session=db.session, id=group_id) | ||
| service_ids = note.service_ids | ||
| for service_id in service_ids: | ||
| Service.get(session=db.session, id=service_id) |
| if note.is_always == False and time >= end_ts: | ||
| raise ForbiddenAction(Note) | ||
| else: | ||
| if note.status == ModalStatus.ACTIVE: |
There was a problem hiding this comment.
такая ситуация: time >= end_ts (то есть вчера модалка завершилась) и note.is_always == False (не бесконечное время)
почему тогда мне высветится ForbiddenAction даже без проверки активна ли сейчас модалка или нет?
Если она активна, а я ее в архив хочу отправить, то в текущей реализации несостыковка
|
|
||
| Права: `["modal.note.patch"]` | ||
|
|
||
| Исключение **ObjectNotFound**, если `id` не найден |
There was a problem hiding this comment.
хочется добавить достаточно подробную информацию о том, как работает все.
Но делать это надо только в конце, после того, как исправишь логику работы по моим комментам
|
modal.note.patch дал тебе скоуп |
|
И еще сделай опять ребейз, тесты готовы |
Изменения
Добавил ручку PATCH/notification/{id}/archive
Детали реализации
В файле schemas\models.py добавил новую схему для ответа
В файле routes\notes.py написал саму ручку
В файле utils\services.py добавил логику для ручки
Check-List
blackиisortдля Back-End илиPrettierдля Front-End?