Files
multigranja/multigranja/apps/entities/services/user.py
T
Eberton 24650484f1 Envio do estado atual do projeto
Projeto ainda em desenvolvimento.
Enviado para o repositório para manter estado atual.
2026-03-29 15:28:16 -03:00

88 lines
2.3 KiB
Python

from django.shortcuts import redirect
from django.contrib.auth import authenticate, login, logout
from django.db.models import Count
from ..forms import UserLoginForm
def user_profile(request): # TO DO
...
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():
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
context['form'] = form
return {'context': context}
def user_logout(request):
logout(request)
return redirect('entities:user:user_login')
def user_signin(request): # TO DO
...
def farm_select(request):
if 'selected_farm_id' in request.session:
return {'redirect': 'entities:farm:farm_home'}
farms_query = request.user.farms.filter(is_active=True)
farms_with_counts = farms_query.annotate(
total_animals=Count('animals'),
total_paddocks=Count('paddocks')
)
context = {
'farms': farms_with_counts
}
return {'context': context}
def farm_set(request, farm_id=None):
# Allows setting the selected farm either via URL parameter or POST data
farm_id = farm_id or request.POST.get("farm_id")
next_url = request.POST.get("next")
if not farm_id:
return redirect('entities:user:farm_select')
try:
farm = request.user.farms.get(id=farm_id)
request.session['selected_farm_id'] = farm.id
return redirect(next_url or 'entities:farm:farm_home')
except request.user.farms.model.DoesNotExist:
return redirect('entities:user:farm_select')
def farm_deselect(request):
if 'selected_farm_id' in request.session:
del request.session['selected_farm_id']
return redirect('entities:user:farm_select')