obslock: unlock other user lock if force.
This commit is contained in:
parent
f4523078b4
commit
3d7a7d487b
@ -132,12 +132,20 @@ class OBSLock(object):
|
|||||||
return
|
return
|
||||||
|
|
||||||
user, reason, reason_sub, _ = self._parse(self._read())
|
user, reason, reason_sub, _ = self._parse(self._read())
|
||||||
|
clear = False
|
||||||
if user == self.user:
|
if user == self.user:
|
||||||
if reason_sub:
|
if reason_sub:
|
||||||
self.reason = reason_sub
|
self.reason = reason_sub
|
||||||
self.reason_sub = None
|
self.reason_sub = None
|
||||||
self._write(self._signature())
|
self._write(self._signature())
|
||||||
elif not reason.startswith('hold') or force:
|
elif not reason.startswith('hold') or force:
|
||||||
|
# Only clear a command lock as hold can only be cleared by force.
|
||||||
|
clear = True
|
||||||
|
elif user is not None and force:
|
||||||
|
# Clear if a lock is present and force.
|
||||||
|
clear = True
|
||||||
|
|
||||||
|
if clear:
|
||||||
self._write('')
|
self._write('')
|
||||||
self.locked = False
|
self.locked = False
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ class TestOBSLock(unittest.TestCase):
|
|||||||
|
|
||||||
def test_needed(self):
|
def test_needed(self):
|
||||||
lock1 = self.obs_lock()
|
lock1 = self.obs_lock()
|
||||||
lock2 = self.obs_lock()
|
lock2 = self.obs_lock('unlock')
|
||||||
lock2.user = 'user2'
|
lock2.user = 'user2'
|
||||||
lock2.needed = False
|
lock2.needed = False
|
||||||
|
|
||||||
@ -138,3 +138,7 @@ class TestOBSLock(unittest.TestCase):
|
|||||||
self.assertFalse(lock2.locked)
|
self.assertFalse(lock2.locked)
|
||||||
user, _, _, _ = lock2._parse(lock2._read())
|
user, _, _, _ = lock2._parse(lock2._read())
|
||||||
self.assertEqual(user, lock1.user, 'lock1 remains')
|
self.assertEqual(user, lock1.user, 'lock1 remains')
|
||||||
|
|
||||||
|
lock2.release(force=True)
|
||||||
|
user, _, _, _ = lock2._parse(lock2._read())
|
||||||
|
self.assertEqual(user, None, 'unlocked')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user