diff --git a/main/views.py b/main/views.py index 4d1a9a5..2610456 100644 --- a/main/views.py +++ b/main/views.py @@ -1,38 +1,29 @@ import logging import os +from datetime import datetime +from django.contrib.auth.decorators import login_required +from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin +from django.contrib.auth.models import User, Permission from django.contrib.auth.tokens import default_token_generator from django.contrib.auth.forms import PasswordResetForm from django.contrib.auth.views import LoginView from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import PermissionDenied from django.core.handlers.wsgi import WSGIRequest from django.http import HttpResponseRedirect, HttpResponse from django.shortcuts import render, get_list_or_404, redirect from django.urls import reverse_lazy, reverse from django.views.generic import FormView -from zenpy import Zenpy - -from access_controller.settings import EMAIL_HOST_USER -from main.extra_func import check_user_exist, update_profile, get_user_organization, \ - make_engineer, make_light_agent, get_users_list, log - -from django.contrib.auth.models import User, Permission -from main.models import UserProfile -from main.forms import CustomRegistrationForm, AdminPageUsers, CustomAuthenticationForm from django_registration.views import RegistrationView -from django.contrib.auth.decorators import login_required -from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin -from django.core.exceptions import PermissionDenied - -from access_controller.settings import ZENDESK_ROLES +from zenpy import Zenpy from zenpy.lib.api_objects import User as ZenpyUser -content_type_temp = ContentType.objects.get_for_model(UserProfile) -permission_temp, created = Permission.objects.get_or_create( - codename='has_control_access', - content_type=content_type_temp, -) - +from access_controller.settings import EMAIL_HOST_USER, ZENDESK_ROLES +from main.extra_func import check_user_exist, update_profile, get_user_organization, make_engineer, make_light_agent, \ + get_users_list, StatisticData, log +from main.forms import AdminPageUsers, CustomRegistrationForm, CustomAuthenticationForm, StatisticForm +from .models import UserProfile class CustomRegistrationView(RegistrationView): """ @@ -111,7 +102,6 @@ def profile_page(request: WSGIRequest) -> HttpResponse: 'profile': user_profile, 'pagename': 'Страница профиля' } - log(request.user) return render(request, 'pages/profile.html', context) @@ -151,12 +141,14 @@ def work_page(request, id): @login_required() def work_hand_over(request): zenpy_user, admin = auth_user(request) + if zenpy_user.custom_role_id == ZENDESK_ROLES['engineer']: zenpy_user.custom_role_id = ZENDESK_ROLES['light_agent'] admin.users.update(zenpy_user) request.user.userprofile.role = "agent" + request.user.userprofile.custom_role_id = ZENDESK_ROLES['light_agent'] request.user.userprofile.save() - # log(request.user.userprofile.user) + log(request.user.userprofile) return HttpResponseRedirect(reverse('work', args=(request.user.id,))) @@ -167,8 +159,9 @@ def work_become_engineer(request): zenpy_user.custom_role_id = ZENDESK_ROLES['engineer'] admin.users.update(zenpy_user) request.user.userprofile.role = "agent" + request.user.userprofile.custom_role_id = ZENDESK_ROLES['engineer'] request.user.userprofile.save() - # log(request.user.userprofile.user) + log(request.user.userprofile) return HttpResponseRedirect(reverse('work', args=(request.user.id,))) @@ -200,10 +193,12 @@ class AdminPageView(LoginRequiredMixin, PermissionRequiredMixin, FormView): @staticmethod def make_engineers(users): [make_engineer(user) for user in users] + # [log(user, self.request.user.userprofile) for user in users] @staticmethod def make_light_agents(users): [make_light_agent(user) for user in users] + # [log(user, self.request.user.userprofile) for user in users] @staticmethod def count_users(users) -> tuple: @@ -239,3 +234,31 @@ class CustomLoginView(LoginView): Отображение страницы авторизации пользователя """ form_class = CustomAuthenticationForm + + +@login_required() +def statistic_page(request): + if not request.user.is_superuser: + return redirect('index') + context = { + 'pagename': 'страница статистики', + 'errors': list(), + } + if request.method == "POST": + form = StatisticForm(request.POST) + if form.is_valid(): + 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'] + Data = StatisticData(start_date, end_date, form.cleaned_data['email']) + Data.set_display(show) + Data.set_interval(interval) + stats = Data.get_statistic() + if Data.errors: + context['errors'] = Data.errors + if Data.warnings: + context['warnings'] = Data.warnings + context['log_stats'] = stats if not context['errors'] else None + if request.method == 'GET': + form = StatisticForm() + context['form'] = form + return render(request, 'pages/stat.html', context)