diff --git a/ucs-school-umc-computerroom/umc/python/computerroom/__init__.py b/ucs-school-umc-computerroom/umc/python/computerroom/__init__.py index 9da6be7..7945e3c 100644 --- a/ucs-school-umc-computerroom/umc/python/computerroom/__init__.py +++ b/ucs-school-umc-computerroom/umc/python/computerroom/__init__.py @@ -450,7 +450,7 @@ def update(self, request, ldap_user_read=None): if not self._italc.school or not self._italc.room: raise UMC_Error('no room selected') - computers = [computer.dict for computer in self._italc.values() if computer.hasChanged] + computers = self._italc.query() result = {'computers': computers} userDN = _getRoomOwner(self._italc.roomDN) diff --git a/ucs-school-umc-computerroom/umc/python/computerroom/italc2.py b/ucs-school-umc-computerroom/umc/python/computerroom/italc2.py index df7924f..c45e72d 100644 --- a/ucs-school-umc-computerroom/umc/python/computerroom/italc2.py +++ b/ucs-school-umc-computerroom/umc/python/computerroom/italc2.py @@ -183,7 +183,6 @@ def isInitialized(self): def hasChanged(self): self.lock() diff = self._has_changed - self._has_changed = False self._old = copy.deepcopy(self._current) self.unlock() return diff @@ -390,6 +389,11 @@ def hasChanged(self): states = (self.state, self.flags, self.user, self.teacher) return any(state.hasChanged for state in states) + def reset_has_changed(self): + states = (self.state, self.flags, self.user, self.teacher) + for state in states: + state._has_changed = False + # UDM properties @property def name(self): @@ -745,3 +749,10 @@ def stopDemo(self): self.demoServer.stopDemoServer() for client in self.demoClients: client.stopDemoClient() + + def query(self): + try: + return [computer.dict for computer in self._italc.values() if computer.hasChanged] + finally: + for computer in self._italc.values(): + computer.reset_has_changed()