85 lines
2.9 KiB
Python
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) |