You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.8 KiB

from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt
from django.http import JsonResponse
import json
from product_directory.models import Product
def scan_barcode_camera(request):
return render(request, 'scan_barcode.html')
def get_product_by_barcode(request, barcode):
"""
Возвращает информацию о продукте по штрих-коду.
"""
try:
product = Product.objects.get(barcode=barcode)
response_data = {
"name": product.name,
"barcode": product.barcode,
"shelf_life_days": product.shelf_life_days,
"dimensions": product.dimensions,
"unit_of_measure": product.unit_of_measure,
"manufacturer": product.manufacturer,
"category": product.get_category_display(),
"storage_temperature": product.storage_temperature,
"promotion": product.get_promotion_display() if product.promotion else "Нет акции"
}
print(response_data)
return JsonResponse(response_data)
except Product.DoesNotExist:
return JsonResponse({"error": "Продукт с указанным штрих-кодом не найден"}, status=404)
@csrf_exempt
def process_barcode(request):
if request.method == 'POST':
data = json.loads(request.body)
barcode = data.get('barcode')
print(barcode)
# # Логика для обработки штрих-кода
# country_code = int(barcode[:3])
# manufacturer_code = barcode[3:7]
# product_code = barcode[7:12]
# control_digit = barcode[-1]
return get_product_by_barcode(barcode)
return JsonResponse({"error": "Метод не поддерживается"}, status=405)