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
|
import os, logging
|
||||||
|
|
||||||
__all__ = ['RestApp', 'RestHandlerBase', 'hasReturnValue', 'noReturnValue']
|
__all__ = ['RestApp', 'RestHandlerBase', 'noReturnValue']
|
||||||
|
|
||||||
def noReturnValue(func):
|
def noReturnValue(func):
|
||||||
func.hasReturnValue = False
|
func.hasReturnValue = False
|
||||||
@ -345,30 +345,15 @@ class ImportExportHandler(RestHandlerBase):
|
|||||||
def _get_importer_class(self, data):
|
def _get_importer_class(self, data):
|
||||||
filetype = data['filetype']
|
filetype = data['filetype']
|
||||||
|
|
||||||
# We do this as an if/elif/else guy, because I don't want to even import
|
from AnkiServer.importer import get_importer_class
|
||||||
# the modules until someone actually attempts to import the type
|
importer_class = get_importer_class(filetype)
|
||||||
if filetype == 'text':
|
if importer_class is None:
|
||||||
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:
|
|
||||||
raise HTTPBadRequest("Unknown filetype '%s'" % filetype)
|
raise HTTPBadRequest("Unknown filetype '%s'" % filetype)
|
||||||
|
|
||||||
|
return importer_class
|
||||||
|
|
||||||
def import_file(self, col, data, ids):
|
def import_file(self, col, data, ids):
|
||||||
|
import AnkiServer.importer
|
||||||
import tempfile
|
import tempfile
|
||||||
|
|
||||||
# get the importer class
|
# get the importer class
|
||||||
@ -384,9 +369,7 @@ class ImportExportHandler(RestHandlerBase):
|
|||||||
path = fd.name
|
path = fd.name
|
||||||
fd.write(filedata)
|
fd.write(filedata)
|
||||||
|
|
||||||
importer = importer_class(col, path)
|
AnkiServer.importer.import_file(importer_class, col, path)
|
||||||
importer.open()
|
|
||||||
importer.run()
|
|
||||||
finally:
|
finally:
|
||||||
if path is not None:
|
if path is not None:
|
||||||
os.unlink(path)
|
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