django-ok-17track

django-17track is an unofficial 17track.com API wrapper for Django.


Keywords
python3, tracking, 17track, django
License
MIT
Install
pip install django-ok-17track==0.0.4

Documentation

django-ok-17track PyPI version

Build status Project Status Python versions PyPI downloads Software license Project Status

django-17track is an unofficial 17track.com API wrapper for Django.

Installation

Install with pip:

$ pip install django-ok-17track

Update INSTALLED_APPS:

INSTALLED_APPS = [
    ...
    'track17',
    ...
]

Make migrations

$ python manage.py migrate

Available settings

TRACK17_API_KEY - API key for service.

TRACK17_API_KEY_FUNCTION - Custom function to return API key, if you want to store it outside the Django settings.

TRACK17_COUNTRIES_URL - Url to grab countries. Uses https://www.17track.net/en/apicountry.

TRACK17_CARRIERS_URL - Url to grab carriers. Uses https://www.17track.net/en/apicarrier.

Basic example to use:

How to get all countries and carriers:

python managet.py populate_carriers

How to register tracking number and get it's info:

from rest_framework import serializers
from track17.services import register_track, get_track_info, get_track_info_as_packages
from apps.track17.exceptions import DateProcessingError



# try to register tracking number at 17track API
try:
register_track('tracking_number')
except DateProcessingError as exc:
raise serializers.ValidationError(str(exc))

# try to fetch an actual info about a tracking number
try:
    response: Dict = get_track_info('tracking_number')
except DateProcessingError as exc:
    raise serializers.ValidationError(str(exc))

accepted_packages = response.get('accepted', [])

# return packages info as a list of `PackageEntity` (dataclass instance) objects
# in a readable way with a represantion of carriers and countries as Django model instances
packages = get_track_info_as_packages(accepted)

Or can use 17track adapter directly:

from track17.track17 import Track17Adapter


track17 = Track17Adapter()
response = track17.register('number1', 'number2')
response = track17.get_track_info('number1', 'number2')