karrio-server-data 2025.5rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- karrio/server/data/__init__.py +0 -0
- karrio/server/data/admin.py +1 -0
- karrio/server/data/apps.py +13 -0
- karrio/server/data/filters.py +43 -0
- karrio/server/data/migrations/0001_initial.py +62 -0
- karrio/server/data/migrations/0002_alter_batchoperation_resource_type_and_more.py +28 -0
- karrio/server/data/migrations/0003_datatemplate_metadata_alter_batchoperation_resources.py +36 -0
- karrio/server/data/migrations/__init__.py +0 -0
- karrio/server/data/models.py +97 -0
- karrio/server/data/resources/__init__.py +53 -0
- karrio/server/data/resources/orders.py +523 -0
- karrio/server/data/resources/shipments.py +473 -0
- karrio/server/data/resources/trackers.py +212 -0
- karrio/server/data/serializers/__init__.py +26 -0
- karrio/server/data/serializers/base.py +107 -0
- karrio/server/data/serializers/batch.py +9 -0
- karrio/server/data/serializers/batch_orders.py +99 -0
- karrio/server/data/serializers/batch_shipments.py +102 -0
- karrio/server/data/serializers/batch_trackers.py +131 -0
- karrio/server/data/serializers/data.py +109 -0
- karrio/server/data/signals.py +52 -0
- karrio/server/data/tests.py +3 -0
- karrio/server/data/urls.py +13 -0
- karrio/server/data/views/__init__.py +0 -0
- karrio/server/data/views/batch.py +72 -0
- karrio/server/data/views/batch_order.py +40 -0
- karrio/server/data/views/batch_shipment.py +40 -0
- karrio/server/data/views/batch_tracking.py +40 -0
- karrio/server/data/views/data.py +171 -0
- karrio/server/events/task_definitions/__init__.py +1 -0
- karrio/server/events/task_definitions/data/__init__.py +136 -0
- karrio/server/events/task_definitions/data/batch.py +130 -0
- karrio/server/events/task_definitions/data/shipments.py +51 -0
- karrio/server/graph/schemas/__init__.py +1 -0
- karrio/server/graph/schemas/data/__init__.py +51 -0
- karrio/server/graph/schemas/data/inputs.py +39 -0
- karrio/server/graph/schemas/data/mutations.py +53 -0
- karrio/server/graph/schemas/data/types.py +78 -0
- karrio/server/settings/data.py +15 -0
- karrio_server_data-2025.5rc1.dist-info/METADATA +18 -0
- karrio_server_data-2025.5rc1.dist-info/RECORD +43 -0
- karrio_server_data-2025.5rc1.dist-info/WHEEL +5 -0
- karrio_server_data-2025.5rc1.dist-info/top_level.txt +2 -0
@@ -0,0 +1,51 @@
|
|
1
|
+
import strawberry
|
2
|
+
from strawberry.types import Info
|
3
|
+
|
4
|
+
import karrio.server.graph.utils as utils
|
5
|
+
import karrio.server.graph.schemas.base as base
|
6
|
+
import karrio.server.graph.schemas.data.mutations as mutations
|
7
|
+
import karrio.server.graph.schemas.data.inputs as inputs
|
8
|
+
import karrio.server.graph.schemas.data.types as types
|
9
|
+
import karrio.server.data.models as models
|
10
|
+
|
11
|
+
extra_types: list = []
|
12
|
+
|
13
|
+
|
14
|
+
@strawberry.type
|
15
|
+
class Query:
|
16
|
+
data_template: types.DataTemplateType = strawberry.field(
|
17
|
+
resolver=types.DataTemplateType.resolve
|
18
|
+
)
|
19
|
+
data_templates: utils.Connection[types.DataTemplateType] = strawberry.field(
|
20
|
+
resolver=types.DataTemplateType.resolve_list
|
21
|
+
)
|
22
|
+
|
23
|
+
batch_operation: types.BatchOperationType = strawberry.field(
|
24
|
+
resolver=types.BatchOperationType.resolve
|
25
|
+
)
|
26
|
+
batch_operations: utils.Connection[types.BatchOperationType] = strawberry.field(
|
27
|
+
resolver=types.BatchOperationType.resolve_list
|
28
|
+
)
|
29
|
+
|
30
|
+
|
31
|
+
@strawberry.type
|
32
|
+
class Mutation:
|
33
|
+
@strawberry.mutation
|
34
|
+
def create_data_template(
|
35
|
+
self, info: Info, input: inputs.CreateDataTemplateMutationInput
|
36
|
+
) -> mutations.CreateDataTemplateMutation:
|
37
|
+
return mutations.CreateDataTemplateMutation.mutate(info, **input.to_dict())
|
38
|
+
|
39
|
+
@strawberry.mutation
|
40
|
+
def update_data_template(
|
41
|
+
self, info: Info, input: inputs.UpdateDataTemplateMutationInput
|
42
|
+
) -> mutations.UpdateDataTemplateMutation:
|
43
|
+
return mutations.UpdateDataTemplateMutation.mutate(info, **input.to_dict())
|
44
|
+
|
45
|
+
@strawberry.mutation
|
46
|
+
def delete_data_template(
|
47
|
+
self, info: Info, input: base.inputs.DeleteMutationInput
|
48
|
+
) -> base.mutations.DeleteMutation:
|
49
|
+
return base.mutations.DeleteMutation.mutate(
|
50
|
+
info, model=models.DataTemplate, **input.to_dict()
|
51
|
+
)
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import typing
|
2
|
+
import datetime
|
3
|
+
import strawberry
|
4
|
+
|
5
|
+
import karrio.server.graph.utils as utils
|
6
|
+
import karrio.server.data.serializers as serializers
|
7
|
+
|
8
|
+
ResourceTypeEnum: typing.Any = strawberry.enum(serializers.ResourceStatus)
|
9
|
+
BatchOperationStatusEnum: typing.Any = strawberry.enum(serializers.BatchOperationStatus)
|
10
|
+
|
11
|
+
|
12
|
+
@strawberry.input
|
13
|
+
class CreateDataTemplateMutationInput(utils.BaseInput):
|
14
|
+
slug: str
|
15
|
+
name: str
|
16
|
+
fields_mapping: utils.JSON
|
17
|
+
resource_type: ResourceTypeEnum
|
18
|
+
|
19
|
+
|
20
|
+
@strawberry.input
|
21
|
+
class DataTemplateFilter(utils.Paginated):
|
22
|
+
name: typing.Optional[str] = strawberry.UNSET
|
23
|
+
slug: typing.Optional[str] = strawberry.UNSET
|
24
|
+
resource_type: typing.List[ResourceTypeEnum] = strawberry.UNSET
|
25
|
+
|
26
|
+
|
27
|
+
@strawberry.input
|
28
|
+
class UpdateDataTemplateMutationInput(utils.BaseInput):
|
29
|
+
id: str
|
30
|
+
slug: typing.Optional[str] = strawberry.UNSET
|
31
|
+
name: typing.Optional[str] = strawberry.UNSET
|
32
|
+
fields_mapping: typing.Optional[utils.JSON] = strawberry.UNSET
|
33
|
+
resource_type: typing.Optional[ResourceTypeEnum] = strawberry.UNSET
|
34
|
+
|
35
|
+
|
36
|
+
@strawberry.input
|
37
|
+
class BatchOperationFilter(utils.Paginated):
|
38
|
+
resource_type: typing.Optional[typing.List[ResourceTypeEnum]] = strawberry.UNSET
|
39
|
+
status: typing.Optional[typing.List[BatchOperationStatusEnum]] = strawberry.UNSET
|
@@ -0,0 +1,53 @@
|
|
1
|
+
import typing
|
2
|
+
import strawberry
|
3
|
+
from strawberry.types import Info
|
4
|
+
|
5
|
+
import karrio.server.graph.utils as utils
|
6
|
+
import karrio.server.graph.schemas.data.types as types
|
7
|
+
import karrio.server.graph.schemas.data.inputs as inputs
|
8
|
+
import karrio.server.data.serializers as serializers
|
9
|
+
import karrio.server.data.models as models
|
10
|
+
|
11
|
+
|
12
|
+
@strawberry.type
|
13
|
+
class CreateDataTemplateMutation(utils.BaseMutation):
|
14
|
+
template: typing.Optional[types.DataTemplateType] = None
|
15
|
+
|
16
|
+
@staticmethod
|
17
|
+
@utils.authentication_required
|
18
|
+
@utils.authorization_required(["DATA_IMPORT_EXPORT"])
|
19
|
+
def mutate(
|
20
|
+
info: Info, **input: inputs.CreateDataTemplateMutationInput
|
21
|
+
) -> "CreateDataTemplateMutation":
|
22
|
+
serializer = serializers.DataTemplateModelSerializer(
|
23
|
+
data=input,
|
24
|
+
context=info.context,
|
25
|
+
)
|
26
|
+
serializer.is_valid(raise_exception=True)
|
27
|
+
|
28
|
+
return CreateDataTemplateMutation(template=serializer.save()) # type:ignore
|
29
|
+
|
30
|
+
|
31
|
+
@strawberry.type
|
32
|
+
class UpdateDataTemplateMutation(utils.BaseMutation):
|
33
|
+
template: typing.Optional[types.DataTemplateType] = None
|
34
|
+
|
35
|
+
@staticmethod
|
36
|
+
@utils.authentication_required
|
37
|
+
@utils.authorization_required(["DATA_IMPORT_EXPORT"])
|
38
|
+
def mutate(
|
39
|
+
info: Info, **input: inputs.UpdateDataTemplateMutationInput
|
40
|
+
) -> "UpdateDataTemplateMutation":
|
41
|
+
instance = models.DataTemplate.access_by(info.context.request).get(id=input["id"])
|
42
|
+
|
43
|
+
serializer = serializers.DataTemplateModelSerializer(
|
44
|
+
instance,
|
45
|
+
data=serializers.process_dictionaries_mutations(
|
46
|
+
["fields_mapping"], input, instance
|
47
|
+
),
|
48
|
+
partial=True,
|
49
|
+
context=info.context,
|
50
|
+
)
|
51
|
+
serializer.is_valid(raise_exception=True)
|
52
|
+
|
53
|
+
return UpdateDataTemplateMutation(template=serializer.save()) # type:ignore
|
@@ -0,0 +1,78 @@
|
|
1
|
+
import typing
|
2
|
+
import datetime
|
3
|
+
import strawberry
|
4
|
+
|
5
|
+
import karrio.server.graph.utils as utils
|
6
|
+
import karrio.server.graph.schemas.base.types as base
|
7
|
+
import karrio.server.graph.schemas.data.inputs as inputs
|
8
|
+
import karrio.server.data.models as models
|
9
|
+
import karrio.server.data.filters as filters
|
10
|
+
|
11
|
+
|
12
|
+
@strawberry.type
|
13
|
+
class DataTemplateType:
|
14
|
+
object_type: str
|
15
|
+
id: str
|
16
|
+
name: str
|
17
|
+
slug: str
|
18
|
+
fields_mapping: utils.JSON
|
19
|
+
description: typing.Optional[str]
|
20
|
+
resource_type: inputs.ResourceTypeEnum
|
21
|
+
created_at: typing.Optional[datetime.datetime]
|
22
|
+
updated_at: typing.Optional[datetime.datetime]
|
23
|
+
created_by: typing.Optional[base.UserType]
|
24
|
+
|
25
|
+
@staticmethod
|
26
|
+
@utils.authentication_required
|
27
|
+
def resolve(info, id: str) -> typing.Optional["DataTemplateType"]:
|
28
|
+
return models.DataTemplate.access_by(info.context.request).filter(id=id).first()
|
29
|
+
|
30
|
+
@staticmethod
|
31
|
+
@utils.authentication_required
|
32
|
+
def resolve_list(
|
33
|
+
info,
|
34
|
+
filter: typing.Optional[inputs.DataTemplateFilter] = strawberry.UNSET,
|
35
|
+
) -> utils.Connection["DataTemplateType"]:
|
36
|
+
_filter = filter if filter is not strawberry.UNSET else inputs.DataTemplateFilter()
|
37
|
+
queryset = filters.DataTemplateFilter(
|
38
|
+
_filter.to_dict(), models.DataTemplate.access_by(info.context.request)
|
39
|
+
).qs
|
40
|
+
return utils.paginated_connection(queryset, **_filter.pagination())
|
41
|
+
|
42
|
+
|
43
|
+
@strawberry.type
|
44
|
+
class BatchObjectType:
|
45
|
+
id: int
|
46
|
+
status: typing.Optional[inputs.ResourceTypeEnum]
|
47
|
+
|
48
|
+
|
49
|
+
@strawberry.type
|
50
|
+
class BatchOperationType:
|
51
|
+
object_type: str
|
52
|
+
id: int
|
53
|
+
resource_type: inputs.ResourceTypeEnum
|
54
|
+
resources: typing.List[BatchObjectType]
|
55
|
+
status: inputs.BatchOperationStatusEnum
|
56
|
+
test_mode: bool
|
57
|
+
created_at: datetime.datetime
|
58
|
+
updated_at: datetime.datetime
|
59
|
+
created_by: base.UserType
|
60
|
+
|
61
|
+
@staticmethod
|
62
|
+
@utils.authentication_required
|
63
|
+
@utils.authorization_required(["DATA_IMPORT_EXPORT"])
|
64
|
+
def resolve(info, id: str) -> typing.Optional["BatchOperationType"]:
|
65
|
+
return models.BatchOperation.access_by(info.context.request).filter(id=id).first()
|
66
|
+
|
67
|
+
@staticmethod
|
68
|
+
@utils.authentication_required
|
69
|
+
@utils.authorization_required(["DATA_IMPORT_EXPORT"])
|
70
|
+
def resolve_list(
|
71
|
+
info,
|
72
|
+
filter: typing.Optional[inputs.BatchOperationFilter] = strawberry.UNSET,
|
73
|
+
) -> utils.Connection["BatchOperationType"]:
|
74
|
+
_filter = filter if filter is not strawberry.UNSET else inputs.BatchOperationFilter()
|
75
|
+
queryset = filters.BatchOperationFilter(
|
76
|
+
_filter.to_dict(), models.BatchOperation.access_by(info.context.request)
|
77
|
+
).qs
|
78
|
+
return utils.paginated_connection(queryset, **_filter.pagination())
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# type: ignore
|
2
|
+
from karrio.server.settings.base import *
|
3
|
+
|
4
|
+
|
5
|
+
INSTALLED_APPS += ["import_export"]
|
6
|
+
|
7
|
+
IMPORT_EXPORT_USE_TRANSACTIONS = True
|
8
|
+
IMPORT_EXPORT_SKIP_ADMIN_LOG = True
|
9
|
+
IMPORT_EXPORT_CHUNK_SIZE = 200
|
10
|
+
IMPORT_EXPORT_TMP_STORAGE_CLASS = "import_export.tmp_storages.TempFolderStorage"
|
11
|
+
|
12
|
+
SPECTACULAR_SETTINGS["ENUM_NAME_OVERRIDES"] = {
|
13
|
+
**SPECTACULAR_SETTINGS["ENUM_NAME_OVERRIDES"],
|
14
|
+
"BatchOperationStatus": "karrio.server.data.serializers.OPERATION_STATUS",
|
15
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: karrio_server_data
|
3
|
+
Version: 2025.5rc1
|
4
|
+
Summary: Multi-carrier shipping API data import/export module
|
5
|
+
Author-email: karrio <hello@karrio.io>
|
6
|
+
License-Expression: Apache-2.0
|
7
|
+
Project-URL: Homepage, https://github.com/karrioapi/karrio
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
9
|
+
Requires-Python: >=3.11
|
10
|
+
Description-Content-Type: text/markdown
|
11
|
+
Requires-Dist: karrio_server_core
|
12
|
+
Requires-Dist: karrio_server_events
|
13
|
+
Requires-Dist: karrio_server_manager
|
14
|
+
Requires-Dist: django-import-export
|
15
|
+
|
16
|
+
# karrio-server
|
17
|
+
|
18
|
+
Karrio server data import/import module.
|
@@ -0,0 +1,43 @@
|
|
1
|
+
karrio/server/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
+
karrio/server/data/admin.py,sha256=2h43pTXd3NKV8-_fkUEkzkS4zqih0qBLE8q6Yj7fpEg,33
|
3
|
+
karrio/server/data/apps.py,sha256=IsP5PDXiBYrxUOJ6Uv5zKJTuHttq9L5QAftZwkIzuKo,348
|
4
|
+
karrio/server/data/filters.py,sha256=kZVVBfa2InYPHIaXqGDSplaV71apQScoe4rBc2qtwKk,1522
|
5
|
+
karrio/server/data/models.py,sha256=SyFFWnkSmxNe1oFOJVdRiTguo-8_vyQgIq4b8K_5_4c,2778
|
6
|
+
karrio/server/data/signals.py,sha256=h-jsoVnvJNEpQSjOwqRZ4v3CzGfxq8NB1NU6Mv7JJnk,1842
|
7
|
+
karrio/server/data/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
|
8
|
+
karrio/server/data/urls.py,sha256=Zmty89ViW1PabymilrgyGKcR93vfh2SMkCH7BdPtBjM,451
|
9
|
+
karrio/server/data/migrations/0001_initial.py,sha256=0kTusoaB4BBNiGT6C9NV81H0u2MJSUZGb1Urwto0c5o,3699
|
10
|
+
karrio/server/data/migrations/0002_alter_batchoperation_resource_type_and_more.py,sha256=wy6g8qddhQnCMTHPB15IA_FrDXBH6Ji0BqkOYed2La0,1128
|
11
|
+
karrio/server/data/migrations/0003_datatemplate_metadata_alter_batchoperation_resources.py,sha256=_UnAg35ZVKopwXamb425nIepMIgna0uSsJ7RJhWXHoI,1017
|
12
|
+
karrio/server/data/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
|
+
karrio/server/data/resources/__init__.py,sha256=pr_eVFI2uCgXTbfR-ryKtrBbDfaapY6YBJVOw0pzRlI,1748
|
14
|
+
karrio/server/data/resources/orders.py,sha256=Q2rLsemyUDFR7OSKnAwkkMaMM982uS9ur3nDk1xgARM,19642
|
15
|
+
karrio/server/data/resources/shipments.py,sha256=-umBRNIDSPq-vMm_6iuCbpoMJtZf9F8zNSDnXOttBdk,16785
|
16
|
+
karrio/server/data/resources/trackers.py,sha256=YoFomUtsdg99j3Sl8L_2QKYxdyF4OI8ji-DtSRYP0Kg,7024
|
17
|
+
karrio/server/data/serializers/__init__.py,sha256=ZjLNDdqGDoDSzPvUqG0QinbzDRsrQT1G0JfnHaZnwBw,917
|
18
|
+
karrio/server/data/serializers/base.py,sha256=JZZt35GndnXNXB-vHkqYas1cU7ufpVCJbEX1CMhUYaU,3174
|
19
|
+
karrio/server/data/serializers/batch.py,sha256=rsVQ6ojpco1OfwkES2qHiTzbz68UnQ0fptf5n33ADIU,310
|
20
|
+
karrio/server/data/serializers/batch_orders.py,sha256=dIzsaKr-pjaS8kEUWch5ZBQYuhLlz8Z4KMm05V4iDng,3268
|
21
|
+
karrio/server/data/serializers/batch_shipments.py,sha256=9-sd1k-VaFvLo8yAlaa4c0AHCdQ9uXgN7L4DSzPAJ_4,3346
|
22
|
+
karrio/server/data/serializers/batch_trackers.py,sha256=AqlLHlfX9FCC2L_75jSH0xg937YlCHcclMOH1_UNnZQ,4801
|
23
|
+
karrio/server/data/serializers/data.py,sha256=eRByIylbfW32XKkR_7K0x4hIO7c-JAVQvgMzXuQBQko,3254
|
24
|
+
karrio/server/data/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
|
+
karrio/server/data/views/batch.py,sha256=58AYc_3DssAJywrxV3gzw1Trm8xXOQEnKq6P7-b3RnU,2510
|
26
|
+
karrio/server/data/views/batch_order.py,sha256=QNbbnuOUTkj39dDQ0er7deYUwfQcveWo2F7QnQN7Bd4,1238
|
27
|
+
karrio/server/data/views/batch_shipment.py,sha256=jmJyS93b4k6VtT3aDmnWnw9HxL6itmv66nJ55IJoc24,1259
|
28
|
+
karrio/server/data/views/batch_tracking.py,sha256=jts3CfEFdDaMy6MUv-vc5eqvGNX8KJinb45_dRS6xZA,1252
|
29
|
+
karrio/server/data/views/data.py,sha256=IasSRHV5ejAsdkcM0amxLfsaAnBQugVIpEb9pbzi8VY,5649
|
30
|
+
karrio/server/events/task_definitions/__init__.py,sha256=bpT73UG7mZL_JjEqMwbYx6q69jA8J5Jcoul1LcDokhA,81
|
31
|
+
karrio/server/events/task_definitions/data/__init__.py,sha256=PmNdHA0hw5RCRr1vObjSyvt5az38Nw3n4mKvILqBHwM,4429
|
32
|
+
karrio/server/events/task_definitions/data/batch.py,sha256=NoBCPm-V2hajvTwe0QrddbJrC2bs7qTdiWV8bx9GUgg,3945
|
33
|
+
karrio/server/events/task_definitions/data/shipments.py,sha256=h_NeAFIK6Gb6VAXe57jA2J105bp9azzQ-3bMqsUmWPo,1394
|
34
|
+
karrio/server/graph/schemas/__init__.py,sha256=iOEMwnlORWezdO8-2vxBIPSR37D7JGjluZ8f55vzxls,81
|
35
|
+
karrio/server/graph/schemas/data/__init__.py,sha256=muyYsydCc1StU-k7XAF8FYoXO9RJ5yOfMHaqSY-r3ew,1781
|
36
|
+
karrio/server/graph/schemas/data/inputs.py,sha256=DjQ_xeeK7PnY1DfwEZmYsGgZ6rUsYRQjv8MyEqmd45Y,1274
|
37
|
+
karrio/server/graph/schemas/data/mutations.py,sha256=Dk0LVifqYVB92AUWah3ygWnn7HOS5dSe0AuCHqxs8yQ,1831
|
38
|
+
karrio/server/graph/schemas/data/types.py,sha256=XHOGqUlTQ2KvrTmeZmJp0kfHhURem7kNtccHP-MHnuo,2701
|
39
|
+
karrio/server/settings/data.py,sha256=PHIlILwHKhtyuEKJJd67GbHx3WgH80c-DmXkRgQk4r8,463
|
40
|
+
karrio_server_data-2025.5rc1.dist-info/METADATA,sha256=HtalDUxGOajh7D_4IHK-Bgd8cRjHRY4FMfTAcN7gmGE,571
|
41
|
+
karrio_server_data-2025.5rc1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
42
|
+
karrio_server_data-2025.5rc1.dist-info/top_level.txt,sha256=D1D7x8R3cTfjF_15mfiO7wCQ5QMtuM4x8GaPr7z5i78,12
|
43
|
+
karrio_server_data-2025.5rc1.dist-info/RECORD,,
|