tgshops-integrations 1.4__py3-none-any.whl → 1.6__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- tgshops_integrations/middlewares/gateway.py +1 -1
- tgshops_integrations/nocodb_connector/categories.py +18 -18
- tgshops_integrations/nocodb_connector/client.py +11 -21
- tgshops_integrations/nocodb_connector/model_mapping.py +1 -1
- {tgshops_integrations-1.4.dist-info → tgshops_integrations-1.6.dist-info}/METADATA +1 -1
- {tgshops_integrations-1.4.dist-info → tgshops_integrations-1.6.dist-info}/RECORD +8 -8
- {tgshops_integrations-1.4.dist-info → tgshops_integrations-1.6.dist-info}/WHEEL +0 -0
- {tgshops_integrations-1.4.dist-info → tgshops_integrations-1.6.dist-info}/top_level.txt +0 -0
@@ -78,7 +78,7 @@ class Gateway(NocodbClient):
|
|
78
78
|
products_table = self.tables_list[self.config.NOCODB_PRODUCTS]
|
79
79
|
await self.product_manager.update_attributes(products=external_products)
|
80
80
|
# Updates categories if there were a new ones created
|
81
|
-
external_products=await self.category_manager.map_categories(external_products=external_products)
|
81
|
+
# external_products=await self.category_manager.map_categories(external_products=external_products)
|
82
82
|
self.product_manager.actual_products=await self.get_all_products()
|
83
83
|
# self.product_manager.actual_products = await self.product_manager.get_products_v2(offset=0,limit=200)
|
84
84
|
|
@@ -94,26 +94,26 @@ class CategoryManager(NocodbClient):
|
|
94
94
|
|
95
95
|
for product in external_products:
|
96
96
|
# Check for new categories
|
97
|
-
# IF some category number exists on external side
|
98
|
-
if product.category:
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
97
|
+
# DEPRECATED IF some category number exists on external side
|
98
|
+
# if product.category:
|
99
|
+
# for external_category_id,category_name in zip(product.category,product.category_name):
|
100
|
+
# if category_name not in [*self.categories.keys()]:
|
101
|
+
# new_category= await self.create_product_category(table_id=self.categories_table,category_name=category_name,category_id=external_category_id,table_name=PRODUCT_NAME_FIELD)
|
102
|
+
# if self.logging:
|
103
|
+
# logger.info(f"New Category {new_category}")
|
104
|
+
# self.external_categories[new_category["Id"]]=external_category_id
|
105
|
+
# self.categories=await self.get_product_categories(table_id=self.categories_table, table_name=PRODUCT_NAME_FIELD)
|
106
106
|
#Else if there is just the name, create the category with new id
|
107
|
-
else:
|
107
|
+
# else:
|
108
108
|
#Needs the buttons to be initialized, can connect items to buttons , which allows filtered acces through the menu
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
109
|
+
for num,category_name in enumerate(product.category_name):
|
110
|
+
if category_name not in categories_list:
|
111
|
+
if self.filter_buttons:
|
112
|
+
parent_id=self.categories[self.filter_buttons[num]]
|
113
|
+
else:
|
114
|
+
parent_id=self.categories[product.category_II_name[0]]
|
115
|
+
categories_to_create.append([category_name,parent_id])
|
116
|
+
categories_list.append(category_name)
|
117
117
|
|
118
118
|
if categories_to_create:
|
119
119
|
categories_to_create.sort(key=lambda x: x[0])
|
@@ -253,8 +253,12 @@ class NocodbClient:
|
|
253
253
|
source_column_id -ID of source column
|
254
254
|
linked_record_id - ID of linked record
|
255
255
|
"""
|
256
|
-
|
257
|
-
|
256
|
+
try:
|
257
|
+
response = requests.get(image_url)
|
258
|
+
except:
|
259
|
+
logger.info(f"Error with loading image via url - {image_url}")
|
260
|
+
return ""
|
261
|
+
|
258
262
|
if response.status_code == 200:
|
259
263
|
file = io.BytesIO(response.content)
|
260
264
|
else:
|
@@ -263,26 +267,12 @@ class NocodbClient:
|
|
263
267
|
file_size = file.getbuffer().nbytes
|
264
268
|
|
265
269
|
if file_size:
|
266
|
-
|
267
270
|
files = {'file': (image_name, file, 'image/jpeg')}
|
268
|
-
|
269
271
|
url = f"{self.NOCODB_HOST.replace('/api/v2', '/api/v1')}/db/storage/upload?path=noco/{source_column_id}/{product_table_name}/{images_column_id}"
|
270
|
-
timeout = httpx.Timeout(
|
271
|
-
|
272
|
-
|
273
|
-
response
|
274
|
-
|
275
|
-
return response.json()[0]['url']
|
276
|
-
|
277
|
-
# If first attempt fails, retry once
|
278
|
-
response = await self.httpx_client.post(url, files=files, headers=self.httpx_client.headers, timeout=timeout)
|
279
|
-
if response.status_code == 200:
|
280
|
-
return response.json()[0]['url']
|
281
|
-
|
282
|
-
except httpx.HTTPStatusError as e:
|
283
|
-
raise Exception(f"HTTP error occurred: {e}")
|
284
|
-
except Exception as e:
|
285
|
-
raise Exception(f"Request failed: {str(e)}")
|
286
|
-
|
272
|
+
timeout = httpx.Timeout(100.0)
|
273
|
+
response = await self.httpx_client.post(url,files=files,headers=self.httpx_client.headers,timeout=timeout)
|
274
|
+
if response.status_code == 200:
|
275
|
+
return response.json()[0]['url']
|
276
|
+
raise Exception(response.text)
|
287
277
|
else:
|
288
278
|
return ""
|
@@ -135,7 +135,7 @@ def dump_product_data_with_check(data: ProductModel, data_check: dict) -> dict:
|
|
135
135
|
PRODUCT_CURRENCY_FIELD: data.currency,
|
136
136
|
PRODUCT_STOCK_FIELD: data.stock_qty,
|
137
137
|
PRODUCT_CATEGORY_NAME_FIELD:[data.category_name] if data.category_name else None,
|
138
|
-
PRODUCT_CATEGORY_ID_FIELD: [{'Id': data_check[item]} for item in data.category_name] if data.
|
138
|
+
PRODUCT_CATEGORY_ID_FIELD: [{'Id': data_check[item]} for item in data.category_name] if data.category_name else None,
|
139
139
|
PRODUCT_IMAGE_FIELD: preview_url,
|
140
140
|
PRODUCT_CHECKOUT_MODE: NOCODB_CHECKOUT_MODES,
|
141
141
|
PRODUCT_DISCOUNT_PRICE_FIELD: data.final_price,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: tgshops-integrations
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.6
|
4
4
|
Summary: Library is intended to provide the integration of the external service or CRM system with the TelegramShops/It allows to configure the relationship between NocoDB list of the products used further to display in the shop/As a resultss the products can be synchronized and updated uppon the request.
|
5
5
|
Home-page: https://git.the-devs.com/virtual-shops/shop-system/shop-backend-integrations/integration-library/integration-library
|
6
6
|
Author: Dimi Latoff
|
@@ -1,16 +1,16 @@
|
|
1
1
|
tgshops_integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
2
|
tgshops_integrations/middlewares/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
-
tgshops_integrations/middlewares/gateway.py,sha256=
|
3
|
+
tgshops_integrations/middlewares/gateway.py,sha256=yyFHGH0MaBk3MMKREe9PxZBmBcFT9MErwavfnmrf1RE,6327
|
4
4
|
tgshops_integrations/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
5
|
tgshops_integrations/models/categories.py,sha256=EG6C8g5dOfXB2MH-vtqH13aqB7_VyOobY2FHpDb-fsY,977
|
6
6
|
tgshops_integrations/models/products.py,sha256=i0vP_eJMVCB-W25BCoodIB0AhsMTqYiDO48N-B6Ueo0,1379
|
7
7
|
tgshops_integrations/nocodb_connector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
8
|
-
tgshops_integrations/nocodb_connector/categories.py,sha256=
|
9
|
-
tgshops_integrations/nocodb_connector/client.py,sha256=
|
10
|
-
tgshops_integrations/nocodb_connector/model_mapping.py,sha256=
|
8
|
+
tgshops_integrations/nocodb_connector/categories.py,sha256=x9mtXYEEIt6jV1Qzh_hYwKYJjqyuWyopmyeV0V4myUQ,9069
|
9
|
+
tgshops_integrations/nocodb_connector/client.py,sha256=qHv14rwad3P9SCH6h3Rj9UhOMGU6qq39jFJX_Ylxb3I,11640
|
10
|
+
tgshops_integrations/nocodb_connector/model_mapping.py,sha256=Sk3AzJCThH97dQIlNuQ7HKqycek_6Tq9UCsWR-9N4_4,8775
|
11
11
|
tgshops_integrations/nocodb_connector/products.py,sha256=23uXnmznJN6fZw3tZ3a7dJg06LkI2QaNfVhSKochPn4,8677
|
12
12
|
tgshops_integrations/nocodb_connector/tables.py,sha256=ha_QXZXd93mht0fR5E1nM0wUpz1ePon-pIdO2HI67l8,356
|
13
|
-
tgshops_integrations-1.
|
14
|
-
tgshops_integrations-1.
|
15
|
-
tgshops_integrations-1.
|
16
|
-
tgshops_integrations-1.
|
13
|
+
tgshops_integrations-1.6.dist-info/METADATA,sha256=LTzbKnfZ99RXRkxr8ydi0Arl5-UEXIyAvJS5LzMplD4,2774
|
14
|
+
tgshops_integrations-1.6.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
|
15
|
+
tgshops_integrations-1.6.dist-info/top_level.txt,sha256=HFNtxqDpzmlF4ZLnMiwhbU7pOa_YozxU2zBl0bnUmcY,21
|
16
|
+
tgshops_integrations-1.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|