
import re

with open('core/views.py', 'r') as f:
    content = f.read()

with open('core/patch_views_vat.py', 'r') as f:
    new_func = f.read()

# Regex to find the function definition
# It starts with @csrf_exempt\ndef create_sale_api(request):
# And ends before the next function definition (which likely starts with @ or def)
pattern = r"@csrf_exempt\s+def create_sale_api(request):.*?return JsonResponse({'success': False, 'error': 'Invalid request'}, status=405)"

# Note: The pattern needs to match the indentation and multiline content.
# Since regex for code blocks is tricky, I will use a simpler approach:
# 1. Read the file lines.
# 2. Find start line of create_sale_api.
# 3. Find the end line (start of next function or end of file).
# 4. Replace lines.

lines = content.splitlines()
start_index = -1
end_index = -1

for i, line in enumerate(lines):
    if line.strip() == "def create_sale_api(request):":
        # Check if previous line is decorator
        if i > 0 and lines[i-1].strip() == "@csrf_exempt":
            start_index = i - 1
        else:
            start_index = i
        break

if start_index != -1:
    # Find the next function or end
    # We look for next line starting with 'def ' or '@' at top level
    for i in range(start_index + 1, len(lines)):
        if lines[i].startswith("def ") or lines[i].startswith("@"):
            end_index = i
            break
    if end_index == -1:
        end_index = len(lines)

    # Replace
    new_lines = new_func.splitlines()
    # Ensure new lines have correct indentation if needed (but views.py is top level mostly)
    
    # We need to preserve the imports and structure.
    # The new_func is complete.
    
    final_lines = lines[:start_index] + new_lines + lines[end_index:]
    
    with open('core/views.py', 'w') as f:
        f.write('\n'.join(final_lines))
    print("Successfully patched create_sale_api")
else:
    print("Could not find create_sale_api function")
