Update transaction handling as changed in Django 1.6

This commit is contained in:
Roberto Rosario
2014-06-27 20:22:14 -04:00
parent da2cf9aaba
commit 0a0756380b
8 changed files with 48 additions and 63 deletions

View File

@@ -2,23 +2,23 @@ from __future__ import absolute_import
import tempfile
from south.signals import post_migrate
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth import models as auth_models
from django.contrib.auth.models import User
from django.contrib.auth.management import create_superuser
from django.dispatch import receiver
from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.db import transaction, DatabaseError
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.utils.translation import ugettext_lazy as _
from south.signals import post_migrate
from navigation.api import register_links, register_top_menu
from .conf import settings as common_settings
from .conf.settings import (AUTO_CREATE_ADMIN, AUTO_ADMIN_USERNAME,
AUTO_ADMIN_PASSWORD, TEMPORARY_DIRECTORY)
from .conf import settings as common_settings
from .utils import validate_path
from .models import AutoAdminSingleton
from .utils import validate_path
def has_usable_password(context):
@@ -72,14 +72,14 @@ def create_superuser(sender, **kwargs):
@receiver(post_save, dispatch_uid='auto_admin_account_passwd_change', sender=User)
def auto_admin_account_passwd_change(sender, instance, **kwargs):
with transaction.commit_on_success():
try:
try:
with transaction.atomic():
auto_admin_properties = AutoAdminSingleton.objects.get()
if instance == auto_admin_properties.account and instance.password != auto_admin_properties.password_hash:
# Only delete the auto admin properties when the password has been changed
auto_admin_properties.delete(force=True)
except DatabaseError:
transaction.rollback()
except DatabaseError:
pass
if (validate_path(TEMPORARY_DIRECTORY) == False) or (not TEMPORARY_DIRECTORY):

View File

@@ -1,30 +1,28 @@
from __future__ import absolute_import
import pickle
import json
import pickle
from django.db import transaction
from django.db import models, transaction
from django.db.utils import DatabaseError
from django.core import serializers
from django.shortcuts import get_object_or_404
from django.db import models
from django.db.utils import DatabaseError
from .models import HistoryType, History
from .runtime_data import history_types_dict
@transaction.commit_on_success
def register_history_type(history_type_dict):
namespace = history_type_dict['namespace']
name = history_type_dict['name']
try:
history_type_obj, created = HistoryType.objects.get_or_create(
namespace=namespace, name=name)
history_type_obj.save()
with transaction.atomic():
history_type_obj, created = HistoryType.objects.get_or_create(
namespace=namespace, name=name)
history_type_obj.save()
except DatabaseError:
# Special case for syncdb
transaction.rollback()
pass
# Runtime
history_types_dict.setdefault(namespace, {})

View File

@@ -25,13 +25,13 @@ def trigger_first_time(sender, **kwargs):
details.save()
@transaction.commit_on_success
def check_first_run():
try:
details = Installation.objects.get()
with transaction.atomic():
details = Installation.objects.get()
except DatabaseError:
# Avoid database errors when the app tables haven't been created yet
transaction.rollback()
pass
else:
if details.is_first_run:
details.submit()

View File

@@ -1,11 +1,10 @@
from __future__ import absolute_import
import logging
import datetime
import logging
from django.db import models, transaction
from django.db.utils import IntegrityError
from django.db import transaction
from django.db import models
from .exceptions import LockError
@@ -13,16 +12,16 @@ logger = logging.getLogger(__name__)
class LockManager(models.Manager):
@transaction.commit_on_success
def acquire_lock(self, name, timeout=None):
logger.debug('trying to acquire lock: %s' % name)
lock = self.model(name=name, timeout=timeout)
try:
lock.save(force_insert=True)
logger.debug('acquired lock: %s' % name)
return lock
with transaction.atomic():
lock.save(force_insert=True)
logger.debug('acquired lock: %s' % name)
return lock
except IntegrityError, msg:
transaction.rollback()
logger.debug('IntegrityError: %s', msg)
# There is already an existing lock
# Check it's expiration date and if expired, reset it

