summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Ruderich <simon@ruderich.org>2013-11-11 21:36:50 +0100
committerSol Jerome <sol.jerome@gmail.com>2013-11-11 22:19:56 -0600
commitb7479fa7dc6d87135fb328dbf9ba4bcd81a5db53 (patch)
treece1dc6702ad457b06a818baf08d916bdc9190de3
parent103b1b5198828876fa0684296900769018075f1b (diff)
downloadbcfg2-b7479fa7dc6d87135fb328dbf9ba4bcd81a5db53.tar.gz
bcfg2-b7479fa7dc6d87135fb328dbf9ba4bcd81a5db53.tar.bz2
bcfg2-b7479fa7dc6d87135fb328dbf9ba4bcd81a5db53.zip
Fix compatibility with Django 1.6.
-rw-r--r--src/lib/Bcfg2/Reporting/Compat.py18
-rw-r--r--src/lib/Bcfg2/Reporting/Storage/DjangoORM.py4
-rw-r--r--src/lib/Bcfg2/Reporting/urls.py2
-rwxr-xr-xsrc/lib/Bcfg2/Reporting/utils.py2
-rw-r--r--src/lib/Bcfg2/Server/Admin/Reports.py4
-rw-r--r--src/lib/Bcfg2/Server/Hostbase/hostbase/urls.py2
-rw-r--r--src/lib/Bcfg2/Server/Hostbase/urls.py2
-rw-r--r--src/lib/Bcfg2/Server/Reports/reports/models.py10
-rwxr-xr-xtools/upgrade/1.3/migrate_dbstats.py9
9 files changed, 37 insertions, 16 deletions
diff --git a/src/lib/Bcfg2/Reporting/Compat.py b/src/lib/Bcfg2/Reporting/Compat.py
new file mode 100644
index 000000000..d8f439e22
--- /dev/null
+++ b/src/lib/Bcfg2/Reporting/Compat.py
@@ -0,0 +1,18 @@
+""" Compatibility imports for Django. """
+
+from django import VERSION
+from django.db import transaction
+
+# Django 1.6 deprecated commit_on_success() and introduced atomic() with
+# similar semantics.
+if VERSION[0] == 1 and VERSION[1] < 6:
+ transaction.atomic = transaction.commit_on_success
+
+try:
+ # Django < 1.6
+ from django.conf.urls import defaults
+ django_urls = defaults
+except:
+ # Django > 1.6
+ from django.conf import urls
+ django_urls = urls
diff --git a/src/lib/Bcfg2/Reporting/Storage/DjangoORM.py b/src/lib/Bcfg2/Reporting/Storage/DjangoORM.py
index aea5e9d4b..ef1e92103 100644
--- a/src/lib/Bcfg2/Reporting/Storage/DjangoORM.py
+++ b/src/lib/Bcfg2/Reporting/Storage/DjangoORM.py
@@ -18,12 +18,12 @@ from django.core import management
from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned
from django.db.models import FieldDoesNotExist
from django.core.cache import cache
-from django.db import transaction
#Used by GetCurrentEntry
import difflib
from Bcfg2.Compat import b64decode
from Bcfg2.Reporting.models import *
+from Bcfg2.Reporting.Compat import transaction
class DjangoORM(StorageBase):
@@ -256,7 +256,7 @@ class DjangoORM(StorageBase):
entry.tag)
return None
- @transaction.commit_on_success
+ @transaction.atomic
def _import_interaction(self, interaction):
"""Real import function"""
hostname = interaction['hostname']
diff --git a/src/lib/Bcfg2/Reporting/urls.py b/src/lib/Bcfg2/Reporting/urls.py
index 8330fef7b..a9e5690be 100644
--- a/src/lib/Bcfg2/Reporting/urls.py
+++ b/src/lib/Bcfg2/Reporting/urls.py
@@ -1,4 +1,4 @@
-from django.conf.urls.defaults import *
+from Bcfg2.Reporting.Compat.django_urls import *
from django.core.urlresolvers import reverse, NoReverseMatch
from django.http import HttpResponsePermanentRedirect
from Bcfg2.Reporting.utils import filteredUrls, paginatedUrls, timeviewUrls
diff --git a/src/lib/Bcfg2/Reporting/utils.py b/src/lib/Bcfg2/Reporting/utils.py
index 619501d8b..d9b8213b1 100755
--- a/src/lib/Bcfg2/Reporting/utils.py
+++ b/src/lib/Bcfg2/Reporting/utils.py
@@ -1,5 +1,5 @@
"""Helper functions for reports"""
-from django.conf.urls.defaults import *
+from Bcfg2.Reporting.Compat.django_urls import *
import re
"""List of filters provided by filteredUrls"""
diff --git a/src/lib/Bcfg2/Server/Admin/Reports.py b/src/lib/Bcfg2/Server/Admin/Reports.py
index 849df8025..eb97123f7 100644
--- a/src/lib/Bcfg2/Server/Admin/Reports.py
+++ b/src/lib/Bcfg2/Server/Admin/Reports.py
@@ -19,11 +19,11 @@ sys.path.pop()
# Set DJANGO_SETTINGS_MODULE appropriately.
os.environ['DJANGO_SETTINGS_MODULE'] = '%s.settings' % project_name
-from django.db import transaction
from Bcfg2.Reporting.models import Client, Interaction, \
Performance, Bundle, Group, FailureEntry, PathEntry, \
PackageEntry, ServiceEntry, ActionEntry
+from Bcfg2.Reporting.Compat import transaction
def printStats(fn):
@@ -136,7 +136,7 @@ class Reports(Bcfg2.Server.Admin.Mode):
else:
self.errExit("Unknown command: %s" % args[0])
- @transaction.commit_on_success
+ @transaction.atomic
def scrub(self):
''' Perform a thorough scrub and cleanup of the database '''
diff --git a/src/lib/Bcfg2/Server/Hostbase/hostbase/urls.py b/src/lib/Bcfg2/Server/Hostbase/hostbase/urls.py
index 0ee204abe..a03d2c919 100644
--- a/src/lib/Bcfg2/Server/Hostbase/hostbase/urls.py
+++ b/src/lib/Bcfg2/Server/Hostbase/hostbase/urls.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-from django.conf.urls.defaults import *
+from Bcfg2.Reporting.Compat.django_urls import *
from django.contrib.auth.decorators import login_required
from django.core.urlresolvers import reverse
from django.views.generic.create_update import create_object, update_object, delete_object
diff --git a/src/lib/Bcfg2/Server/Hostbase/urls.py b/src/lib/Bcfg2/Server/Hostbase/urls.py
index 01fe97d4f..4a0c33f98 100644
--- a/src/lib/Bcfg2/Server/Hostbase/urls.py
+++ b/src/lib/Bcfg2/Server/Hostbase/urls.py
@@ -1,4 +1,4 @@
-from django.conf.urls.defaults import *
+from Bcfg2.Reporting.Compat.django_urls import *
from django.conf import settings
from django.views.generic.simple import direct_to_template
from django.contrib import admin
diff --git a/src/lib/Bcfg2/Server/Reports/reports/models.py b/src/lib/Bcfg2/Server/Reports/reports/models.py
index 73adaaaaf..c43c3cee7 100644
--- a/src/lib/Bcfg2/Server/Reports/reports/models.py
+++ b/src/lib/Bcfg2/Server/Reports/reports/models.py
@@ -9,11 +9,13 @@ except ImproperlyConfigured:
print("Reports: unable to import django models: %s" % e)
sys.exit(1)
-from django.db import connection, transaction
+from django.db import connection
from django.db.models import Q
from datetime import datetime, timedelta
from time import strptime
+from Bcfg2.Reporting.Compat import transaction
+
KIND_CHOICES = (
#These are the kinds of config elements
('Package', 'Package'),
@@ -288,7 +290,7 @@ class Reason(models.Model):
return rv
@staticmethod
- @transaction.commit_on_success
+ @transaction.atomic
def prune_orphans():
'''Prune oprhaned rows... no good way to use the ORM'''
cursor = connection.cursor()
@@ -305,7 +307,7 @@ class Entries(models.Model):
return self.name
@staticmethod
- @transaction.commit_on_success
+ @transaction.atomic
def prune_orphans():
'''Prune oprhaned rows... no good way to use the ORM'''
cursor = connection.cursor()
@@ -334,7 +336,7 @@ class Performance(models.Model):
return self.metric
@staticmethod
- @transaction.commit_on_success
+ @transaction.atomic
def prune_orphans():
'''Prune oprhaned rows... no good way to use the ORM'''
cursor = connection.cursor()
diff --git a/tools/upgrade/1.3/migrate_dbstats.py b/tools/upgrade/1.3/migrate_dbstats.py
index 07def2ac8..34430e3df 100755
--- a/tools/upgrade/1.3/migrate_dbstats.py
+++ b/tools/upgrade/1.3/migrate_dbstats.py
@@ -10,11 +10,12 @@ import time
import Bcfg2.Logger
import Bcfg2.Options
from django.core.cache import cache
-from django.db import connection, transaction, backend
+from django.db import connection, backend
from Bcfg2.Server.Admin.Reports import Reports
from Bcfg2.Reporting import models as new_models
from Bcfg2.Reporting.utils import BatchFetch
+from Bcfg2.Reporting.Compat import transaction
from Bcfg2.Server.Reports.reports import models as legacy_models
logger = logging.getLogger(__name__)
@@ -38,7 +39,7 @@ def _quote(value):
return _our_backend.quote_name(value)
-@transaction.commit_on_success
+@transaction.atomic
def _migrate_perms():
"""helper"""
@@ -57,7 +58,7 @@ def _migrate_perms():
return fperms
-@transaction.commit_on_success
+@transaction.atomic
def _migrate_transaction(inter, entries, fperms):
"""helper"""
@@ -187,7 +188,7 @@ def _shove(old_table, new_table, columns):
cursor.close()
-@transaction.commit_on_success
+@transaction.atomic
def migrate_stage1():
logger.info("Migrating clients")
try: