From d640eacec85a49373c5ab110238e9e7bc91c36f3 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sun, 29 Jun 2014 17:00:07 -0400 Subject: [PATCH] Update usage of datetime.now to Django timezone aware now() --- mayan/apps/bootstrap/literals.py | 22 ++++++++++------------ mayan/apps/bootstrap/models.py | 3 ++- mayan/apps/bootstrap/post_init.py | 4 +++- mayan/apps/checkouts/managers.py | 3 ++- mayan/apps/checkouts/models.py | 3 ++- mayan/apps/checkouts/widgets.py | 3 ++- mayan/apps/documents/managers.py | 4 ++-- mayan/apps/documents/models.py | 7 ++++--- mayan/apps/dynamic_search/models.py | 15 +++++++-------- mayan/apps/folders/models.py | 7 ++++--- mayan/apps/history/models.py | 11 +++++------ mayan/apps/lock_manager/managers.py | 3 ++- mayan/apps/lock_manager/models.py | 7 +++---- mayan/apps/metadata/conf/settings.py | 3 ++- mayan/apps/ocr/models.py | 3 ++- mayan/apps/ocr/tasks.py | 3 ++- 16 files changed, 54 insertions(+), 47 deletions(-) diff --git a/mayan/apps/bootstrap/literals.py b/mayan/apps/bootstrap/literals.py index e352bb051c..962a9da028 100644 --- a/mayan/apps/bootstrap/literals.py +++ b/mayan/apps/bootstrap/literals.py @@ -64,18 +64,16 @@ if YAML_AVAILABLE: FIXTURE_TYPES_CHOICES += (FIXTURE_TYPE_BETTER_YAML, _(u'Better YAML')), # better_yaml is not working with natural keys -FIXTURE_METADATA_REMARK_CHARACTER = '#' +BOOTSTRAP_EXTENSION = 'txt' +BOOTSTRAP_REPOSITORY_INDEX_FILE = '_repo_index.txt' +BOOTSTRAP_REPOSITORY_URL = 'http://bootstrap.mayan-edms.com' +BOOTSTRAP_SETUP_MAGIC_NUMBER = 'bootstrap setup' DATETIME_STRING_FORMAT = '%a, %d %b %Y %H:%M:%S +0000' FIXTURE_METADATA_CREATED = 'created' -FIXTURE_METADATA_EDITED = 'edited' -FIXTURE_METADATA_MAYAN_VERSION = 'mayan_edms_version' -FIXTURE_METADATA_FORMAT = 'format' -FIXTURE_METADATA_NAME = 'name' -FIXTURE_METADATA_SLUG = 'slug' FIXTURE_METADATA_DESCRIPTION = 'description' -BOOTSTRAP_EXTENSION = 'txt' - -BOOTSTRAP_SETUP_MAGIC_NUMBER = 'bootstrap setup' - -BOOTSTRAP_REPOSITORY_URL = 'http://bootstrap.mayan-edms.com' -BOOTSTRAP_REPOSITORY_INDEX_FILE = '_repo_index.txt' +FIXTURE_METADATA_EDITED = 'edited' +FIXTURE_METADATA_FORMAT = 'format' +FIXTURE_METADATA_MAYAN_VERSION = 'mayan_edms_version' +FIXTURE_METADATA_NAME = 'name' +FIXTURE_METADATA_REMARK_CHARACTER = '#' +FIXTURE_METADATA_SLUG = 'slug' diff --git a/mayan/apps/bootstrap/models.py b/mayan/apps/bootstrap/models.py index 5c5e7a767e..6313c05f92 100644 --- a/mayan/apps/bootstrap/models.py +++ b/mayan/apps/bootstrap/models.py @@ -15,6 +15,7 @@ except ImportError: from django.core import management from django.core.files.uploadedfile import SimpleUploadedFile from django.db import models +from django.utils.timezone import now from django.utils.translation import ugettext_lazy as _ from .classes import BootstrapModel, FixtureMetadata @@ -32,7 +33,7 @@ class BootstrapSetup(models.Model): description = models.TextField(verbose_name=_(u'description'), blank=True) fixture = models.TextField(verbose_name=_(u'fixture'), help_text=_(u'These are the actual database structure creation instructions.')) type = models.CharField(max_length=16, verbose_name=_(u'type'), choices=FIXTURE_TYPES_CHOICES) - created = models.DateTimeField(verbose_name=_('creation date and time'), default=lambda: datetime.datetime.now(), editable=False) + created = models.DateTimeField(verbose_name=_('creation date and time'), default=lambda: now(), editable=False) objects = BootstrapSetupManager() diff --git a/mayan/apps/bootstrap/post_init.py b/mayan/apps/bootstrap/post_init.py index 5ef7b3c770..16931f4aaa 100644 --- a/mayan/apps/bootstrap/post_init.py +++ b/mayan/apps/bootstrap/post_init.py @@ -2,6 +2,8 @@ from __future__ import absolute_import import datetime +from django.utils.timezone import now + from mayan import __version__ from navigation.api import register_links @@ -21,7 +23,7 @@ register_links([BootstrapSetup], [link_bootstrap_setup_list, link_bootstrap_setu register_links(['bootstrap_setup_list', 'bootstrap_setup_create', 'bootstrap_setup_dump', 'bootstrap_setup_import_from_file', 'bootstrap_setup_import_from_url', 'bootstrap_setup_repository_sync'], [link_bootstrap_setup_list, link_bootstrap_setup_create, link_bootstrap_setup_dump, link_bootstrap_setup_import_from_file, link_bootstrap_setup_import_from_url, link_bootstrap_setup_repository_sync], menu_name='secondary_menu') FixtureMetadata(FIXTURE_METADATA_CREATED, generate_function=lambda fixture_instance: fixture_instance.created.strftime(DATETIME_STRING_FORMAT), read_function=lambda x: datetime.datetime.strptime(x, DATETIME_STRING_FORMAT), property_name='created') -FixtureMetadata(FIXTURE_METADATA_EDITED, generate_function=lambda fixture_instance: datetime.datetime.now().strftime(DATETIME_STRING_FORMAT)) +FixtureMetadata(FIXTURE_METADATA_EDITED, generate_function=lambda fixture_instance: now().strftime(DATETIME_STRING_FORMAT)) FixtureMetadata(FIXTURE_METADATA_MAYAN_VERSION, generate_function=lambda fixture_instance: __version__) FixtureMetadata(FIXTURE_METADATA_FORMAT, generate_function=lambda fixture_instance: fixture_instance.type, property_name='type') FixtureMetadata(FIXTURE_METADATA_NAME, generate_function=lambda fixture_instance: fixture_instance.name, property_name='name') diff --git a/mayan/apps/checkouts/managers.py b/mayan/apps/checkouts/managers.py index b56f05ebfe..6daf283ff8 100644 --- a/mayan/apps/checkouts/managers.py +++ b/mayan/apps/checkouts/managers.py @@ -5,6 +5,7 @@ import logging from django.db import models from django.core.exceptions import PermissionDenied +from django.utils.timezone import now from acls.models import AccessEntry from documents.models import Document @@ -25,7 +26,7 @@ class DocumentCheckoutManager(models.Manager): return Document.objects.filter(pk__in=self.model.objects.all().values_list('document__pk', flat=True)) def expired_check_outs(self): - expired_list = Document.objects.filter(pk__in=self.model.objects.filter(expiration_datetime__lte=datetime.datetime.now()).values_list('document__pk', flat=True)) + expired_list = Document.objects.filter(pk__in=self.model.objects.filter(expiration_datetime__lte=now()).values_list('document__pk', flat=True)) logger.debug('expired_list: %s' % expired_list) return expired_list diff --git a/mayan/apps/checkouts/models.py b/mayan/apps/checkouts/models.py index 00e6a1e207..e431c7d50e 100644 --- a/mayan/apps/checkouts/models.py +++ b/mayan/apps/checkouts/models.py @@ -6,6 +6,7 @@ import logging from django.contrib.contenttypes import generic from django.contrib.contenttypes.models import ContentType from django.db import models +from django.utils.timezone import now from django.utils.translation import ugettext_lazy as _ from documents.models import Document @@ -41,7 +42,7 @@ class DocumentCheckout(models.Model): def save(self, *args, **kwargs): if not self.pk: - self.checkout_datetime = datetime.datetime.now() + self.checkout_datetime = now() result = super(DocumentCheckout, self).save(*args, **kwargs) create_history(HISTORY_DOCUMENT_CHECKED_OUT, source_object=self.document, data={'user': self.user_object, 'document': self.document}) return result diff --git a/mayan/apps/checkouts/widgets.py b/mayan/apps/checkouts/widgets.py index cedca3d00e..6d47b2e169 100644 --- a/mayan/apps/checkouts/widgets.py +++ b/mayan/apps/checkouts/widgets.py @@ -6,6 +6,7 @@ from django import forms from django.conf import settings from django.core import validators from django.utils.safestring import mark_safe +from django.utils.timezone import now from django.utils.translation import ugettext_lazy as _ from .literals import STATE_ICONS, STATE_LABELS @@ -103,5 +104,5 @@ class SplitTimeDeltaField(forms.MultiValueField): raise forms.ValidationError(self.error_messages['invalid_minutes']) timedelta = datetime.timedelta(days=data_list[0], hours=data_list[1], minutes=data_list[2]) - return datetime.datetime.now() + timedelta + return now() + timedelta return None diff --git a/mayan/apps/documents/managers.py b/mayan/apps/documents/managers.py index 70915cb949..74d968df25 100644 --- a/mayan/apps/documents/managers.py +++ b/mayan/apps/documents/managers.py @@ -1,9 +1,9 @@ from __future__ import absolute_import from ast import literal_eval -import datetime from django.db import models +from django.utils.timezone import now from .conf.settings import RECENT_COUNT @@ -35,7 +35,7 @@ class RecentDocumentManager(models.Manager): new_recent, created = self.model.objects.get_or_create(user=user, document=document) if not created: # document already in the recent list, just update the accessed date and time - new_recent.datetime_accessed = datetime.datetime.now() + new_recent.datetime_accessed = now() new_recent.save() for recent_to_delete in self.model.objects.filter(user=user)[RECENT_COUNT:]: recent_to_delete.delete() diff --git a/mayan/apps/documents/models.py b/mayan/apps/documents/models.py index b774cfc56d..58dc064c93 100644 --- a/mayan/apps/documents/models.py +++ b/mayan/apps/documents/models.py @@ -16,6 +16,7 @@ except ImportError: from django.db import models from django.contrib.auth.models import User from django.core.exceptions import ValidationError +from django.utils.timezone import now from django.utils.translation import ugettext from django.utils.translation import ugettext_lazy as _ @@ -103,7 +104,7 @@ class Document(models.Model): def save(self, *args, **kwargs): if not self.pk: self.uuid = UUID_FUNCTION() - self.date_added = datetime.datetime.now() + self.date_added = now() super(Document, self).save(*args, **kwargs) def get_cached_image_name(self, page, version): @@ -368,7 +369,7 @@ class DocumentVersion(models.Model): """ new_document = not self.pk if not self.pk: - self.timestamp = datetime.datetime.now() + self.timestamp = now() # Only do this for new documents transformations = kwargs.pop('transformations', None) @@ -633,7 +634,7 @@ class RecentDocument(models.Model): """ user = models.ForeignKey(User, verbose_name=_(u'user'), editable=False) document = models.ForeignKey(Document, verbose_name=_(u'document'), editable=False) - datetime_accessed = models.DateTimeField(verbose_name=_(u'accessed'), default=lambda: datetime.datetime.now(), db_index=True) + datetime_accessed = models.DateTimeField(verbose_name=_(u'accessed'), default=lambda: now(), db_index=True) objects = RecentDocumentManager() diff --git a/mayan/apps/dynamic_search/models.py b/mayan/apps/dynamic_search/models.py index e16d6c57e6..9effabcc2b 100644 --- a/mayan/apps/dynamic_search/models.py +++ b/mayan/apps/dynamic_search/models.py @@ -1,18 +1,17 @@ from __future__ import absolute_import -import urlparse import urllib +import urlparse -from datetime import datetime - -from django.db import models -from django.utils.translation import ugettext as _ from django.contrib.auth.models import User from django.core.urlresolvers import reverse +from django.db import models from django.utils.encoding import smart_unicode, smart_str +from django.utils.timezone import now +from django.utils.translation import ugettext as _ -from .managers import RecentSearchManager from .classes import SearchModel +from .managers import RecentSearchManager class RecentSearch(models.Model): @@ -28,7 +27,7 @@ class RecentSearch(models.Model): def __unicode__(self): document_search = SearchModel.get('documents.Document') - + query_dict = urlparse.parse_qs(urllib.unquote_plus(smart_str(self.query))) if self.is_advanced(): @@ -46,7 +45,7 @@ class RecentSearch(models.Model): return u'%s (%s)' % (display_string, self.hits) def save(self, *args, **kwargs): - self.datetime_created = datetime.now() + self.datetime_created = now() super(RecentSearch, self).save(*args, **kwargs) def url(self): diff --git a/mayan/apps/folders/models.py b/mayan/apps/folders/models.py index cf234cf397..a74cf14219 100644 --- a/mayan/apps/folders/models.py +++ b/mayan/apps/folders/models.py @@ -1,8 +1,9 @@ from datetime import datetime -from django.db import models -from django.utils.translation import ugettext as _ from django.contrib.auth.models import User +from django.db import models +from django.utils.timezone import now +from django.utils.translation import ugettext as _ from documents.models import Document @@ -17,7 +18,7 @@ class Folder(models.Model): def save(self, *args, **kwargs): if not self.pk: - self.datetime_created = datetime.now() + self.datetime_created = now() super(Folder, self).save(*args, **kwargs) @models.permalink diff --git a/mayan/apps/history/models.py b/mayan/apps/history/models.py index 56906a4fde..57caea6f15 100644 --- a/mayan/apps/history/models.py +++ b/mayan/apps/history/models.py @@ -2,15 +2,14 @@ from __future__ import absolute_import import json import pickle -from datetime import datetime -from django.db import models -from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes import generic -from django.utils.translation import ugettext_lazy as _ +from django.contrib.contenttypes.models import ContentType from django.core import serializers +from django.db import models +from django.utils.timezone import now +from django.utils.translation import ugettext_lazy as _ -#from history.managers import HistoryManager from .runtime_data import history_types_dict @@ -48,7 +47,7 @@ class History(models.Model): def save(self, *args, **kwargs): if not self.pk: - self.datetime = datetime.now() + self.datetime = now() super(History, self).save(*args, **kwargs) def get_label(self): diff --git a/mayan/apps/lock_manager/managers.py b/mayan/apps/lock_manager/managers.py index afb7a55fab..bf8d5133c5 100644 --- a/mayan/apps/lock_manager/managers.py +++ b/mayan/apps/lock_manager/managers.py @@ -5,6 +5,7 @@ import logging from django.db import models, transaction from django.db.utils import IntegrityError +from django.utils.timezone import now from .exceptions import LockError @@ -32,7 +33,7 @@ class LockManager(models.Manager): logger.debug('lock: %s does not exist' % name) raise LockError('Unable to acquire lock') - if datetime.datetime.now() > lock.creation_datetime + datetime.timedelta(seconds=lock.timeout): + if now() > lock.creation_datetime + datetime.timedelta(seconds=lock.timeout): logger.debug('reseting deleting stale lock: %s' % name) lock.timeout = timeout logger.debug('trying to reacquire stale lock: %s' % name) diff --git a/mayan/apps/lock_manager/models.py b/mayan/apps/lock_manager/models.py index a70af8230c..aca3c0fb6c 100644 --- a/mayan/apps/lock_manager/models.py +++ b/mayan/apps/lock_manager/models.py @@ -1,9 +1,8 @@ from __future__ import absolute_import -import datetime - from django.db import models from django.utils.translation import ugettext_lazy as _ +from django.utils.timezone import now from .managers import LockManager from .conf.settings import DEFAULT_LOCK_TIMEOUT @@ -20,7 +19,7 @@ class Lock(models.Model): return self.name def save(self, *args, **kwargs): - self.creation_datetime = datetime.datetime.now() + self.creation_datetime = now() if not self.timeout and not kwargs.get('timeout'): self.timeout = DEFAULT_LOCK_TIMEOUT @@ -31,7 +30,7 @@ class Lock(models.Model): lock = Lock.objects.get(name=self.name, creation_datetime=self.creation_datetime) lock.delete() except Lock.DoesNotExist: - # Out lock expired and was reassigned + # Our lock has expired and was reassigned pass class Meta: diff --git a/mayan/apps/metadata/conf/settings.py b/mayan/apps/metadata/conf/settings.py index 359e079ed5..c27fa74c39 100644 --- a/mayan/apps/metadata/conf/settings.py +++ b/mayan/apps/metadata/conf/settings.py @@ -3,12 +3,13 @@ import datetime from django.contrib.auth.models import User +from django.utils.timezone import now from smart_settings.api import register_settings default_available_functions = { - 'current_date': datetime.datetime.now().date, + 'current_date': now().date, } default_available_models = { diff --git a/mayan/apps/ocr/models.py b/mayan/apps/ocr/models.py index 4f68a9a05b..868fca8aae 100644 --- a/mayan/apps/ocr/models.py +++ b/mayan/apps/ocr/models.py @@ -4,6 +4,7 @@ from datetime import datetime from django.db import models from django.core.exceptions import ObjectDoesNotExist +from django.utils.timezone import now from django.utils.translation import ugettext from django.utils.translation import ugettext_lazy as _ @@ -55,7 +56,7 @@ class QueueDocument(models.Model): if self.state == QUEUEDOCUMENT_STATE_PROCESSING: raise ReQueueError else: - self.datetime_submitted = datetime.now() + self.datetime_submitted = now() self.state = QUEUEDOCUMENT_STATE_PENDING self.delay = False self.result = None diff --git a/mayan/apps/ocr/tasks.py b/mayan/apps/ocr/tasks.py index 3cce23a846..bd7879470e 100644 --- a/mayan/apps/ocr/tasks.py +++ b/mayan/apps/ocr/tasks.py @@ -5,6 +5,7 @@ import logging import platform from django.db.models import Q +from django.utils.timezone import now from job_processor.api import process_job from lock_manager import Lock, LockError @@ -51,7 +52,7 @@ def task_process_document_queues(): # TODO: reset_orphans() q_pending = Q(state=QUEUEDOCUMENT_STATE_PENDING) q_delayed = Q(delay=True) - q_delay_interval = Q(datetime_submitted__lt=datetime.now() - timedelta(seconds=REPLICATION_DELAY)) + q_delay_interval = Q(datetime_submitted__lt=now() - timedelta(seconds=REPLICATION_DELAY)) for document_queue in DocumentQueue.objects.filter(state=DOCUMENTQUEUE_STATE_ACTIVE): current_local_processing_count = QueueDocument.objects.filter( state=QUEUEDOCUMENT_STATE_PROCESSING).filter(