Small views.py refactor
This commit is contained in:
parent
7f837d9944
commit
f65eb54652
@ -1,4 +1,5 @@
|
|||||||
from smtplib import SMTPException
|
from smtplib import SMTPException
|
||||||
|
from typing import Dict, Any
|
||||||
|
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
@ -11,14 +12,13 @@ from django.contrib.contenttypes.models import ContentType
|
|||||||
from django.contrib.messages.views import SuccessMessageMixin
|
from django.contrib.messages.views import SuccessMessageMixin
|
||||||
from django.core.handlers.wsgi import WSGIRequest
|
from django.core.handlers.wsgi import WSGIRequest
|
||||||
from django.http import HttpResponseRedirect, HttpResponse
|
from django.http import HttpResponseRedirect, HttpResponse
|
||||||
from django.shortcuts import render, redirect, get_list_or_404
|
from django.shortcuts import render, redirect
|
||||||
from django.urls import reverse_lazy, reverse
|
from django.urls import reverse_lazy, reverse
|
||||||
from django.views.generic import FormView
|
from django.views.generic import FormView
|
||||||
from django_registration.views import RegistrationView
|
from django_registration.views import RegistrationView
|
||||||
# Django REST
|
# Django REST
|
||||||
from rest_framework import viewsets
|
from rest_framework import viewsets
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from zenpy.lib.api_objects import User as ZenpyUser
|
|
||||||
|
|
||||||
from access_controller.settings import DEFAULT_FROM_EMAIL, ZENDESK_ROLES, ZENDESK_MAX_AGENTS
|
from access_controller.settings import DEFAULT_FROM_EMAIL, ZENDESK_ROLES, ZENDESK_MAX_AGENTS
|
||||||
from main.extra_func import check_user_exist, update_profile, get_user_organization, \
|
from main.extra_func import check_user_exist, update_profile, get_user_organization, \
|
||||||
@ -31,9 +31,7 @@ from .models import UserProfile
|
|||||||
|
|
||||||
|
|
||||||
def setup_context(profile_lit: bool = False, control_lit: bool = False, work_lit: bool = False,
|
def setup_context(profile_lit: bool = False, control_lit: bool = False, work_lit: bool = False,
|
||||||
registration_lit: bool = False, login_lit: bool = False, stats_lit: bool = False):
|
registration_lit: bool = False, login_lit: bool = False, stats_lit: bool = False) -> Dict[str, Any]:
|
||||||
|
|
||||||
print(profile_lit, control_lit, work_lit, registration_lit, login_lit)
|
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
'profile_lit': profile_lit,
|
'profile_lit': profile_lit,
|
||||||
@ -160,18 +158,6 @@ def profile_page(request: WSGIRequest) -> HttpResponse:
|
|||||||
return render(request, 'pages/profile.html', context)
|
return render(request, 'pages/profile.html', context)
|
||||||
|
|
||||||
|
|
||||||
def auth_user(request: WSGIRequest) -> ZenpyUser:
|
|
||||||
"""
|
|
||||||
Функция возвращает профиль пользователя на Zendesk.
|
|
||||||
|
|
||||||
:param request: email, subdomain и token пользователя
|
|
||||||
:return: объект пользователя Zendesk
|
|
||||||
"""
|
|
||||||
admin = zenpy.admin
|
|
||||||
zenpy_user: ZenpyUser = admin.users.search(request.user.email).values[0]
|
|
||||||
return zenpy_user, admin
|
|
||||||
|
|
||||||
|
|
||||||
@login_required()
|
@login_required()
|
||||||
def work_page(request: WSGIRequest, id: int) -> HttpResponse:
|
def work_page(request: WSGIRequest, id: int) -> HttpResponse:
|
||||||
"""
|
"""
|
||||||
@ -186,7 +172,6 @@ def work_page(request: WSGIRequest, id: int) -> HttpResponse:
|
|||||||
engineers = []
|
engineers = []
|
||||||
light_agents = []
|
light_agents = []
|
||||||
for user in users:
|
for user in users:
|
||||||
|
|
||||||
if user.custom_role_id == ZENDESK_ROLES['engineer']:
|
if user.custom_role_id == ZENDESK_ROLES['engineer']:
|
||||||
engineers.append(user)
|
engineers.append(user)
|
||||||
elif user.custom_role_id == ZENDESK_ROLES['light_agent']:
|
elif user.custom_role_id == ZENDESK_ROLES['light_agent']:
|
||||||
@ -207,39 +192,38 @@ def work_page(request: WSGIRequest, id: int) -> HttpResponse:
|
|||||||
@login_required()
|
@login_required()
|
||||||
def work_hand_over(request: WSGIRequest) -> HttpResponseRedirect:
|
def work_hand_over(request: WSGIRequest) -> HttpResponseRedirect:
|
||||||
"""
|
"""
|
||||||
Функция позволяет текущему пользователю (login_required) сдать права, а именно сменить в Zendesk роль с "engineer" на "light agent"
|
Функция позволяет текущему пользователю сдать права, а именно сменить в Zendesk роль с "engineer" на "light_agent"
|
||||||
и установить роль "agent" в БД. Действия выполняются, если исходная роль пользователя "engineer".
|
|
||||||
|
|
||||||
:param request: данные текущего пользователя (login_required)
|
:param request: данные текущего пользователя (login_required)
|
||||||
:return: перезагрузка текущей страницы после выполнения смены роли
|
:return: перезагрузка текущей страницы после выполнения смены роли
|
||||||
"""
|
"""
|
||||||
make_light_agent(request.user.userprofile,request.user)
|
make_light_agent(request.user.userprofile, request.user)
|
||||||
return HttpResponseRedirect(reverse('work', args=(request.user.id,)))
|
return HttpResponseRedirect(reverse('work', args=(request.user.id,)))
|
||||||
|
|
||||||
|
|
||||||
@login_required()
|
@login_required()
|
||||||
def work_become_engineer(request: WSGIRequest) -> HttpResponseRedirect:
|
def work_become_engineer(request: WSGIRequest) -> HttpResponseRedirect:
|
||||||
"""
|
"""
|
||||||
Функция меняет роль пользователя в Zendesk на "engineer" и присваивает роль "agent" в БД (в случае, если исходная роль пользователя была "light_agent").
|
Функция позволяет текущему пользователю получить права, а именно сменить в Zendesk роль с "light_agent" на "engineer"
|
||||||
|
|
||||||
:param request: данные текущего пользователя (login_required)
|
:param request: данные текущего пользователя (login_required)
|
||||||
:return: перезагрузка текущей страницы после выполнения смены роли
|
:return: перезагрузка текущей страницы после выполнения смены роли
|
||||||
"""
|
"""
|
||||||
zenpy_user, admin = auth_user(request)
|
|
||||||
|
|
||||||
make_engineer(request.user.userprofile,request.user)
|
make_engineer(request.user.userprofile, request.user)
|
||||||
return HttpResponseRedirect(reverse('work', args=(request.user.id,)))
|
return HttpResponseRedirect(reverse('work', args=(request.user.id,)))
|
||||||
|
|
||||||
|
|
||||||
@login_required()
|
@login_required()
|
||||||
def work_get_tickets(request):
|
def work_get_tickets(request):
|
||||||
zenpy_user, admin = auth_user(request)
|
|
||||||
count_tickets = int(request.GET["count_tickets"])
|
count_tickets = int(request.GET["count_tickets"])
|
||||||
tickets = [ticket for ticket in admin.search(type="ticket") if ticket.group.name == 'Сменная группа' and ticket.assignee is None]
|
tickets = [ticket for ticket in zenpy.admin.search(type="ticket") if
|
||||||
|
ticket.group.name == 'Сменная группа' and ticket.assignee is None]
|
||||||
for i in range(len(tickets)):
|
for i in range(len(tickets)):
|
||||||
if i == count_tickets:
|
if i == count_tickets:
|
||||||
return HttpResponseRedirect(reverse('work', args=(request.user.id,)))
|
return HttpResponseRedirect(reverse('work', args=(request.user.id,)))
|
||||||
tickets[i].assignee = zenpy_user
|
tickets[i].assignee = zenpy.get_user(request.user.email)
|
||||||
admin.tickets.update(tickets[i])
|
zenpy.admin.tickets.update(tickets[i])
|
||||||
return HttpResponseRedirect(reverse('work', args=(request.user.id,)))
|
return HttpResponseRedirect(reverse('work', args=(request.user.id,)))
|
||||||
|
|
||||||
|
|
||||||
@ -378,16 +362,16 @@ def statistic_page(request: WSGIRequest) -> HttpResponse:
|
|||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
start_date, end_date = form.cleaned_data['range_start'], form.cleaned_data['range_end']
|
start_date, end_date = form.cleaned_data['range_start'], form.cleaned_data['range_end']
|
||||||
interval, show = form.cleaned_data['interval'], form.cleaned_data['display_format']
|
interval, show = form.cleaned_data['interval'], form.cleaned_data['display_format']
|
||||||
Data = StatisticData(start_date, end_date, form.cleaned_data['email'])
|
data = StatisticData(start_date, end_date, form.cleaned_data['email'])
|
||||||
Data.set_display(show)
|
data.set_display(show)
|
||||||
Data.set_interval(interval)
|
data.set_interval(interval)
|
||||||
stats = Data.get_statistic()
|
stats = data.get_statistic()
|
||||||
if Data.errors:
|
if data.errors:
|
||||||
context['errors'] = Data.errors
|
context['errors'] = data.errors
|
||||||
if Data.warnings:
|
if data.warnings:
|
||||||
context['warnings'] = Data.warnings
|
context['warnings'] = data.warnings
|
||||||
context['log_stats'] = stats if not context['errors'] else None
|
context['log_stats'] = stats if not context['errors'] else None
|
||||||
if request.method == 'GET':
|
elif request.method == 'GET':
|
||||||
form = StatisticForm()
|
form = StatisticForm()
|
||||||
context['form'] = form
|
context['form'] = form
|
||||||
return render(request, 'pages/statistic.html', context)
|
return render(request, 'pages/statistic.html', context)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user