Refatoração do Backend das entidades
Agora todas as entidades possuem um código de rota melhor estruturado
This commit is contained in:
1 parent
d7887019f7
commit
e9b54535d3
4 files changed
+229
-178
No files matched your search
@@ -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()
|
||||
@@ -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):
|
||||
|
||||
@@ -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')
|
||||
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user