oasupport/clientapp/views.py
2025-12-03 11:16:47 +03:00

121 lines
3.4 KiB
Python

from django.shortcuts import render, redirect
from .models import Call, AddMessage
from .forms import CallForm, LoginForm, AddMessageForm
from django.views.generic import DetailView
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin
# LOGIN / LOGOUT
def loginView(request):
form = LoginForm(request.POST or None)
context = {
'form': form,
}
if form.is_valid():
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user:
login(request, user)
if user.is_staff == False:
return redirect('home')
else:
return redirect('staffhome')
else:
return render(request, 'clientapp/login.html', context)
def logoutView(request):
logout(request)
return redirect('login')
# CALLS / ARCHIVE
@login_required(login_url='login')
def homeView(request):
calls = Call.objects.filter(author__company=request.user.company).filter(is_archived=False)
context = {
'title': 'Главная страница',
'calls': calls
}
if request.user.is_staff == False:
return render(request, 'clientapp/index.html', context)
else:
return redirect('staffhome')
@login_required(login_url='login')
def callsArchiveView(request):
calls = Call.objects.order_by('-id').filter(author__company=request.user.company).filter(is_archived=True)
context = {
'title': 'Архив обращений',
'calls': calls
}
return render(request, 'clientapp/archive.html', context)
@login_required(login_url='login')
def callCreateView(request):
error = ''
if request.method == 'POST':
form = CallForm(request.POST)
if form.is_valid():
form = form.save(commit=False)
form.author = request.user
form.save()
return redirect('home')
else:
error = 'Форма была неверной. Попробуйте еще раз.'
form = CallForm()
context = {
'form': form,
'error': error,
'title': 'Создание нового обращения'
}
return render(request, 'clientapp/addnewcall.html', context)
@login_required(login_url='login')
def callDetailView(request, call_id):
call = Call.objects.get(id=call_id)
add_messages = AddMessage.objects.filter(call=call_id).order_by('created')
form = AddMessageForm(request.POST)
if request.method == 'POST':
if form.is_valid():
form = form.save(commit=False)
form.author = request.user
form.call = call
form.save()
return redirect('call-detail', call_id)
context = {
'call': call,
'add_messages': add_messages,
'form': form
}
return render(request, 'clientapp/call.html', context)
@login_required(login_url='login')
def staffHomeView(request):
calls = Call.objects.filter(is_archived=False)
context = {
'title': 'STAFF: Главная страница',
'calls': calls
}
if request.user.is_staff == True:
return render(request, 'clientapp/staffhome.html', context)
else:
return redirect('home')