Projet

Général

Profil

0003-backoffice-convert-csv-import-to-afterjob-class-4840.patch

Frédéric Péters, 08 décembre 2020 13:40

Télécharger (2,65 ko)

Voir les différences:

Subject: [PATCH 3/5] backoffice: convert csv import to afterjob class (#48407)

 wcs/backoffice/data_management.py | 40 +++++++++++++++++--------------
 1 file changed, 22 insertions(+), 18 deletions(-)
wcs/backoffice/data_management.py
277 277
                error_message += ' ' + _('(line numbers %s and more)') % ', '.join(incomplete_lines[:5])
278 278
            raise ValueError(error_message)
279 279

  
280
        class ImportAction:
281
            def __init__(self, data_class, lines):
282
                self.data_class = data_class
283
                self.lines = lines
284

  
285
            def execute(self, job=None):
286
                for item in self.lines:
287
                    data_instance = self.data_class()
288
                    data_instance.data = item
289
                    data_instance.just_created()
290
                    data_instance.store()
291
                    data_instance.perform_workflow()
292

  
293
        action = ImportAction(self.formdef.data_class(), data_lines)
280
        job = ImportFromCsvAfterJob(carddef=self.formdef, data_lines=data_lines)
294 281
        if afterjob:
295
            job = get_response().add_after_job(N_('Importing data into cards'),
296
                                               action.execute)
297
            job.store()
282
            get_response().add_after_job(job)
298 283
            return redirect('import-csv?job=%s' % job.id)
299 284
        else:
300
            action.execute()
285
            job.execute()
301 286

  
302 287
    def _q_lookup(self, component):
303 288

  
......
345 330

  
346 331
    def should_fold_history(self):
347 332
        return True
333

  
334

  
335
class ImportFromCsvAfterJob(AfterJob):
336
    def __init__(self, carddef, data_lines):
337
        super().__init__(
338
                label=_('Importing data into cards'),
339
                carddef_class=carddef.__class__,
340
                carddef_id=carddef.id,
341
                data_lines=data_lines)
342

  
343
    def execute(self):
344
        carddef = self.kwargs['carddef_class'].get(self.kwargs['carddef_id'])
345
        carddata_class = carddef.data_class()
346
        for item in self.kwargs['data_lines']:
347
            data_instance = carddata_class()
348
            data_instance.data = item
349
            data_instance.just_created()
350
            data_instance.store()
351
            data_instance.perform_workflow()
348
-