Projet

Général

Profil

0001-mdel_ddpacs-make-_handle_create-atomic-40011.patch

Benjamin Dauvergne, 03 mars 2020 11:07

Télécharger (2,06 ko)

Voir les différences:

Subject: [PATCH] mdel_ddpacs: make _handle_create atomic (#40011)

 passerelle/apps/mdel_ddpacs/abstract.py | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)
passerelle/apps/mdel_ddpacs/abstract.py
24 24
import xml.etree.ElementTree as ET
25 25
import zipfile
26 26

  
27
from django.db import models, IntegrityError
27
from django.db import models, IntegrityError, transaction
28 28
from django.core.urlresolvers import reverse
29 29
from django.http import HttpResponse
30 30
from django.utils.translation import ugettext_lazy as _
......
129 129

  
130 130
    def _handle_create(self, request, payload):
131 131
        reference = 'A-' + payload['display_id']
132
        try:
133
            demand = self.demand_set.create(
134
                reference=reference,
135
                step=1,
136
                data=payload)
137
        except IntegrityError as e:
138
            raise APIError('reference-non-unique', http_status=400,
139
                            data={'original_exc': exception_to_text(e)})
140
        self.add_job('push_demand', demand_id=demand.id)
141
        return self.status(request, demand)
132
        with transaction.atomic():
133
            try:
134
                demand = self.demand_set.create(
135
                    reference=reference,
136
                    step=1,
137
                    data=payload)
138
            except IntegrityError as e:
139
                raise APIError('reference-non-unique', http_status=400,
140
                                data={'original_exc': exception_to_text(e)})
141
            self.add_job('push_demand', demand_id=demand.id)
142
            return self.status(request, demand)
142 143

  
143 144
    def push_demand(self, demand_id):
144 145
        demand = self.demand_set.get(id=demand_id)
145
-