Define Import Handler¶
The obvious step here is to define a new import handler, which
ultimately inherits from
ImportHandler
. But the choice
of which class(es) specifically to inherit from, is a bit more
complicated.
Choose the Base Class(es)¶
If all else fails, or to get started simply, you can always just
inherit from ImportHandler
directly as the only base class. You’ll have to define any methods
needed to implement desired behavior.
However depending on your particular source and/or target, there may be existing base classes defined somewhere from which you can inherit. This may save you some effort, and/or is just a good idea to share code where possible.
Keep in mind your import handler can inherit from multiple base classes, and often will - one base for the source side, and another for the target side. For instance:
from wuttasync.importing import FromFileHandler, ToWuttaHandler
class FromExcelToPoser(FromFileHandler, ToWuttaHandler):
"""
Handler for Excel file → Poser app DB
"""
You generally will still need to define/override some methods to customize behavior.
All built-in base classes live under wuttasync.importing
.
Register Importer(s)¶
If nothing else, most custom handlers must override
define_importers()
to “register” importer(s) as appropriate. There are two primary goals
here:
add “new” (totally custom) importers
override “existing” importers (inherited from base class)
Obviously for this to actually work the importer(s) must exist in code; see Define Importer(s).
As an example let’s say there’s a FromFooToWutta
handler which
defines a Widget
importer.
And let’s say you want to customize that, by tweaking slightly the
logic for WigdetImporter
and adding a new SprocketImporter
:
from somewhere_else import (FromFooToWutta, ToWutta,
WidgetImporter as WidgetImporterBase)
class FromFooToPoser(FromFooToWutta):
"""
Handler for Foo -> Poser
"""
def define_importers(self):
# base class defines the initial set
importers = super().define_importers()
# override widget importer
importers['Widget'] = WidgetImporter
# add sprocket importer
importers['Sprocket'] = SprocketImporter
return importers
class SprocketImporter(ToWutta):
"""
Sprocket importer for Foo -> Poser
"""
class WidgetImporter(WidgetImporterBase):
"""
Widget importer for Foo -> Poser
"""