From fede3ec0bad4d026c4d0b79959b20ff12769f4e9 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sun, 28 May 2017 01:06:12 -0400 Subject: [PATCH 1/2] Return an empty DocumentPage Queryset when a document has no latest version. Signed-off-by: Roberto Rosario --- mayan/apps/documents/models.py | 2 +- mayan/apps/documents/widgets.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mayan/apps/documents/models.py b/mayan/apps/documents/models.py index a566bc5f90..c0c02a3136 100644 --- a/mayan/apps/documents/models.py +++ b/mayan/apps/documents/models.py @@ -319,7 +319,7 @@ class Document(models.Model): return self.latest_version.pages except AttributeError: # Document has no version yet - return 0 + return DocumentPage.objects.none() class DeletedDocument(Document): diff --git a/mayan/apps/documents/widgets.py b/mayan/apps/documents/widgets.py index 2bd1b0e7bc..92dae0d3e1 100644 --- a/mayan/apps/documents/widgets.py +++ b/mayan/apps/documents/widgets.py @@ -285,7 +285,7 @@ class DocumentThumbnailWidget(BaseDocumentThumbnailWidget): return getattr(instance, 'label', None) def is_valid(self, instance): - return instance.latest_version.pages.all() + return instance.pages class DocumentPageThumbnailWidget(BaseDocumentThumbnailWidget): From a1dbd532febf0f152f2670944cc63a524c99dc4c Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sun, 28 May 2017 01:06:49 -0400 Subject: [PATCH 2/2] Use a predictable file path for the lock file. Signed-off-by: Roberto Rosario --- mayan/apps/lock_manager/backends/file_lock.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/mayan/apps/lock_manager/backends/file_lock.py b/mayan/apps/lock_manager/backends/file_lock.py index 9f020deae2..389d48d297 100644 --- a/mayan/apps/lock_manager/backends/file_lock.py +++ b/mayan/apps/lock_manager/backends/file_lock.py @@ -2,24 +2,30 @@ from __future__ import unicode_literals import logging import json +import os import threading import time import uuid from django.core.files import locks -from common.utils import mkstemp +from common.settings import setting_temporary_directory from ..exceptions import LockError lock = threading.Lock() logger = logging.getLogger(__name__) -temporary_file = mkstemp()[1] -logger.debug('temporary_file: %s', temporary_file) +lock_file = os.path.join( + setting_temporary_directory.value, 'mayan_locks.tmp' +) +open(lock_file, 'a').close() +logger.debug('lock_file: %s', lock_file) class FileLock(object): + lock_file = lock_file + @classmethod def acquire_lock(cls, name, timeout=None): instance = FileLock(name=name, timeout=timeout) @@ -45,7 +51,7 @@ class FileLock(object): self.uuid = uuid.uuid4().get_hex() lock.acquire() - with open(temporary_file, 'r+') as file_object: + with open(self.__class__.lock_file, 'r+') as file_object: locks.lock(f=file_object, flags=locks.LOCK_EX) data = file_object.read() @@ -73,7 +79,7 @@ class FileLock(object): def release(self): lock.acquire() - with open(temporary_file, 'r+') as file_object: + 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())