42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from .models import GtinProduct
 | |
| from django.db.models import ObjectDoesNotExist
 | |
| import requests
 | |
| import logging
 | |
| 
 | |
| LOGGER = logging.getLogger(__name__)
 | |
| 
 | |
| 
 | |
| def ask_upcitemdb_service(gtin):
 | |
|     request = f'https://api.upcitemdb.com/prod/trial/lookup?upc={gtin}'
 | |
|     response = requests.get(request)
 | |
|     if response.status_code == 200:
 | |
|         productJson = response.json()
 | |
|         print(f"Got {productJson['total']} result records")
 | |
|         if productJson['total'] > 0:
 | |
|             product = GtinProduct.objects.create(gtin=gtin, api_request=request, api_response=productJson)
 | |
|             if 'title' in productJson['items'][0]:
 | |
|                 product.name = productJson['items'][0]['title']
 | |
|             if 'brand' in productJson['items'][0]:
 | |
|                 product.brand = productJson['items'][0]['brand']
 | |
|             LOGGER.debug(
 | |
|                 f"Creating new product entry for gtin={gtin}:\nrequest={request}\nresponse={response.status_code}:{productJson}")
 | |
|             product.save()
 | |
|             return product
 | |
|     return None
 | |
| 
 | |
| 
 | |
| def ask_remote_services(gtin):
 | |
|     product = ask_upcitemdb_service(gtin)
 | |
|     if product is not None:
 | |
|         return product
 | |
|     return None
 | |
| 
 | |
| 
 | |
| def get_by_gtin(gtin):
 | |
|     try:
 | |
|         product = GtinProduct.objects.get(gtin=gtin)
 | |
|     except ObjectDoesNotExist:
 | |
|         # ask remote services
 | |
|         product = ask_remote_services(gtin)
 | |
|     return product
 |