Source code for shuup.default_importer.importers.contact
# This file is part of Shuup.
#
# Copyright (c) 2012-2021, Shuup Commerce Inc. All rights reserved.
#
# This source code is licensed under the OSL-3.0 license found in the
# LICENSE file in the root directory of this source tree.
from django.utils.translation import ugettext_lazy as _
from shuup.core.models import CompanyContact, Contact, MutableAddress, PersonContact
from shuup.importer.importing import DataImporter, ImporterExampleFile, ImportMetaBase
[docs]class AddressHandlerMeta(ImportMetaBase):
aliases = {"name_ext": ["extension", "ext"]}
post_save_handlers = {
"handle_row_address": ["city", "country", "postal code", "region code", "street"],
}
[docs] def handle_row_address(self, fields, row_session):
row = row_session.row
contact = row_session.instance
data = {}
for field in fields:
data[field.replace(" ", "_")] = row.get(field, "")
data["name"] = contact.name
data["email"] = contact.email
data["phone"] = contact.phone
data["name_ext"] = contact.name_ext
if hasattr(contact, "tax_number"):
data["tax_number"] = contact.tax_number
address = MutableAddress.from_data(data)
address.save()
contact.default_shipping_address = address
contact.default_billing_address = address
contact.save()
[docs] def presave_hook(self, sess):
# if name extension is given and it's empty null fail will be risen
if sess.instance.name_ext is None:
sess.instance.name_ext = ""
[docs]class PersonContactImporter(DataImporter):
identifier = "contact_importer"
name = _("Contact Importer")
meta_base_class = AddressHandlerMeta
model = Contact
example_files = [
ImporterExampleFile(
"person_contact_sample.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
)
]
@classmethod
[docs] def get_example_file_content(cls, example_file, request):
from shuup.default_importer.samples import get_sample_file_content
return get_sample_file_content(example_file.file_name)
[docs]class CompanyContactImporter(DataImporter):
identifier = "company_importer"
name = _("Company Contact Importer")
meta_base_class = AddressHandlerMeta
model = Contact
example_files = [
ImporterExampleFile(
"company_contact_sample.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
)
]
@classmethod
[docs] def get_example_file_content(cls, example_file, request):
from shuup.default_importer.samples import get_sample_file_content
return get_sample_file_content(example_file.file_name)