38086-vm/patch_views.py
2026-02-05 12:52:12 +00:00

85 lines
2.9 KiB
Python

import re
file_path = 'core/views.py'
with open(file_path, 'r') as f:
content = f.read()
# 1. Add Device to imports
if 'Device' not in content:
pattern = r'(from \.models import \(.*?)(\))'
replacement = r'\1, Device\2'
content = re.sub(pattern, replacement, content, flags=re.DOTALL)
print("Added Device to imports.")
# 2. Update settings_view
if 'devices = Device.objects.all()' not in content:
# Find the lines before context creation
search_str = 'loyalty_tiers = LoyaltyTier.objects.all().order_by("min_points")'
insert_str = '\n devices = Device.objects.all().order_by("name")'
content = content.replace(search_str, search_str + insert_str)
# Update context
context_search = '"loyalty_tiers": loyalty_tiers'
context_insert = ',\n "devices": devices'
content = content.replace(context_search, context_search + context_insert)
print("Updated settings_view.")
# 3. Add Device views
new_views = """
@login_required
def add_device(request):
if request.method == 'POST':
name = request.POST.get('name')
device_type = request.POST.get('device_type')
connection_type = request.POST.get('connection_type')
ip_address = request.POST.get('ip_address')
port = request.POST.get('port')
is_active = request.POST.get('is_active') == 'on'
Device.objects.create(
name=name,
device_type=device_type,
connection_type=connection_type,
ip_address=ip_address if ip_address else None,
port=port if port else None,
is_active=is_active
)
messages.success(request, _("Device added successfully!"))
return redirect(reverse('settings') + '#devices')
@login_required
def edit_device(request, pk):
device = get_object_or_404(Device, pk=pk)
if request.method == 'POST':
device.name = request.POST.get('name')
device.device_type = request.POST.get('device_type')
device.connection_type = request.POST.get('connection_type')
device.ip_address = request.POST.get('ip_address')
device.port = request.POST.get('port')
device.is_active = request.POST.get('is_active') == 'on'
if not device.ip_address:
device.ip_address = None
if not device.port:
device.port = None
device.save()
messages.success(request, _("Device updated successfully!"))
return redirect(reverse('settings') + '#devices')
@login_required
def delete_device(request, pk):
device = get_object_or_404(Device, pk=pk)
device.delete()
messages.success(request, _("Device deleted successfully!"))
return redirect(reverse('settings') + '#devices')
"""
if 'def add_device(request):' not in content:
content += new_views
print("Added Device views.")
with open(file_path, 'w') as f:
f.write(content)