Merge remote-tracking branch 'origin/feature/logging/func' into feature/logging/func

This commit is contained in:
Timofey Mazurov 2021-03-15 19:38:25 +03:00
commit 644f4de1e9
2 changed files with 25 additions and 41 deletions

View File

@ -3,6 +3,7 @@ import os
from datetime import timedelta, datetime, date from datetime import timedelta, datetime, date
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.utils import timezone
from zenpy import Zenpy from zenpy import Zenpy
from zenpy.lib.exception import APIException from zenpy.lib.exception import APIException

View File

@ -1,29 +1,38 @@
import logging import logging
import os import os
from datetime import datetime
from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import PasswordResetForm
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.tokens import default_token_generator
from django.contrib.auth.forms import PasswordResetForm
from django.contrib.auth.views import LoginView from django.contrib.auth.views import LoginView
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import PermissionDenied
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, get_list_or_404, redirect from django.shortcuts import render, get_list_or_404, 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 zenpy import Zenpy 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.lib.api_objects import User as ZenpyUser from zenpy.lib.api_objects import User as ZenpyUser
from access_controller.settings import EMAIL_HOST_USER, ZENDESK_ROLES content_type_temp = ContentType.objects.get_for_model(UserProfile)
from main.extra_func import check_user_exist, update_profile, get_user_organization, make_engineer, make_light_agent, \ permission_temp, created = Permission.objects.get_or_create(
get_users_list, StatisticData codename='has_control_access',
from main.forms import AdminPageUsers, CustomRegistrationForm, CustomAuthenticationForm, StatisticForm content_type=content_type_temp,
from .models import UserProfile )
class CustomRegistrationView(RegistrationView): class CustomRegistrationView(RegistrationView):
""" """
@ -102,6 +111,7 @@ def profile_page(request: WSGIRequest) -> HttpResponse:
'profile': user_profile, 'profile': user_profile,
'pagename': 'Страница профиля' 'pagename': 'Страница профиля'
} }
log(request.user)
return render(request, 'pages/profile.html', context) return render(request, 'pages/profile.html', context)
@ -141,12 +151,12 @@ def work_page(request, id):
@login_required() @login_required()
def work_hand_over(request): def work_hand_over(request):
zenpy_user, admin = auth_user(request) zenpy_user, admin = auth_user(request)
if zenpy_user.custom_role_id == ZENDESK_ROLES['engineer']: if zenpy_user.custom_role_id == ZENDESK_ROLES['engineer']:
zenpy_user.custom_role_id = ZENDESK_ROLES['light_agent'] zenpy_user.custom_role_id = ZENDESK_ROLES['light_agent']
admin.users.update(zenpy_user) admin.users.update(zenpy_user)
request.user.userprofile.role = "agent" request.user.userprofile.role = "agent"
request.user.userprofile.save() request.user.userprofile.save()
# log(request.user.userprofile.user)
return HttpResponseRedirect(reverse('work', args=(request.user.id,))) return HttpResponseRedirect(reverse('work', args=(request.user.id,)))
@ -158,6 +168,7 @@ def work_become_engineer(request):
admin.users.update(zenpy_user) admin.users.update(zenpy_user)
request.user.userprofile.role = "agent" request.user.userprofile.role = "agent"
request.user.userprofile.save() request.user.userprofile.save()
# log(request.user.userprofile.user)
return HttpResponseRedirect(reverse('work', args=(request.user.id,))) return HttpResponseRedirect(reverse('work', args=(request.user.id,)))
@ -228,31 +239,3 @@ class CustomLoginView(LoginView):
Отображение страницы авторизации пользователя Отображение страницы авторизации пользователя
""" """
form_class = CustomAuthenticationForm 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)