Refatoração do Backend das entidades

Agora todas as entidades possuem um código de rota melhor estruturado
This commit is contained in:
Eberton committed 2026-05-26 22:41:18 -03:00
1 parent d7887019f7
commit e9b54535d3
4 files changed
+229 -178

No files matched your search

+146 -112
View File
@@ -1,13 +1,47 @@
from django.shortcuts import get_object_or_404
from django.urls import reverse
from django.db.models import Prefetch
from ..models import Farm, Paddock, PaddockGroup
from ..forms import FarmCreateForm, FarmEditForm, PaddockCreateForm, PaddockEditForm, PaddockGroupCreateForm, PaddockGroupEditForm
def get_selected_farm(request):
return Farm.objects.get(id=request.session['selected_farm_id'])
def _get_selected_farm_id(request):
return request.session['selected_farm_id']
def _get_selected_farm(request):
return get_object_or_404(
Farm,
pk=_get_selected_farm_id(request),
is_active=True
)
def _get_farm_by_id(request, farm_id):
return get_object_or_404(
Farm,
pk=farm_id,
is_active=True
)
def _get_paddock_by_id(request, paddock_id):
return get_object_or_404(
Paddock,
pk=paddock_id,
farm_id=_get_selected_farm_id(request),
is_active=True
)
def _get_active_farm_paddocks(request):
return Paddock.objects.filter(
farm=_get_selected_farm(request),
is_active=True
)
def _get_paddock_group_by_id(request, paddock_group_id):
return get_object_or_404(
PaddockGroup,
pk=paddock_group_id,
is_active=True
)
# Farm Services
@@ -18,7 +52,7 @@ def get_farm_home_context(request):
context['title'] = 'Fazenda'
farms = Farm.objects.filter(
users=authenticated_user, # Verificar se da para deixar apenas = ou deve usar um is in ou algo do tipo
users=authenticated_user,
is_active=True
)
@@ -26,7 +60,6 @@ def get_farm_home_context(request):
return context
def get_farm_create_context():
form = FarmCreateForm()
@@ -38,7 +71,6 @@ def get_farm_create_context():
return context
def create_farm(request):
form = FarmCreateForm(request.POST)
authenticated_user = request.user
@@ -50,9 +82,9 @@ def create_farm(request):
return False
def update_farm(request, farm_id):
farm = get_object_or_404(Farm, pk=farm_id, is_active=True)
def get_update_farm_context(request, farm_id):
farm = _get_farm_by_id(request, farm_id)
form = FarmEditForm(instance=farm)
context = {}
context['title'] = 'Editar fazenda'
@@ -61,33 +93,41 @@ def update_farm(request, farm_id):
kwargs={'farm_id': farm.pk}
)
context['return_url'] = reverse('entities:farm:farm_list')
context['form'] = form
if request.method == 'GET':
form = FarmEditForm(instance=farm)
return context
elif request.method == 'POST':
def update_farm(request, farm_id):
farm = _get_farm_by_id(request, farm_id)
form = FarmEditForm(request.POST, instance=farm)
if form.is_valid():
form.save()
return {'redirect': 'entities:farm:farm_list'}
return True
context['form'] = form
return False
return {'context': context}
def get_farm_delete_context(request, farm_id):
farm = _get_farm_by_id(request, farm_id)
context = {}
context['description'] = f"Excluir registro da fazenda {farm.name}"
context['positive_url'] = reverse(
'entities:farm:farm_delete',
kwargs={'farm_id': farm_id}
)
context['negative_url'] = reverse('entities:farm:farm_list')
def delete_farm(farm_id):
farm = get_object_or_404(Farm, pk=farm_id, is_active=True)
return context
def delete_farm(request, farm_id):
farm = _get_farm_by_id(request, farm_id)
farm.is_active = False
farm.save()
# Paddock Services
def create_paddock(request):
selected_farm = get_selected_farm(request)
if request.method == 'GET':
def get_paddock_create_context():
form = PaddockCreateForm()
context = {
@@ -97,85 +137,69 @@ def create_paddock(request):
'return_url': reverse('entities:farm:paddock_list')
}
return {'context': context}
return context
elif request.method == 'POST':
def create_paddock(request):
form = PaddockCreateForm(request.POST)
selected_farm = _get_selected_farm(request)
if form.is_valid():
paddock = form.save(commit=False)
paddock.farm = selected_farm
paddock.save()
return {'redirect': 'entities:farm:paddock_list'}
return True
context = {
'title': 'Novo Piquete',
'form': form,
'action_url': reverse('entities:farm:paddock_create'),
'return_url': reverse('entities:farm:paddock_list')
}
return False
return {'context': context}
def update_paddock(request, paddock_id):
farm_id = request.session['selected_farm_id']
paddock = get_object_or_404(Paddock, pk=paddock_id, farm_id=farm_id, is_active=True)
context = {}
context['title'] = 'Editar piquete'
context['action_url'] = reverse(
'entities:farm:paddock_update',
kwargs={'paddock_id': paddock.pk}
)
context['return_url'] = reverse('entities:farm:paddock_list')
if request.method == 'GET':
def get_paddock_update_context(request, paddock_id):
paddock = _get_paddock_by_id(request, paddock_id)
form = PaddockEditForm(instance=paddock)
elif request.method == 'POST':
context = {
'title': 'Editar piquete',
'action_url': reverse(
'entities:farm:paddock_update',
kwargs={'paddock_id': paddock.pk}
),
'return_url': reverse('entities:farm:paddock_list'),
'form': form
}
return context
def update_paddock(request, paddock_id):
paddock = _get_paddock_by_id(request, paddock_id)
form = PaddockEditForm(request.POST, instance=paddock)
if form.is_valid():
form.save()
return {'redirect': 'entities:farm:paddock_list'}
return True
context['form'] = form
return False
return {'context': context}
def get_paddock_delete_context(request, paddock_id):
paddock = _get_paddock_by_id(request, paddock_id)
context = {}
context['description'] = f"Excluir registro do piquete {paddock.identifier}"
context['positive_url'] = reverse(
'entities:farm:paddock_delete',
kwargs={'paddock_id': paddock_id}
)
context['negative_url'] = reverse('entities:farm:paddock_list')
def delete_paddock(paddock_id):
paddock = get_object_or_404(Paddock, pk=paddock_id, is_active=True)
return context
def delete_paddock(request, paddock_id):
paddock = _get_paddock_by_id(request, paddock_id)
paddock.is_active = False
paddock.save()
# Paddock Group Services
def create_paddock_group(request):
selected_farm = get_selected_farm(request)
if request.method == 'GET':
def get_paddock_group_create_context(request):
form = PaddockGroupCreateForm()
form.fields['paddocks'].queryset = Paddock.objects.filter(
farm=selected_farm,
is_active=True
)
if request.method == 'POST':
form = PaddockGroupCreateForm(request.POST)
if form.is_valid():
paddock_group = form.save(commit=False)
paddock_group.save()
return {'redirect': 'entities:farm:paddock_group_list'}
form.fields['paddocks'].queryset = Paddock.objects.filter(
farm=selected_farm,
is_active=True
)
context = {
'title': 'Novo Bloco',
@@ -184,56 +208,66 @@ def create_paddock_group(request):
'return_url': reverse('entities:farm:paddock_group_list')
}
return {'context': context}
return context
def update_paddock_group(request, paddock_group_id):
selected_farm = get_selected_farm(request)
paddock_group = get_object_or_404(PaddockGroup, pk=paddock_group_id, is_active=True)
context = {
'title': f'Editar Lote {paddock_group.identifier}',
'return_url': reverse('entities:farm:paddock_group_list')
}
if request.method == 'GET':
form = PaddockGroupEditForm(instance=paddock_group)
form.fields['paddocks'].queryset = Paddock.objects.filter(
farm=selected_farm,
is_active=True
)
context['action_url'] = reverse(
'entities:farm:paddock_group_update',
kwargs={'paddock_group_id': paddock_group.pk}
)
elif request.method == 'POST':
form = PaddockGroupEditForm(request.POST, instance=paddock_group)
def create_paddock_group(request):
form = PaddockGroupCreateForm(request.POST)
if form.is_valid():
paddock_group = form.save()
paddock_group.save()
form.save()
return True
return {'redirect': 'entities:farm:paddock_group_list'}
return False
form.fields['paddocks'].queryset = Paddock.objects.filter(
farm=selected_farm,
is_active=True
)
def get_paddock_group_update_context(request, paddock_group_id):
paddock_group = _get_paddock_group_by_id(request, paddock_group_id)
context['action_url'] = reverse(
form = PaddockGroupEditForm(instance=paddock_group)
context = {
'title': f'Editar Bloco {paddock_group.identifier}',
'action_url': reverse(
'entities:farm:paddock_group_update',
kwargs={'paddock_group_id': paddock_group.pk}
),
'return_url': reverse('entities:farm:paddock_group_list'),
'form': form
}
return context
def update_paddock_group(request, paddock_group_id):
paddock_group = _get_paddock_group_by_id(request, paddock_group_id)
form = PaddockGroupEditForm(
request.POST,
instance=paddock_group
)
context['form'] = form
if form.is_valid():
form.save()
return True
return {'context': context}
return False
def get_paddock_group_delete_context(request, paddock_group_id):
paddock_group = _get_paddock_group_by_id(request, paddock_group_id)
def delete_paddock_group(paddock_group_id):
paddock_group = get_object_or_404(PaddockGroup, pk=paddock_group_id, is_active=True)
context = {}
context['description'] = (
f"Excluir registro do bloco {paddock_group.identifier}"
)
context['positive_url'] = reverse(
'entities:farm:paddock_group_delete',
kwargs={'paddock_group_id': paddock_group_id}
)
context['negative_url'] = reverse(
'entities:farm:paddock_group_list'
)
return context
def delete_paddock_group(request, paddock_group_id):
paddock_group = _get_paddock_group_by_id(request, paddock_group_id)
paddock_group.is_active = False
paddock_group.save()
+14 -19
View File
@@ -8,34 +8,29 @@ from ..forms import UserLoginForm
def user_profile(request): # TO DO
...
def get_user_login_context(request):
context = {}
form = UserLoginForm()
context['fail_login'] = False
context['form'] = form
return context
def user_login(request):
if request.user.is_authenticated:
return {'redirect': 'entities:user:farm_select'}
context = {}
context['fail_login'] = False
form = UserLoginForm()
if request.method == "POST":
form = UserLoginForm(request.POST)
if form.is_valid():
if not form.is_valid():
return False
username = form.cleaned_data['login']
password = form.cleaned_data['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
context['title'] = 'Fazendas'
return {'redirect': 'entities:user:farm_select'}
else:
context['fail_login'] = True
else:
context['fail_login'] = True
if user is None:
return False
context['form'] = form
return {'context': context}
login(request, user)
return True
def user_logout(request):
+58 -43
View File
@@ -1,4 +1,3 @@
from django.views.decorators.http import require_http_methods
from django.shortcuts import redirect, render
from core.decorators import farm_required
from ..services import farm as services
@@ -12,97 +11,113 @@ def farm_home(request):
@farm_required
def farm_create(request):
if request.method == 'GET':
context = services.get_farm_create_context()
if request.method == 'GET':
return render(request, 'farm/farm_create.html', context)
elif request.method == 'POST':
success = services.create_farm(request)
if success:
if request.method == 'POST':
if services.create_farm(request):
return redirect('entities:farm:farm_list')
return redirect('entities:farm:farm_create')
context['error'] = "Não foi possível criar a fazenda"
return render(request, 'farm/farm_create.html', context)
@farm_required
def farm_update(request, farm_id):
result = services.update_farm(request, farm_id)
if result.get('redirect'):
return redirect(result['redirect'])
return render(request, 'farm/farm_update.html', result['context'])
context = services.get_update_farm_context(request, farm_id)
if request.method == 'GET':
return render(request, 'farm/farm_update.html', context)
if request.method == 'POST':
if services.update_farm(request, farm_id):
return redirect('entities:farm:farm_home')
context['error'] = "Não foi possível editar a fazenda"
return render(request, 'farm/farm_update.html', context)
@farm_required
@require_http_methods(["POST"])
def farm_delete(request, farm_id):
if request.method == 'GET':
context = services.get_farm_delete_context(request, farm_id)
return render(request, 'confirmation_popup.html', context)
if request.method == 'POST':
services.delete_farm(request, farm_id)
return redirect('entities:farm:farm_create')
# Paddock Views
@farm_required
def paddock_create(request):
if request.method == 'GET':
context = services.get_paddock_create_context()
if request.method == 'GET':
return render(request, 'paddock/paddock_create.html', context)
elif request.method == 'POST':
success = services.create_paddock(request)
if success:
if request.method == 'POST':
if services.create_paddock(request):
return redirect('entities:farm:paddock_list')
return redirect('entities:farm:paddock_create')
context['error'] = "Não foi possível criar o piquete"
return render(request, 'paddock/paddock_create.html', context)
@farm_required
def paddock_update(request, paddock_id):
result = services.update_paddock(request, paddock_id)
if result.get('redirect'):
return redirect(result['redirect'])
return render(request, 'paddock/paddock_update.html', result['context'])
context = services.get_paddock_update_context(request, paddock_id)
if request.method == 'GET':
return render(request, 'paddock/paddock_update.html', context)
if request.method == 'POST':
if services.update_paddock(request, paddock_id):
return redirect('entities:farm:paddock_list')
context['error'] = "Não foi possível editar o piquete"
return render(request, 'paddock/paddock_update.html', context)
@farm_required
@require_http_methods(["POST"])
def paddock_delete(request, paddock_id):
if request.method == 'GET':
context = services.get_paddock_delete_context(request, paddock_id)
return render(request, 'confirmation_popup.html', context)
if request.method == 'POST':
services.delete_paddock(request, paddock_id)
return redirect('entities:farm:paddock_list')
# Paddock Group Views
@farm_required
def paddock_group_create(request):
context = services.get_paddock_group_create_context(request)
if request.method == 'GET':
context = services.get_paddock_group_create_context()
return render(request, 'paddock_group/paddock_group_create.html', context)
elif request.method == 'POST':
success = services.create_paddock_group(request)
if success:
if request.method == 'POST':
if services.create_paddock_group(request):
return redirect('entities:farm:paddock_group_list')
return redirect('entities:farm:paddock_group_create')
context['error'] = "Não foi possível criar o bloco"
return render(request, 'paddock_group/paddock_group_create.html', context)
@farm_required
def paddock_group_update(request, paddock_group_id):
result = services.update_paddock_group(request, paddock_group_id)
context = services.get_paddock_group_update_context(request, paddock_group_id)
if result.get('redirect'):
return redirect(result['redirect'])
if request.method == 'GET':
return render(request, 'paddock_group/paddock_group_update.html', context)
return render(request, 'paddock_group/paddock_group_update.html', result['context'])
if request.method == 'POST':
if services.update_paddock_group(request, paddock_group_id):
return redirect('entities:farm:paddock_group_list')
context['error'] = "Não foi possível editar o bloco"
return render(request, 'paddock_group/paddock_group_update.html', context)
@farm_required
@require_http_methods(["POST"])
def paddock_group_delete(request, paddock_group_id):
if request.method == 'GET':
context = services.get_paddock_group_delete_context(request, paddock_group_id)
return render(request, 'confirmation_popup.html', context)
if request.method == 'POST':
services.delete_paddock_group(request, paddock_group_id)
return redirect('entities:farm:paddock_group_list')
+11 -4
View File
@@ -7,13 +7,20 @@ def user_profile(request): # TO DO
def user_login(request):
result = services.user_login(request)
if request.user.is_authenticated:
return redirect('entities:user:farm_select')
if result.get('redirect'):
return redirect(result['redirect'])
context = services.get_user_login_context(request)
return render(request, 'login.html', result['context'])
if request.method == 'GET':
return render(request, 'login.html', context)
if request.method == 'POST':
if not services.user_login(request):
context['fail_login'] = True
return render(request, 'login.html', context)
return redirect('entities:user:farm_select')
def user_logout(request):
return services.user_logout(request)