obslock: unlock other user lock if force.
This commit is contained in:
parent
f4523078b4
commit
3d7a7d487b
@ -132,14 +132,22 @@ class OBSLock(object):
|
||||
return
|
||||
|
||||
user, reason, reason_sub, _ = self._parse(self._read())
|
||||
clear = False
|
||||
if user == self.user:
|
||||
if reason_sub:
|
||||
self.reason = reason_sub
|
||||
self.reason_sub = None
|
||||
self._write(self._signature())
|
||||
elif not reason.startswith('hold') or force:
|
||||
self._write('')
|
||||
self.locked = False
|
||||
# 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.locked = False
|
||||
|
||||
def hold(self, message=None):
|
||||
self.reason = 'hold'
|
||||
|
@ -125,7 +125,7 @@ class TestOBSLock(unittest.TestCase):
|
||||
|
||||
def test_needed(self):
|
||||
lock1 = self.obs_lock()
|
||||
lock2 = self.obs_lock()
|
||||
lock2 = self.obs_lock('unlock')
|
||||
lock2.user = 'user2'
|
||||
lock2.needed = False
|
||||
|
||||
@ -138,3 +138,7 @@ class TestOBSLock(unittest.TestCase):
|
||||
self.assertFalse(lock2.locked)
|
||||
user, _, _, _ = lock2._parse(lock2._read())
|
||||
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