Plantage sur API /group/group_id/remove_etudiant/etudid si étudiant non inscrit dans le groupe #465

Closed
opened 2022-08-01 16:30:08 +02:00 by jmplace · 1 comment
Collaborator

le delete SQL (via alchemy) ne trouve pas d'enregistrement à supprimer.

pile d'appel lors du plantage (mode development)

  File "/opt/scodoc/app/decorators.py", line 91, in decorated_function
    return f(*args, **kwargs)
  File "/opt/scodoc/app/api/partitions.py", line 209, in group_remove_etud
    db.session.commit()
  File "<string>", line 2, in commit
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1431, in commit
    self._transaction.commit(_to_root=self.future)
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 829, in commit
    self._prepare_impl()
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 808, in _prepare_impl
    self.session.flush()
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3363, in flush
    self._flush(objects)
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3503, in _flush
    transaction.rollback(_capture_exception=True)
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__
    compat.raise_(
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
    raise exception
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3463, in _flush
    flush_context.execute()
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/unitofwork.py", line 456, in execute
    rec.execute(self)
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/unitofwork.py", line 579, in execute
    self.dependency_processor.process_saves(uow, states)
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/dependency.py", line 1182, in process_saves
    self._run_crud(
  File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/dependency.py", line 1207, in _run_crud
    raise exc.StaleDataError(
sqlalchemy.orm.exc.StaleDataError: DELETE statement on table 'group_membership' expected to delete 1 row(s); Only 0 were matched.

proposition:
remplacer ligne 209:
group.etuds.remove(etud)
par

    if etud in group.etuds.all():
        group.etuds.remove(etud)
    else:
        abort(404)
le delete SQL (via alchemy) ne trouve pas d'enregistrement à supprimer. pile d'appel lors du plantage (mode development) ``` File "/opt/scodoc/app/decorators.py", line 91, in decorated_function return f(*args, **kwargs) File "/opt/scodoc/app/api/partitions.py", line 209, in group_remove_etud db.session.commit() File "<string>", line 2, in commit File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1431, in commit self._transaction.commit(_to_root=self.future) File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 829, in commit self._prepare_impl() File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 808, in _prepare_impl self.session.flush() File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3363, in flush self._flush(objects) File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3503, in _flush transaction.rollback(_capture_exception=True) File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ compat.raise_( File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ raise exception File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3463, in _flush flush_context.execute() File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/unitofwork.py", line 456, in execute rec.execute(self) File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/unitofwork.py", line 579, in execute self.dependency_processor.process_saves(uow, states) File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/dependency.py", line 1182, in process_saves self._run_crud( File "/opt/scodoc/venv/lib/python3.9/site-packages/sqlalchemy/orm/dependency.py", line 1207, in _run_crud raise exc.StaleDataError( sqlalchemy.orm.exc.StaleDataError: DELETE statement on table 'group_membership' expected to delete 1 row(s); Only 0 were matched. ``` proposition: remplacer ligne 209: `group.etuds.remove(etud)` par ``` if etud in group.etuds.all(): group.etuds.remove(etud) else: abort(404) ```
Owner

Fixed by 1b3bf87617.
Ignore (sans erreur) si l'étudiant n'est pas dans le groupe.

Fixed by 1b3bf87617. Ignore (sans erreur) si l'étudiant n'est pas dans le groupe.
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: ScoDoc/ScoDoc#465
No description provided.