diff --git a/docs/changes.rst b/docs/changes.rst index 89b8e9d1c..7b99e403e 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -7,6 +7,9 @@ Changelog - Fix the i18n labels [ale-rt] +- Fix the last modifier id for guest users that have been converted to registered users + [ale-rt] + 16.2.0 (2024-06-12) ------------------- diff --git a/src/euphorie/deployment/browser/maintenance.py b/src/euphorie/deployment/browser/maintenance.py index dc12ebbb7..31f2b6d8e 100644 --- a/src/euphorie/deployment/browser/maintenance.py +++ b/src/euphorie/deployment/browser/maintenance.py @@ -2,6 +2,7 @@ from euphorie.client.model import Session from euphorie.client.model import SurveySession from Products.Five import BrowserView +from transaction import commit import logging @@ -21,15 +22,19 @@ def __call__(self): .filter(Account.id != SurveySession.account_id) .filter(Account.account_type == "guest") ) - for guest_user, assessment in obsolete_guest_users: - assessment.last_modifier_id = assessment.account_id - logger.info("Updated session %s", assessment.id) - num_assessments = ( - session.query(SurveySession) - .filter(SurveySession.account_id == guest_user.id) - .count() - ) - if num_assessments == 0: - session.delete(guest_user) - logger.info("Deleted user %s", guest_user.id) + + with session.no_autoflush: + for guest_user, assessment in obsolete_guest_users: + assessment.last_modifier_id = assessment.account_id + logger.info("Updated session %s", assessment.id) + + num_assessments = ( + session.query(SurveySession) + .filter(SurveySession.account_id == guest_user.id) + .count() + ) + if num_assessments == 0: + session.delete(guest_user) + logger.info("Deleted user %s", guest_user.id) + commit() return "Done"