diff --git a/mayan/apps/lock_manager/backends/file_lock.py b/mayan/apps/lock_manager/backends/file_lock.py index 29e4b16f79..459d91e044 100644 --- a/mayan/apps/lock_manager/backends/file_lock.py +++ b/mayan/apps/lock_manager/backends/file_lock.py @@ -1,8 +1,8 @@ from __future__ import unicode_literals import hashlib -import logging import json +import logging import os import threading import time @@ -23,7 +23,9 @@ lock = threading.Lock() logger = logging.getLogger(__name__) lock_file = os.path.join( - setting_temporary_directory.value, hashlib.sha256(force_bytes(settings.SECRET_KEY)).hexdigest() + setting_temporary_directory.value, hashlib.sha256( + force_bytes(settings.SECRET_KEY) + ).hexdigest() ) open(lock_file, 'a').close() logger.debug('lock_file: %s', lock_file) @@ -76,7 +78,7 @@ class FileLock(LockingBackend): data = file_object.read() if data: - file_locks = json.loads(data) + file_locks = json.loads(s=data) else: file_locks = {} @@ -103,7 +105,7 @@ class FileLock(LockingBackend): with open(self.__class__.lock_file, 'r+') as file_object: locks.lock(f=file_object, flags=locks.LOCK_EX) try: - file_locks = json.loads(file_object.read()) + file_locks = json.loads(s=file_object.read()) except EOFError: file_locks = {} diff --git a/mayan/apps/lock_manager/decorators.py b/mayan/apps/lock_manager/decorators.py index 87aa4cc396..ac21ec11d1 100644 --- a/mayan/apps/lock_manager/decorators.py +++ b/mayan/apps/lock_manager/decorators.py @@ -1,7 +1,7 @@ from __future__ import absolute_import, unicode_literals -import time import random +import time from .exceptions import LockError diff --git a/mayan/apps/lock_manager/exceptions.py b/mayan/apps/lock_manager/exceptions.py index cede7b1642..027a277943 100644 --- a/mayan/apps/lock_manager/exceptions.py +++ b/mayan/apps/lock_manager/exceptions.py @@ -1,2 +1,5 @@ +from __future__ import unicode_literals + + class LockError(Exception): - pass + """Raised when trying to acquire an existing lock""" diff --git a/mayan/apps/lock_manager/literals.py b/mayan/apps/lock_manager/literals.py new file mode 100644 index 0000000000..fa84c33e02 --- /dev/null +++ b/mayan/apps/lock_manager/literals.py @@ -0,0 +1,4 @@ +from __future__ import unicode_literals + +DEFAULT_BACKEND = 'mayan.apps.lock_manager.backends.file_lock.FileLock' +DEFAULT_LOCK_TIMEOUT_VALUE = 30 diff --git a/mayan/apps/lock_manager/migrations/0001_initial.py b/mayan/apps/lock_manager/migrations/0001_initial.py index 68d0e3f782..4c7013ecb3 100644 --- a/mayan/apps/lock_manager/migrations/0001_initial.py +++ b/mayan/apps/lock_manager/migrations/0001_initial.py @@ -1,6 +1,6 @@ from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/mayan/apps/lock_manager/migrations/0002_auto_20150604_2219.py b/mayan/apps/lock_manager/migrations/0002_auto_20150604_2219.py index d0be8deab5..4f47307d5c 100644 --- a/mayan/apps/lock_manager/migrations/0002_auto_20150604_2219.py +++ b/mayan/apps/lock_manager/migrations/0002_auto_20150604_2219.py @@ -1,6 +1,6 @@ from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/mayan/apps/lock_manager/models.py b/mayan/apps/lock_manager/models.py index d409036201..610c60ba35 100644 --- a/mayan/apps/lock_manager/models.py +++ b/mayan/apps/lock_manager/models.py @@ -38,7 +38,7 @@ class Lock(models.Model): """ try: lock = Lock.objects.get( - name=self.name, creation_datetime=self.creation_datetime + creation_datetime=self.creation_datetime, name=self.name ) except Lock.DoesNotExist: # Our lock has expired and was reassigned diff --git a/mayan/apps/lock_manager/runtime.py b/mayan/apps/lock_manager/runtime.py index 3c4a54de02..27e8d636b5 100644 --- a/mayan/apps/lock_manager/runtime.py +++ b/mayan/apps/lock_manager/runtime.py @@ -2,4 +2,4 @@ from django.utils.module_loading import import_string from .settings import setting_backend -locking_backend = import_string(setting_backend.value) +locking_backend = import_string(dotted_path=setting_backend.value) diff --git a/mayan/apps/lock_manager/settings.py b/mayan/apps/lock_manager/settings.py index defbc79a99..d401b4c462 100644 --- a/mayan/apps/lock_manager/settings.py +++ b/mayan/apps/lock_manager/settings.py @@ -4,10 +4,9 @@ from django.utils.translation import ugettext_lazy as _ from mayan.apps.smart_settings import Namespace -DEFAULT_BACKEND = 'mayan.apps.lock_manager.backends.file_lock.FileLock' -DEFAULT_LOCK_TIMEOUT_VALUE = 30 +from .literals import DEFAULT_BACKEND, DEFAULT_LOCK_TIMEOUT_VALUE -namespace = Namespace(name='lock_manager', label=_('Lock manager')) +namespace = Namespace(label=_('Lock manager'), name='lock_manager') setting_backend = namespace.add_setting( default=DEFAULT_BACKEND, diff --git a/mayan/apps/lock_manager/tests/literals.py b/mayan/apps/lock_manager/tests/literals.py new file mode 100644 index 0000000000..d7d23429e6 --- /dev/null +++ b/mayan/apps/lock_manager/tests/literals.py @@ -0,0 +1,3 @@ +from __future__ import unicode_literals + +TEST_LOCK_NAME = 'test lock name' diff --git a/mayan/apps/lock_manager/tests/test_backends.py b/mayan/apps/lock_manager/tests/test_backends.py index 97844c1207..a0c41599d0 100644 --- a/mayan/apps/lock_manager/tests/test_backends.py +++ b/mayan/apps/lock_manager/tests/test_backends.py @@ -7,51 +7,53 @@ from django.utils.module_loading import import_string from ..exceptions import LockError -TEST_LOCK_1 = 'test lock 1' +from .literals import TEST_LOCK_NAME class FileLockTestCase(TestCase): backend_string = 'mayan.apps.lock_manager.backends.file_lock.FileLock' def setUp(self): - self.locking_backend = import_string(self.backend_string) + self.locking_backend = import_string(dotted_path=self.backend_string) def test_exclusive(self): - lock_1 = self.locking_backend.acquire_lock(name=TEST_LOCK_1) + lock_1 = self.locking_backend.acquire_lock(name=TEST_LOCK_NAME) with self.assertRaises(LockError): - self.locking_backend.acquire_lock(name=TEST_LOCK_1) + self.locking_backend.acquire_lock(name=TEST_LOCK_NAME) # Cleanup lock_1.release() def test_release(self): - lock_1 = self.locking_backend.acquire_lock(name=TEST_LOCK_1) + lock_1 = self.locking_backend.acquire_lock(name=TEST_LOCK_NAME) lock_1.release() - lock_2 = self.locking_backend.acquire_lock(name=TEST_LOCK_1) + lock_2 = self.locking_backend.acquire_lock(name=TEST_LOCK_NAME) # Cleanup lock_2.release() def test_timeout_expired(self): - self.locking_backend.acquire_lock(name=TEST_LOCK_1, timeout=1) + self.locking_backend.acquire_lock(name=TEST_LOCK_NAME, timeout=1) # lock_1 not release and not expired, should raise LockError with self.assertRaises(LockError): - self.locking_backend.acquire_lock(name=TEST_LOCK_1) + self.locking_backend.acquire_lock(name=TEST_LOCK_NAME) time.sleep(1.01) # lock_1 not release but has expired, should not raise LockError - lock_2 = self.locking_backend.acquire_lock(name=TEST_LOCK_1) + lock_2 = self.locking_backend.acquire_lock(name=TEST_LOCK_NAME) # Cleanup lock_2.release() def test_double_release(self): - lock_1 = self.locking_backend.acquire_lock(name=TEST_LOCK_1) + lock_1 = self.locking_backend.acquire_lock(name=TEST_LOCK_NAME) lock_1.release() def test_release_expired(self): - lock_1 = self.locking_backend.acquire_lock(name=TEST_LOCK_1, timeout=1) + lock_1 = self.locking_backend.acquire_lock( + name=TEST_LOCK_NAME, timeout=1 + ) time.sleep(1.01) lock_1.release() # No exception is raised even though the lock has expired. @@ -60,11 +62,13 @@ class FileLockTestCase(TestCase): # would be successfull, even after an extended lapse of time def test_release_expired_reaquired(self): - self.locking_backend.acquire_lock(name=TEST_LOCK_1, timeout=1) + self.locking_backend.acquire_lock(name=TEST_LOCK_NAME, timeout=1) time.sleep(1.01) - # TEST_LOCK_1 is expired so trying to acquire it should not return an - # error. - lock_2 = self.locking_backend.acquire_lock(name=TEST_LOCK_1, timeout=1) + # TEST_LOCK_NAME is expired so trying to acquire it should not return + # an error. + lock_2 = self.locking_backend.acquire_lock( + name=TEST_LOCK_NAME, timeout=1 + ) # Cleanup lock_2.release()