Univention Bugzilla – Attachment 8185 Details for
Bug 41752
Fixes for italc2.py
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
patch
41752.patch (text/plain), 7.17 KB, created by
Florian Best
on 2016-11-03 19:08 CET
(
hide
)
Description:
patch
Filename:
MIME Type:
Creator:
Florian Best
Created:
2016-11-03 19:08 CET
Size:
7.17 KB
patch
obsolete
>diff --git a/ucs-school-umc-computerroom/umc/js/computerroom.js b/ucs-school-umc-computerroom/umc/js/computerroom.js >index 6aa7be2..aa8ef2b 100644 >--- a/ucs-school-umc-computerroom/umc/js/computerroom.js >+++ b/ucs-school-umc-computerroom/umc/js/computerroom.js >@@ -261,7 +261,7 @@ define([ > isMultiAction: true, > enablingMode: "some", > canExecute: checkUCC('lockInput', lang.hitch(this, function(item) { >- return !this._demo.running && isConnected(item) && item.user && item.user[0] && (!item.teacher || item.teacher[0] === false) && item.InputLock; >+ return !this._demo.running && isConnected(item) && item.user && item.user[0] && (!item.teacher || item.teacher[0] === false) && item.InputLock[0] === false; > })), > callback: lang.hitch(this, '_lockInput', true) > }, { >@@ -271,7 +271,7 @@ define([ > isMultiAction: true, > enablingMode: "some", > canExecute: checkUCC('unlockInput', lang.hitch(this, function(item) { >- return !this._demo.running && isConnected(item) && item.user && item.user[0] && (!item.teacher || item.teacher[0] === false) && item.InputLock; >+ return !this._demo.running && isConnected(item) && item.user && item.user[0] && (!item.teacher || item.teacher[0] === false) && item.InputLock[0] === true; > })), > callback: lang.hitch(this, '_lockInput', false) > }, { >@@ -292,7 +292,7 @@ define([ > isMultiAction: true, > enablingMode: "some", > canExecute: checkUCC('ScreenLock', lang.hitch(this, function(item) { >- return !this._demo.running && isConnected(item) && item.user && item.user[0] && (!item.teacher || item.teacher[0] === false); >+ return !this._demo.running && isConnected(item) && item.user && item.user[0] && (!item.teacher || item.teacher[0] === false) && item.ScreenLock[0] === false; > })), > callback: lang.hitch(this, '_lockScreen', true) > }, { >@@ -303,7 +303,7 @@ define([ > isMultiAction: true, > enablingMode: "some", > canExecute: checkUCC('ScreenUnLock', lang.hitch(this, function(item) { >- return !this._demo.running && isConnected(item) && item.user && item.user[0] && (!item.teacher || item.teacher[0] === false); >+ return !this._demo.running && isConnected(item) && item.user && item.user[0] && (!item.teacher || item.teacher[0] === false) && item.ScreenLock[0] === true; > })), > callback: lang.hitch(this, '_lockScreen', false) > }]; >@@ -422,15 +422,6 @@ define([ > > _lockInput: function(lock, ids, items) { > array.forEach(items, lang.hitch(this, function(comp) { >- if (comp.connection[0] != 'connected' || // not connected >- !comp.user || !comp.user[0] || // no user logged on >- (comp.teacher && comp.teacher[0] === true) || // teacher logged in >- comp.InputLock[0] === null || // unclear status >- comp.InputLock[0] === lock // already locked/unlocked >- ) { >- // ignore them >- return; >- } > this.umcpCommand('computerroom/lock', { > computer: comp.id[0], > device: 'input', >@@ -443,15 +434,6 @@ define([ > > _lockScreen: function(lock, ids, items) { > array.forEach(items, lang.hitch(this, function(comp) { >- if (comp.connection[0] != 'connected' || // not connected >- !comp.user || !comp.user[0] || // no user logged on >- (comp.teacher && comp.teacher[0] === true) || // teacher logged in >- comp.ScreenLock[0] === null || // unclear status >- comp.ScreenLock[0] === lock // already locked/unlocked >- ) { >- // ignore them >- return; >- } > this.umcpCommand('computerroom/lock', { > computer: comp.id[0], > device: 'screen', >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 60cc30c..0c8cb61 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 >@@ -373,15 +372,17 @@ def stop(self): > > @property > def dict(self): >- item = {'id': self.name, >- 'name': self.name, >- 'user': self.user.current, >- 'teacher': self.isTeacher, >- 'connection': self.state.current, >- 'description': self.description, >- 'ip': self.ipAddress, >- 'mac': self.macAddress, >- 'objectType': self.objectType} >+ item = { >+ 'id': self.name, >+ 'name': self.name, >+ 'user': self.user.current, >+ 'teacher': self.isTeacher, >+ 'connection': self.state.current, >+ 'description': self.description, >+ 'ip': self.ipAddress, >+ 'mac': self.macAddress, >+ 'objectType': self.objectType >+ } > item.update(self.flagsDict) > return item > >@@ -390,6 +391,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): >@@ -435,31 +441,31 @@ def description(self): > > @property > def screenLock(self): >- if not self._core or self._core.slaveStateFlags() == 0: >+ if not self._core: > return None > return self._core.isScreenLockRunning() > > @property > def inputLock(self): >- if not self._core or self._core.slaveStateFlags() == 0: >+ if not self._core: > return None > return self._core.isInputLockRunning() > > @property > def demoServer(self): >- if not self._core or self._core.slaveStateFlags() == 0: >+ if not self._core: > return None > return self._core.isDemoServerRunning() > > @property > def demoClient(self): >- if not self._core or self._core.slaveStateFlags() == 0: >+ if not self._core: > return None > return self._core.isDemoClientRunning() > > @property > def messageBox(self): >- if not self._core or self._core.slaveStateFlags() == 0: >+ if not self._core: > return None > return self._core.isMessageBoxRunning() > >@@ -612,6 +618,9 @@ def logOut(self): > return > self._core.logoutUser() > >+ def __repr__(self): >+ return '<%s(%s)>' % (type(self).__name__, self.ipAddress,) >+ > > class ITALC_Manager(dict, notifier.signals.Provider): > SCHOOL = None >@@ -745,3 +754,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.values() if computer.hasChanged] >+ finally: >+ for computer in self.values(): >+ computer.reset_has_changed()
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
Actions:
View
|
Diff
Attachments on
bug 41752
:
8148
| 8185