View File

@@ -43,18 +43,6 @@ register_links(['document_queue_disable', 'document_queue_enable', 'queue_docume
register_maintenance_links([all_document_ocr_cleanup], namespace='ocr', title=_(u'OCR'))
@transaction.commit_on_success
def create_default_queue():
try:
default_queue, created = DocumentQueue.objects.get_or_create(name='default')
except DatabaseError:
transaction.rollback()
else:
if created:
default_queue.label = ugettext(u'Default')
default_queue.save()
@receiver(post_save, dispatch_uid='document_post_save', sender=DocumentVersion)
def document_post_save(sender, instance, **kwargs):
logger.debug('received post save signal')
@@ -69,7 +57,8 @@ def document_post_save(sender, instance, **kwargs):
@receiver(post_syncdb, dispatch_uid='create_default_queue', sender=ocr_models)
def create_default_queue_signal_handler(sender, **kwargs):
create_default_queue()
default_queue, created = DocumentQueue.objects.get_or_create(name='default')
register_interval_job('task_process_document_queues', _(u'Checks the OCR queue for pending documents.'), task_process_document_queues, seconds=QUEUE_PROCESSING_INTERVAL)

View File

@@ -18,8 +18,8 @@ form_view = {'text': _('Registration'), 'view': 'form_view', 'famfam': 'telephon
register_links(['form_view'], [about_view, license_view], menu_name='secondary_menu')
register_links(['form_view', 'about_view', 'license_view'], [form_view], menu_name='secondary_menu')
with transaction.commit_on_success():
try:
try:
with transaction.atomic():
RegistrationSingleton.objects.get()
except DatabaseError:
transaction.rollback()
except DatabaseError:
pass

View File

@@ -3,30 +3,29 @@ from __future__ import absolute_import
from ast import literal_eval
import logging
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ValidationError
from django.db import transaction
from django.db import models, transaction
from django.utils.translation import ugettext_lazy as _
from acls.utils import apply_default_acls
from common.compressed_files import CompressedFile, NotACompressedFile
from converter.api import get_available_transformations_choices
from converter.literals import DIMENSION_SEPARATOR
from documents.models import Document
from documents.events import HISTORY_DOCUMENT_CREATED
from document_indexing.api import update_indexes
from documents.events import HISTORY_DOCUMENT_CREATED
from documents.models import Document
from history.api import create_history
from metadata.api import save_metadata_list
from scheduler.api import register_interval_job, remove_job
from acls.utils import apply_default_acls
from .managers import SourceTransformationManager
from .literals import (SOURCE_CHOICES, SOURCE_CHOICES_PLURAL,
SOURCE_INTERACTIVE_UNCOMPRESS_CHOICES, SOURCE_CHOICE_WEB_FORM,
SOURCE_CHOICE_STAGING, SOURCE_ICON_DISK, SOURCE_ICON_DRIVE,
SOURCE_ICON_CHOICES, SOURCE_CHOICE_WATCH, SOURCE_UNCOMPRESS_CHOICES,
SOURCE_UNCOMPRESS_CHOICE_Y)
from .managers import SourceTransformationManager
logger = logging.getLogger(__name__)
@@ -85,7 +84,7 @@ class BaseModel(models.Model):
file_object.close()
return {'is_compressed': is_compressed}
@transaction.commit_on_success
@transaction.atomic
def upload_single_file(self, file_object, filename=None, use_file_name=False, document_type=None, metadata_dict_list=None, user=None, document=None, new_version_data=None):
new_document = not document

View File

@@ -106,14 +106,14 @@ TEMPLATE_LOADERS = (
)
MIDDLEWARE_CLASSES = (
'common.middleware.strip_spaces_widdleware.SpacelessMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.transaction.TransactionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.locale.LocaleMiddleware',
'common.middleware.strip_spaces_widdleware.SpacelessMiddleware',
'common.middleware.login_required_middleware.LoginRequiredMiddleware',
'permissions.middleware.permission_denied_middleware.PermissionDeniedMiddleware',
'pagination.middleware.PaginationMiddleware',