better debugging of importer fails
This commit is contained in:
parent
601004fec1
commit
27d6482082
@ -2,6 +2,7 @@ import datetime
|
|||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
import traceback
|
||||||
import uuid
|
import uuid
|
||||||
from io import BytesIO, StringIO
|
from io import BytesIO, StringIO
|
||||||
from zipfile import ZipFile, BadZipFile
|
from zipfile import ZipFile, BadZipFile
|
||||||
@ -15,6 +16,7 @@ from django_scopes import scope
|
|||||||
from cookbook.forms import ImportExportBase
|
from cookbook.forms import ImportExportBase
|
||||||
from cookbook.helper.image_processing import get_filetype
|
from cookbook.helper.image_processing import get_filetype
|
||||||
from cookbook.models import Keyword, Recipe
|
from cookbook.models import Keyword, Recipe
|
||||||
|
from recipes.settings import DEBUG
|
||||||
|
|
||||||
|
|
||||||
class Integration:
|
class Integration:
|
||||||
@ -32,12 +34,7 @@ class Integration:
|
|||||||
self.request = request
|
self.request = request
|
||||||
self.export_type = export_type
|
self.export_type = export_type
|
||||||
# TODO add all import keywords under the importer root node
|
# TODO add all import keywords under the importer root node
|
||||||
self.keyword = Keyword.add_root(
|
self.keyword = Keyword.objects.first()
|
||||||
name=f'Import {export_type} {date_format(datetime.datetime.now(), "DATETIME_FORMAT")}.{datetime.datetime.now().strftime("%S")}',
|
|
||||||
description=f'Imported by {request.user.get_user_name()} at {date_format(datetime.datetime.now(), "DATETIME_FORMAT")}. Type: {export_type}',
|
|
||||||
icon='📥',
|
|
||||||
space=request.space,
|
|
||||||
)
|
|
||||||
|
|
||||||
def do_export(self, recipes):
|
def do_export(self, recipes):
|
||||||
"""
|
"""
|
||||||
@ -143,7 +140,7 @@ class Integration:
|
|||||||
il.imported_recipes += 1
|
il.imported_recipes += 1
|
||||||
il.save()
|
il.save()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
il.msg += f'-------------------- \n ERROR \n{e}\n--------------------\n'
|
self.handle_exception(e, log=il, message=f'-------------------- \n ERROR \n{e}\n--------------------\n')
|
||||||
import_zip.close()
|
import_zip.close()
|
||||||
elif '.json' in f['name'] or '.txt' in f['name']:
|
elif '.json' in f['name'] or '.txt' in f['name']:
|
||||||
data_list = self.split_recipe_file(f['file'])
|
data_list = self.split_recipe_file(f['file'])
|
||||||
@ -157,7 +154,7 @@ class Integration:
|
|||||||
il.imported_recipes += 1
|
il.imported_recipes += 1
|
||||||
il.save()
|
il.save()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
il.msg += f'-------------------- \n ERROR \n{e}\n--------------------\n'
|
self.handle_exception(e, log=il, message=f'-------------------- \n ERROR \n{e}\n--------------------\n')
|
||||||
elif '.rtk' in f['name']:
|
elif '.rtk' in f['name']:
|
||||||
import_zip = ZipFile(f['file'])
|
import_zip = ZipFile(f['file'])
|
||||||
for z in import_zip.filelist:
|
for z in import_zip.filelist:
|
||||||
@ -174,7 +171,7 @@ class Integration:
|
|||||||
il.imported_recipes += 1
|
il.imported_recipes += 1
|
||||||
il.save()
|
il.save()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
il.msg += f'-------------------- \n ERROR \n{e}\n--------------------\n'
|
self.handle_exception(e, log=il, message=f'-------------------- \n ERROR \n{e}\n--------------------\n')
|
||||||
import_zip.close()
|
import_zip.close()
|
||||||
else:
|
else:
|
||||||
recipe = self.get_recipe_from_file(f['file'])
|
recipe = self.get_recipe_from_file(f['file'])
|
||||||
@ -185,8 +182,9 @@ class Integration:
|
|||||||
il.msg += 'ERROR ' + _(
|
il.msg += 'ERROR ' + _(
|
||||||
'Importer expected a .zip file. Did you choose the correct importer type for your data ?') + '\n'
|
'Importer expected a .zip file. Did you choose the correct importer type for your data ?') + '\n'
|
||||||
except:
|
except:
|
||||||
il.msg += 'ERROR ' + _(
|
msg = 'ERROR ' + _(
|
||||||
'An unexpected error occurred during the import. Please make sure you have uploaded a valid file.') + '\n'
|
'An unexpected error occurred during the import. Please make sure you have uploaded a valid file.') + '\n'
|
||||||
|
self.handle_exception(e, log=il, message=msg)
|
||||||
|
|
||||||
if len(self.ignored_recipes) > 0:
|
if len(self.ignored_recipes) > 0:
|
||||||
il.msg += '\n' + _(
|
il.msg += '\n' + _(
|
||||||
@ -245,3 +243,12 @@ class Integration:
|
|||||||
- data - string content for file to get created in export zip
|
- data - string content for file to get created in export zip
|
||||||
"""
|
"""
|
||||||
raise NotImplementedError('Method not implemented in integration')
|
raise NotImplementedError('Method not implemented in integration')
|
||||||
|
|
||||||
|
def handle_exception(self, exception, log=None, message=''):
|
||||||
|
if log:
|
||||||
|
if message:
|
||||||
|
log.msg += message
|
||||||
|
else:
|
||||||
|
log.msg += exception.msg
|
||||||
|
if DEBUG:
|
||||||
|
traceback.print_exc()
|
||||||
|
Loading…
Reference in New Issue
Block a user