refactor: migrar a supabase, aplicar cia y poo a gastos
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
import re
|
||||
|
||||
def refactor_views():
|
||||
with open('expenses/views.py', 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
# Imports to add
|
||||
imports = """from django.views.generic import ListView, CreateView, UpdateView, DeleteView
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.urls import reverse_lazy
|
||||
from .mixins import RoleRequiredMixin
|
||||
"""
|
||||
if 'ListView' not in content:
|
||||
content = content.replace("from django.shortcuts import render, redirect, get_object_or_404", imports + "\nfrom django.shortcuts import render, redirect, get_object_or_404")
|
||||
|
||||
# Replace expense_list
|
||||
old_list_view = """@login_required
|
||||
def expense_list(request):
|
||||
expenses = Expense.objects.select_related('project', 'category', 'user').order_by('-date')
|
||||
|
||||
# Filtros
|
||||
project_id = request.GET.get('project')
|
||||
category_id = request.GET.get('category')
|
||||
|
||||
if project_id:
|
||||
expenses = expenses.filter(project_id=project_id)
|
||||
if category_id:
|
||||
expenses = expenses.filter(category_id=category_id)
|
||||
|
||||
context = {
|
||||
'expenses': expenses,
|
||||
'projects': Project.objects.all(),
|
||||
'categories': Category.objects.all(),
|
||||
'selected_project': project_id,
|
||||
'selected_category': category_id,
|
||||
}
|
||||
return render(request, 'expenses/expense_list.html', context)"""
|
||||
|
||||
new_list_view = """class ExpenseListView(LoginRequiredMixin, ListView):
|
||||
model = Expense
|
||||
template_name = 'expenses/expense_list.html'
|
||||
context_object_name = 'expenses'
|
||||
|
||||
def get_queryset(self):
|
||||
queryset = super().get_queryset().select_related('project', 'category', 'user').order_by('-date')
|
||||
project_id = self.request.GET.get('project')
|
||||
category_id = self.request.GET.get('category')
|
||||
|
||||
if project_id:
|
||||
queryset = queryset.filter(project_id=project_id)
|
||||
if category_id:
|
||||
queryset = queryset.filter(category_id=category_id)
|
||||
return queryset
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context['projects'] = Project.objects.all()
|
||||
context['categories'] = Category.objects.all()
|
||||
context['selected_project'] = self.request.GET.get('project')
|
||||
context['selected_category'] = self.request.GET.get('category')
|
||||
return context"""
|
||||
|
||||
content = content.replace(old_list_view, new_list_view)
|
||||
|
||||
with open('expenses/views.py', 'w', encoding='utf-8') as f:
|
||||
f.write(content)
|
||||
|
||||
def refactor_urls():
|
||||
with open('config/urls.py', 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
# Check if expense_list is imported
|
||||
if 'expense_list' in content:
|
||||
content = content.replace('expense_list', 'ExpenseListView')
|
||||
content = content.replace("path('gastos/', views.expense_list, name='expense_list')", "path('gastos/', views.ExpenseListView.as_view(), name='expense_list')")
|
||||
|
||||
with open('config/urls.py', 'w', encoding='utf-8') as f:
|
||||
f.write(content)
|
||||
|
||||
if __name__ == '__main__':
|
||||
refactor_views()
|
||||
refactor_urls()
|
||||
print("Refactorización a POO (CBV) completada para expense_list.")
|
||||
Reference in New Issue
Block a user