Rollback transaction on exception, during syncdb (Postgresql @ DjangoZoom)

This commit is contained in:
Roberto Rosario
2011-07-07 23:21:14 -04:00
parent 841b02c969
commit 89d9d95f59

View File

@@ -3,6 +3,7 @@ from django.shortcuts import get_object_or_404
from django.utils.translation import ugettext from django.utils.translation import ugettext
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.db import transaction
from permissions import PERMISSION_ROLE_VIEW, PERMISSION_ROLE_EDIT, \ from permissions import PERMISSION_ROLE_VIEW, PERMISSION_ROLE_EDIT, \
PERMISSION_ROLE_CREATE, PERMISSION_ROLE_DELETE, \ PERMISSION_ROLE_CREATE, PERMISSION_ROLE_DELETE, \
@@ -19,6 +20,7 @@ def set_namespace_title(namespace, title):
namespace_titles.setdefault(namespace, title) namespace_titles.setdefault(namespace, title)
@transaction.commit_manually
def register_permission(permission): def register_permission(permission):
try: try:
permission_obj, created = Permission.objects.get_or_create( permission_obj, created = Permission.objects.get_or_create(
@@ -26,8 +28,12 @@ def register_permission(permission):
permission_obj.label = unicode(permission['label']) permission_obj.label = unicode(permission['label'])
permission_obj.save() permission_obj.save()
except DatabaseError: except DatabaseError:
transaction.rollback()
#Special case for ./manage.py syncdb #Special case for ./manage.py syncdb
pass except IntegrityError:
transaction.rollback()
else:
transaction.commit()
def check_permissions(requester, permission_list): def check_permissions(requester, permission_list):