Skip to content

Commit 5cf3a4c

Browse files
authored
Merge pull request #188 from purplship/purplship-2022.2
[release-candidate] Purplship 2022.2
2 parents 3ba5443 + 1d50b9f commit 5cf3a4c

File tree

211 files changed

+13738
-6788
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

211 files changed

+13738
-6788
lines changed

.env

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ DETACHED_WORKER=True
1010
LOG_DIR=.pship
1111
WORKER_DB_DIR=.pship
1212
SECRET_KEY="n*s-ex6@ex_r1i%bk=3jd)p+lsick5bi*90!mbk7rc3iy_op1r"
13+
OIDC_RSA_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\n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\n-----END RSA PRIVATE KEY-----"

README.md

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,19 @@
66
[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](./LICENSE)
77
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/cc2ac4fcb6004bca84e42a90d8acfe41)](https://www.codacy.com/gh/purplship/purplship/dashboard?utm_source=github.com&utm_medium=referral&utm_content=purplship/purplship&utm_campaign=Badge_Grade)
88

9-
109
purplship makes shipping services simple and accessible.
1110
Help us out… If you love open source and great software, give us a star! 🌟
1211

1312
**Features**
1413

15-
- **Headless Shipping**: Access a network of traditional and modern shipping carrier services
14+
- **Headless Shipping**: Access a network of traditional and modern shipping carrier API-first
1615
- **Multi-carrier SDK**: Integrate purplship once and connect to multiple shipping carrier APIs
1716
- **Extensible**: Use the purplship SDK Framework to integrate with custom carrier APIs.
1817
- **Shipping**: Connect carrier accounts, get live rates and purchase shipping labels.
1918
- **Tracking**: Create package tracker, get real time tracking status and provide a branded tracking page.
2019
- **Address Validation**: Validate shipping addresses using integrated 3rd party APIs.
2120
- **Cloud**: Optimized for deployments using Docker.
22-
- **Dashboard**: Use the [purplship dashboard](https://github.com/purplship/purplship-dashboard) to orchestrate your logistics automation.
21+
- **Dashboard**: Use the [purplship dashboard](https://github.com/purplship/purplship-dashboard) to orchestrate your logistics operations.
2322

2423
<picture><img alt="Purplship Dashboard" src="./screenshots/dashboard.png" /></picture>
2524

@@ -37,10 +36,10 @@ There are several ways to use Purplship:
3736

3837
- [x] Alpha: We are testing purplship with a closed set of customers
3938
- [x] Public Alpha: Anyone can sign up over at [cloud.purplship.com](cloud.purplship.com). But go easy on us, there are a few kinks
40-
- [ ] Public Beta: Stable enough for most non-enterprise use-cases
39+
- [x] Public Beta: Stable enough for most non-enterprise use-cases
4140
- [ ] Public: Production-ready
4241

43-
We are currently in Public Alpha. Watch "releases" of this repo to get notified of major updates.
42+
We are currently in Public Beta. Watch "releases" of this repo to get notified of major updates.
4443

4544
## Self-hosted installation
4645

@@ -71,7 +70,7 @@ docker run -d \
7170
-e ADMIN_EMAIL=admin@example.com \
7271
-e ADMIN_PASSWORD=demo \
7372
--link=db:db -p 5002:5002 \
74-
danh91.docker.scarf.sh/purplship/server:2022.1.4
73+
danh91.docker.scarf.sh/purplship/server:2022.2
7574
```
7675

7776
</details>
@@ -96,7 +95,7 @@ services:
9695
- db_network
9796

9897
pship:
99-
image: danh91.docker.scarf.sh/purplship/server:2022.1.4
98+
image: danh91.docker.scarf.sh/purplship/server:2022.2
10099
restart: unless-stopped
101100
environment:
102101
- DEBUG_MODE=True
@@ -130,7 +129,7 @@ docker-compose up
130129

131130
</details>
132131

133-
Purplship should now be running at http://localhost:5002
132+
Purplship should now be running at <http://localhost:5002>
134133

135134
**Default Login**
136135

@@ -144,7 +143,6 @@ Purplship should now be running at http://localhost:5002
144143
- [PHP](https://github.com/purplship/purplship-php-client)
145144
- [Python](https://github.com/purplship/purplship-python-client)
146145

147-
148146
## Purplship SDK
149147

150148
### Installation

insiders/sdk/addons/purplship/addons/label.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def generate_label(
5858
5959
<line x1="450" y1="20" x2="450" y2="270" stroke="black" stroke-width="3" />
6060
61-
<text x="470" y="60" fill="black" style="font-size: 50; font-weight: bold">CARR: {{ carrier.get('verbose_name', "").upper() }}</text>
61+
<text x="470" y="60" fill="black" style="font-size: 50; font-weight: bold">CARR: {{ carrier.get('display_name', "").upper() }}</text>
6262
<text x="470" y="140" fill="black" style="font-size: 45; font-weight: bold">PRO#: {{ metadata.get('RFF_CN', '') }}</text>
6363
<text x="470" y="220" fill="black" style="font-size: 45; font-weight: bold">BOL#: {{ metadata.get('BGM', '') }}</text>
6464
@@ -114,10 +114,10 @@ def generate_label(
114114
115115
<text x="100" y="1300" fill="black" style="font-size: 35; font-weight: bold">(00) SERIAL SHIPPING CONTAINER</text>
116116
117-
<text data-type="barcode-text" x="90" y="1360" fill="black" style="font-size: 45">({{ carrier['metadata'].get('APP_ID', '00') }}){{ carrier['metadata'].get('SERIAL') }}{{ tracking_number[:6] }}5</text>
118-
<g data-type="barcode" data-value="({{ carrier['metadata'].get('APP_ID', '00') }}){{ carrier['metadata'].get('SERIAL') }}{{ tracking_number[:6] }}5"
117+
<text data-type="barcode-text" x="90" y="1360" fill="black" style="font-size: 45">({{ carrier['metadata'].get('APP_ID', '00') }}){{ carrier['metadata'].get('EXTENSION_DIGIT', '0') }}{{ carrier['metadata'].get('GS1_PREFIX', '0000000000') }}{{ tracking_number[-6:] }}{{ carrier['metadata'].get('CHECK_DIGIT', 5) }}</text>
118+
<g data-type="barcode" data-value="({{ carrier['metadata'].get('APP_ID', '00') }}){{ carrier['metadata'].get('EXTENSION_DIGIT', '0') }}{{ carrier['metadata'].get('GS1_PREFIX', '0000000000') }}{{ tracking_number[-6:] }}{{ carrier['metadata'].get('CHECK_DIGIT', 5) }}"
119119
data-module-width="5" data-width-ratio="3" x="60" y="1410" width="900" height="250" style="font-size: 65;">
120-
<text x="80" y="1380" fill="black" style="font-size: 60; font-weight: bold">({{ carrier['metadata'].get('APP_ID', '00') }}){{ carrier['metadata'].get('SERIAL') }}{{ tracking_number[:6] }}5</text>
120+
<text x="80" y="1380" fill="black" style="font-size: 60; font-weight: bold">({{ carrier['metadata'].get('APP_ID', '00') }}){{ carrier['metadata'].get('EXTENSION_DIGIT', '0') }}{{ carrier['metadata'].get('GS1_PREFIX', '0000000000') }}{{ tracking_number[-6:] }}{{ carrier['metadata'].get('CHECK_DIGIT', 5) }}</text>
121121
<rect x="60" y="1400" width="750" height="200" fill="transparent" stroke="black"></rect>
122122
</g>
123123
@@ -147,7 +147,7 @@ def generate_label(
147147
148148
^FX Top Right section.
149149
^CF0,50
150-
^FO540,30^FDCARR: {{ carrier.get('verbose_name', '').upper() }}^FS
150+
^FO540,30^FDCARR: {{ carrier.get('display_name', '').upper() }}^FS
151151
^CF0,45
152152
^FO540,120^FDPRO#: {{ metadata.get('RFF_CN', '') }}^FS
153153
^FO540,200^FDBOL#: {{ metadata.get('BGM', '') }}^FS
@@ -205,9 +205,9 @@ def generate_label(
205205
^FO100,1280^FD(00) SERIAL SHIPPING CONTAINER^FS
206206
207207
^CFA,45
208-
^FO80,1360^FD({{ carrier['metadata'].get('APP_ID', '00') }}){{ carrier['metadata'].get('SERIAL') }}{{ tracking_number[:6] }}5^FS
208+
^FO80,1360^FD({{ carrier['metadata'].get('APP_ID', '00') }}){{ carrier['metadata'].get('EXTENSION_DIGIT', '0') }}{{ carrier['metadata'].get('GS1_PREFIX', '0000000000') }}{{ tracking_number[-6:] }}{{ carrier['metadata'].get('CHECK_DIGIT', 5) }}^FS
209209
^BY5,3,200
210-
^FO60,1410^BCN,250,N,Y,Y,D^FD({{ carrier['metadata'].get('APP_ID', '00') }}){{ carrier['metadata'].get('SERIAL') }}{{ tracking_number[:6] }}5^FS
210+
^FO60,1410^BCN,250,N,Y,Y,D^FD({{ carrier['metadata'].get('APP_ID', '00') }}){{ carrier['metadata'].get('EXTENSION_DIGIT', '0') }}{{ carrier['metadata'].get('GS1_PREFIX', '0000000000') }}{{ tracking_number[-6:] }}{{ carrier['metadata'].get('CHECK_DIGIT', 5) }}^FS
211211
212212
^CF0,30
213213
^FO760,1720^FDxxxxxxxxxxxxxxxxxxxxxxxxx^FS

insiders/sdk/addons/purplship/universal/providers/shipping/shipment.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from typing import Tuple, List
22
from purplship.core.utils import Serializable
33
from purplship.core.models import (
4+
Documents,
45
ShipmentRequest,
56
ShipmentDetails,
67
Message,
@@ -31,11 +32,11 @@ def _extract_details(
3132
return ShipmentDetails(
3233
carrier_name=settings.custom_carrier_name,
3334
carrier_id=settings.carrier_id,
34-
label=service_label.label,
3535
label_type=service_label.label_type,
3636
tracking_number=service_label.tracking_number,
3737
shipment_identifier=service_label.tracking_number,
3838
meta=dict(service_name=service_label.service_name),
39+
docs=Documents(label=service_label.label),
3940
)
4041

4142

insiders/sdk/addons/purplship/universal/providers/shipping/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
class ShippingMixinSettings(BaseSettings):
1212
"""Universal shipping mixin settings."""
1313

14-
verbose_name: str = "Custom Carrier"
14+
display_name: str = "Custom Carrier"
1515
custom_carrier_name: str = "custom_carrier"
1616

1717
# Additional properties

insiders/sdk/addons/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "purplship.addons"
3-
version = "2022.1"
3+
version = "2022.2"
44
homepage="https://next.purplship.com/docs/guides/sdk"
55
repository="https://github.com/purplship/purplship"
66
description = "Multi-carrier shipping API integration with python"

insiders/sdk/addons/tests/addons/universal_shipment.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,12 @@ def test_multi_piece_shipment_request(self):
7979
"international": False,
8080
},
8181
],
82-
"metadata": {"APP_ID": "00", "SERIAL": "00099999000"},
82+
"metadata": {
83+
"APP_ID": "00",
84+
"EXTENSION_DIGIT": "0",
85+
"GS1_PREFIX": "0099999000",
86+
"CHECK_DIGIT": "5",
87+
},
8388
}
8489

8590
shipment_request_data = {
@@ -140,10 +145,10 @@ def test_multi_piece_shipment_request(self):
140145
{
141146
"carrier_id": "custom-carrier",
142147
"carrier_name": "custom_carrier",
143-
"label": ANY,
144148
"label_type": "ZPL",
145149
"shipment_identifier": ANY,
146150
"tracking_number": ANY,
151+
"docs": {"label": ANY},
147152
"meta": {
148153
"service_name": "Premium",
149154
},
@@ -155,8 +160,8 @@ def test_multi_piece_shipment_request(self):
155160
{
156161
"carrier_id": "custom-carrier",
157162
"carrier_name": "custom_carrier",
158-
"label": ANY,
159163
"label_type": "PDF",
164+
"docs": {"label": ANY},
160165
"meta": {
161166
"service_name": "Premium",
162167
"tracking_identifiers": ANY,

insiders/sdk/generic/purplship/mappers/generic/settings.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,13 @@
1414
class Settings(BaseSettings, RatingMixinSettings, ShippingMixinSettings):
1515
"""Generic connection settings."""
1616

17-
verbose_name: str
17+
display_name: str
1818
custom_carrier_name: str
1919

2020
id: str = None
2121
test: bool = False
2222
carrier_id: str = "custom-carrier"
23+
account_number: str = None
2324
account_country_code: str = None
2425
metadata: dict = {}
2526

insiders/sdk/generic/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "purplship.generic"
3-
version = "2022.1"
3+
version = "2022.2"
44
homepage="https://next.purplship.com/docs/guides/sdk"
55
repository="https://github.com/purplship/purplship"
66
description = "Purplship - Generic Shipping Extension"

insiders/sdk/generic/tests/generic/fixture.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
{
55
"carrier_id": "custom-carrier",
66
"custom_carrier_name": "custom_carrier",
7-
"verbose_name": "Custom Carrier",
7+
"display_name": "Custom Carrier",
88
"services": [
99
dict(
1010
service_name="Standard Service",
@@ -13,6 +13,11 @@
1313
currency="USD",
1414
)
1515
],
16-
"metadata": {"APP_ID": "00", "SERIAL": "00099999000"},
16+
"metadata": {
17+
"APP_ID": "00",
18+
"EXTENSION_DIGIT": "0",
19+
"GS1_PREFIX": "0099999000",
20+
"CHECK_DIGIT": "5",
21+
},
1722
}
1823
)

0 commit comments

Comments
 (0)