Projeto ainda em desenvolvimento. Enviado para o repositório para manter estado atual.
88 lines
2.3 KiB
Python
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') |