|
9 | 9 | from Crypto.PublicKey import RSA |
10 | 10 | from django.contrib.auth.models import AnonymousUser |
11 | 11 | from django.contrib.auth.models import User |
| 12 | +from django.db import transaction |
12 | 13 | from django.utils import timezone |
13 | 14 | from guardian.shortcuts import assign_perm |
14 | 15 | from guardian.shortcuts import get_objects_for_user |
@@ -625,10 +626,11 @@ def rollback(self, request, *args, **kwargs): |
625 | 626 | if version < 1: |
626 | 627 | return Response(status=status.HTTP_404_NOT_FOUND) |
627 | 628 | prev = app.release_set.get(version=version) |
628 | | - summary = "{} rolled back to v{}".format(request.user, version) |
629 | | - app.release_set.create(owner=request.user, version=last_version + 1, |
630 | | - build=prev.build, config=prev.config, |
631 | | - summary=summary) |
| 629 | + with transaction.atomic(): |
| 630 | + summary = "{} rolled back to v{}".format(request.user, version) |
| 631 | + app.release_set.create(owner=request.user, version=last_version + 1, |
| 632 | + build=prev.build, config=prev.config, |
| 633 | + summary=summary) |
632 | 634 | # publish release to registry as new docker image |
633 | 635 | if settings.REGISTRY_URL: |
634 | 636 | repository_path = "{}/{}".format(app.owner.username, app.id) |
|
0 commit comments