django-gtin-fields

Provides model fields and validation for GTIN codes (EAN, UPC, GTIN, ISBN)


Keywords
django
License
Other
Install
pip install django-gtin-fields==0.1.2

Documentation

django-gtin-fields

Provides django model fields to store and validate commonly used GTIN related product identifiers.

Requirements

Tested on all combinations of:

  • Python 3.4, 3.5, 3.6
  • Django 1.8, 1.9, 1.10

Installation

Using Pypi

$ pip install django-gtin-fields

Usage

Add gtin_fields to INSTALLED_APPS:

# settings.py
INSTALLED_APPS = (
	...
	'gtin_fields',
)

Use whichever fields you want in your models.

from django.db import models
from gtin_fields import ISBNField

class Product(models.Model):
	...
	isbn = ISBNField()  # ISBN-10 or ISBN-13
    upc = UPCAField()  # UPC-A field (12 digit standard UPC)
    ean = EAN13Field()  # EAN-13
    gtin = GTIN14Field()  # GTIN-14

    # Amazon Standard Identification Number (not GTIN but related)
    asin = ASINField()  # 10-digit, alphanumeric
    asin = ASINField(strict=True)  # ASIN w/ additional standard pattern rules

Converters can help you coerce from some codes to some other desired codes. For example:

from gtin_fields import converters

# 6 digit UPC-E
converters.upce_to_upca('425261')  # => '042100005264' (UPC-A)

# 8 digit UPC-E
converters.upce_to_upca('04252614')  # => '042100005264' (UPC-A)

# UPC-A to GTIN-14
converters.upca_to_gtin14('142100005264')  # => "00142100005264' (GTIN-14)

# EAN-13 to GTIN-14
converters.ean_to_gtin14('3142100005264')  # => "01142100005264' (GTIN-14)

# EAN-8 (GTIN-8) to GTIN-14
converters.gtin8_to_gtin14('66425261')  # => '00000066425261' (GTIN-14)

# UPC-A (GTIN-12) to EAN-13 / GTIN-13
converters.upca_to_ean13('142100005264')  # => '0142100005264' (EAN-13)

Can also use gtin_fields.validators elsewhere (in DRF, for instance).

TODO

  • Move GTIN-14 validation code upstream to stdnum
  • Implement coverage report through tox
  • Upload to pypi
  • Set up CI testing with drone

Acknowledgments

Built on the work of countless contributers, but of especial note: