obslock: unlock other user lock if force.

This commit is contained in:
Jimmy Berry 2017-05-08 19:57:04 -05:00
parent f4523078b4
commit 3d7a7d487b
2 changed files with 15 additions and 3 deletions

View File

@ -132,12 +132,20 @@ 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:
# 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

View File

@ -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')