fablab-bergamo / fabomatic-backend

A RaspberryPi Zero-friendly backend, for managing FabLab machines access. This is the server-side of the Fab-O-Matic board project. Works in Python with MQTT broker + Database Engine.
https://www.fablabbergamo.it/2024/06/03/fabomatic1/
MIT License
0 stars 1 forks source link

SQL error when deleting user. #5

Closed PBrunot closed 6 months ago

PBrunot commented 1 year ago

Deleting an user with history fails. It is still possible to disable the user.

`` 2023-07-15 12:08:48 INFO: 192.168.1.218 - - [15/Jul/2023 12:08:48] "POST /users/delete/1 HTTP/1.1" 500 - Traceback (most recent call last): File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\engine\base.py", line 1965, in _exec_single_context self.dialect.do_execute( File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\engine\default.py", line 921, in do_execute cursor.execute(statement, parameters) sqlite3.IntegrityError: NOT NULL constraint failed: interventions.user_id

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\flask\app.py", line 2213, in call return self.wsgi_app(environ, start_response) File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\flask\app.py", line 2193, in wsgi_app response = self.handle_exception(e) File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\flask\app.py", line 2190, in wsgi_app response = self.full_dispatch_request() File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\flask\app.py", line 1486, in full_dispatch_request rv = self.handle_user_exception(e) File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\flask\app.py", line 1484, in full_dispatch_request rv = self.dispatch_request() File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\flask\app.py", line 1469, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(view_args) File "D:\GitHub\rfid-backend-fb\src\rfid_backend_FABLAB_BG\web\routes_users.py", line 86, in delete_user session.commit() File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\orm\session.py", line 1920, in commit trans.commit(_to_root=True) File "", line 2, in commit File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\orm\state_changes.py", line 139, in _go ret_value = fn(self, *arg, *kw) File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\orm\session.py", line 1236, in commit self._prepare_impl() File "", line 2, in _prepare_impl File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\orm\state_changes.py", line 139, in _go ret_value = fn(self, arg, kw) File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\orm\session.py", line 1211, in _prepare_impl self.session.flush() File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\orm\session.py", line 4163, in flush self._flush(objects) File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\orm\session.py", line 4298, in _flush with util.safe_reraise(): File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\util\langhelpers.py", line 147, in exit raise exc_value.with_traceback(exc_tb) File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\orm\session.py", line 4259, in _flush flush_context.execute() File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\orm\persistence.py", line 909, in _emit_update_statements c = connection.execute( File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\engine\base.py", line 1412, in execute return meth( File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\sql\elements.py", line 483, in _execute_on_connection return connection._execute_clauseelement( File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\engine\base.py", line 1635, in _execute_clauseelement ret = self._execute_context( File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\engine\base.py", line 1844, in _execute_context return self._exec_single_context( File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\engine\base.py", line 1984, in _exec_single_context self._handle_dbapi_exception( File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\engine\base.py", line 2339, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\engine\base.py", line 1965, in _exec_single_context self.dialect.do_execute( File "D:\GitHub\rfid-backend-fb.venv\lib\site-packages\sqlalchemy\engine\default.py", line 921, in do_execute cursor.execute(statement, parameters) sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) NOT NULL constraint failed: interventions.user_id [SQL: UPDATE interventions SET user_id=? WHERE interventions.intervention_id = ?] [parameters: (None, 1)] (Background on this error at: https://sqlalche.me/e/20/gkpj) ``