121 lines
3.4 KiB
Python
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')
|