Moved import code into it's own module so things outside of the ImportExportHandler can use it (like a setup_new_collection function).
This commit is contained in:
parent
50bcba34a0
commit
a2661400f3
@ -12,7 +12,7 @@ except ImportError:
|
||||
|
||||
import os, logging
|
||||
|
||||
__all__ = ['RestApp', 'RestHandlerBase', 'hasReturnValue', 'noReturnValue']
|
||||
__all__ = ['RestApp', 'RestHandlerBase', 'noReturnValue']
|
||||
|
||||
def noReturnValue(func):
|
||||
func.hasReturnValue = False
|
||||
@ -345,30 +345,15 @@ class ImportExportHandler(RestHandlerBase):
|
||||
def _get_importer_class(self, data):
|
||||
filetype = data['filetype']
|
||||
|
||||
# We do this as an if/elif/else guy, because I don't want to even import
|
||||
# the modules until someone actually attempts to import the type
|
||||
if filetype == 'text':
|
||||
from anki.importing.csvfile import TextImporter
|
||||
return TextImporter
|
||||
elif filetype == 'apkg':
|
||||
from anki.importing.apkg import AnkiPackageImporter
|
||||
return AnkiPackageImporter
|
||||
elif filetype == 'anki1':
|
||||
from anki.importing.anki1 import Anki1Importer
|
||||
return Anki1Importer
|
||||
elif filetype == 'supermemo_xml':
|
||||
from anki.importing.supermemo_xml import SupermemoXmlImporter
|
||||
return SupermemoXmlImporter
|
||||
elif filetype == 'mnemosyne':
|
||||
from anki.importing.mnemo import MnemosyneImporter
|
||||
return MnemosyneImporter
|
||||
elif filetype == 'pauker':
|
||||
from anki.importing.pauker import PaukerImporter
|
||||
return PaukerImporter
|
||||
else:
|
||||
from AnkiServer.importer import get_importer_class
|
||||
importer_class = get_importer_class(filetype)
|
||||
if importer_class is None:
|
||||
raise HTTPBadRequest("Unknown filetype '%s'" % filetype)
|
||||
|
||||
return importer_class
|
||||
|
||||
def import_file(self, col, data, ids):
|
||||
import AnkiServer.importer
|
||||
import tempfile
|
||||
|
||||
# get the importer class
|
||||
@ -384,9 +369,7 @@ class ImportExportHandler(RestHandlerBase):
|
||||
path = fd.name
|
||||
fd.write(filedata)
|
||||
|
||||
importer = importer_class(col, path)
|
||||
importer.open()
|
||||
importer.run()
|
||||
AnkiServer.importer.import_file(importer_class, col, path)
|
||||
finally:
|
||||
if path is not None:
|
||||
os.unlink(path)
|
||||
|
||||
29
AnkiServer/importer.py
Normal file
29
AnkiServer/importer.py
Normal file
@ -0,0 +1,29 @@
|
||||
|
||||
from anki.importing.csvfile import TextImporter
|
||||
from anki.importing.apkg import AnkiPackageImporter
|
||||
from anki.importing.anki1 import Anki1Importer
|
||||
from anki.importing.supermemo_xml import SupermemoXmlImporter
|
||||
from anki.importing.mnemo import MnemosyneImporter
|
||||
from anki.importing.pauker import PaukerImporter
|
||||
|
||||
importers = {
|
||||
'text': TextImporter,
|
||||
'apkg': AnkiPackageImporter,
|
||||
'anki1': Anki1Importer,
|
||||
'supermemo_xml': SupermemoXmlImporter,
|
||||
'mnemosyne': MnemosyneImporter,
|
||||
'pauker': PaukerImporter,
|
||||
}
|
||||
|
||||
def get_importer_class(type):
|
||||
global importers
|
||||
return importers.get(type)
|
||||
|
||||
def import_file(importer_class, col, path):
|
||||
importer = importer_class(col, path)
|
||||
|
||||
if importer.needMapper:
|
||||
importer.open()
|
||||
|
||||
importer.run()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user