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')