Source code for shuup.importer.utils.fields

import re
import unicodedata

from django.db import models

from shuup.utils.django_compat import force_text


[docs] def get_model_unique_fields(model): for field in model._meta.local_fields: if isinstance(field, models.AutoField) or field.unique: yield field tmo = getattr(model._meta, "translations_model", None) if tmo: for field in get_model_unique_fields(tmo): if field.name not in ("master", "id", "language_code"): yield field
[docs] def get_model_possible_name_fields(model): for field in model._meta.local_fields: if field.name in ["name", "title"]: yield field if hasattr(model, "_parler_meta"): for field in model._parler_meta.root_model._meta.get_fields(): if field.name not in ("master", "id", "language_code", "description"): yield field
[docs] def fold_mapping_name(m_name): m_name = force_text(m_name).strip().lower() m_name = force_text(unicodedata.normalize("NFKD", m_name).encode("ascii", "ignore")) m_name = re.sub(r"/[^a-z0-9]+/", "", m_name) return m_name.replace(" ", "_")
[docs] def get_global_aliases(): """ Get list of global aliases for fields :return: """ return { "shop": ["store", "store_id", "_store"], "default_price_value": [ "price", "original_price", "originalprice", "default_price", ], "first_name": ["firstname"], "last_name": ["lastname"], "street": [ "street_address", "address_street", "addr_street", "address[street]", ], "country": ["country_id"], "slug": ["url_key", "url"], "phone": ["telephone"], "postal_code": [ "postcode", "postalcode", "address_postcode", "address_postalcode", "address_postal_code", "address[postcode]", "address[postalcode]", "address[postal_code]", ], }