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.
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)
``
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)
``