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 |
|
-
|