from django.shortcuts import render from django.http import JsonResponse from django.apps import apps from datetime import date # View to render the table page def excel_table_view(request): # Fetch existing entries from both tables entries_table1 = apps.get_model('sheets', 'ExcelEntry').objects.all() entries_table2 = apps.get_model('sheets', 'SecondTableEntry').objects.all() return render(request, 'excel_table.html', { 'entries_table1': entries_table1, 'entries_table2': entries_table2, }) # Generic view to add a new row to any table def add_entry(request, model_name): if request.method == 'POST': try: # Dynamically get the model model = apps.get_model('sheets', model_name) # Get data from the request name = request.POST.get('name', 'New Name') age = int(request.POST.get('age', 0)) email = request.POST.get('email', 'example@email.com') # Create a new entry entry = model.objects.create( name=name, age=age, email=email, date_joined=date.today() ) # Return the new entry as JSON response return JsonResponse({ 'id': entry.id, 'name': entry.name, 'age': entry.age, 'email': entry.email, 'date_joined': entry.date_joined.strftime('%Y-%m-%d'), }) except Exception as e: return JsonResponse({'status': 'error', 'message': str(e)}, status=400) return JsonResponse({'status': 'error', 'message': 'Invalid request'}, status=400) # Generic view to update an entry in any table def update_entry(request, model_name): if request.method == 'POST': try: # Dynamically get the model model = apps.get_model('sheets', model_name) # Get data from the request entry_id = int(request.POST.get('id')) name = request.POST.get('name') age = int(request.POST.get('age')) email = request.POST.get('email') # Fetch the entry to be updated entry = model.objects.get(id=entry_id) # Update the entry with new data entry.name = name entry.age = age entry.email = email entry.save() # Return the updated entry as a JSON response return JsonResponse({ 'status': 'success', 'id': entry.id, 'name': entry.name, 'age': entry.age, 'email': entry.email, 'date_joined': entry.date_joined.strftime('%Y-%m-%d'), }) except model.DoesNotExist: return JsonResponse({'status': 'error', 'message': 'Entry not found'}, status=404) except Exception as e: return JsonResponse({'status': 'error', 'message': str(e)}, status=400) return JsonResponse({'status': 'error', 'message': 'Invalid request'}, status=400) # Generic view to delete an entry from any table def delete_entry(request, model_name): if request.method == 'POST': try: # Dynamically get the model model = apps.get_model('sheets', model_name) # Get the entry ID from the request entry_id = request.POST.get('id') # Find the entry by its ID and delete it entry = model.objects.get(id=entry_id) entry.delete() # Return success response return JsonResponse({'status': 'success', 'message': 'Entry deleted'}) except model.DoesNotExist: return JsonResponse({'status': 'error', 'message': 'Entry not found'}, status=404) except Exception as e: return JsonResponse({'status': 'error', 'message': str(e)}, status=400) return JsonResponse({'status': 'error', 'message': 'Invalid request'}, status=400)