from django.http import JsonResponse from django.views import View # Таблица стран COUNTRY_CODES = { range(0, 140): "США и Канада", range(200, 300): "Внутренний код предприятия", range(300, 380): "Франция", 380: "Болгария", 482: "Украина", # Добавьте остальные страны из таблицы } def get_country(code): """Получение страны по коду.""" for code_range, country in COUNTRY_CODES.items(): if isinstance(code_range, range) and code in code_range: return country elif code == code_range: return country return "Неизвестная страна" def validate_barcode(barcode): """Проверка валидности штрих-кода.""" if len(barcode) != 13 or not barcode.isdigit(): return False, "Штрих-код должен содержать 13 цифр." # Проверка контрольной цифры even_sum = sum(int(barcode[i]) for i in range(1, 12, 2)) odd_sum = sum(int(barcode[i]) for i in range(0, 12, 2)) control_digit = (10 - ((even_sum * 3 + odd_sum) % 10)) % 10 if control_digit != int(barcode[-1]): return False, "Контрольная цифра не совпадает." return True, "Штрих-код валиден." class BarcodeView(View): def post(self, request): barcode = request.POST.get("barcode", "").strip() # Валидация штрих-кода is_valid, message = validate_barcode(barcode) if not is_valid: return JsonResponse({"error": message}, status=400) # Расшифровка штрих-кода country_code = int(barcode[:3]) manufacturer_code = barcode[3:7] product_code = barcode[7:12] control_digit = barcode[-1] country = get_country(country_code) response = { "barcode": barcode, "country": country, "manufacturer_code": manufacturer_code, "product_code": product_code, "control_digit": control_digit, } return JsonResponse(response, status=200)