diff --git a/main/extra_func.py b/main/extra_func.py
index f2a4df9..f5488d6 100644
--- a/main/extra_func.py
+++ b/main/extra_func.py
@@ -236,16 +236,14 @@ def update_user_in_model(profile, zendesk_user):
profile.name = zendesk_user.name
profile.role = zendesk_user.role
profile.image = zendesk_user.photo['content_url'] if zendesk_user.photo else None
- profile.custom_role_id = zendesk_user.custom_role_id
+ if zendesk_user.custom_role_id is not None:
+ profile.custom_role_id = int(zendesk_user.custom_role_id)
profile.save()
def count_users(users) -> tuple:
"""
Функция подсчета количества сотрудников с ролями engineer и light_a
-
- .. todo::
- this func counts users from all zendesk instead of just from a model:
"""
engineers, light_agents = 0, 0
for user in users:
@@ -443,11 +441,11 @@ class StatisticData:
if first_log.old_role == ROLES['engineer']:
self.statistic[first_log.change_time.date()] += get_timedelta(first_log).total_seconds()
- if last_log.new_role == ROLES['engineer']: #TODO отдельная функция
+ if last_log.new_role == ROLES['engineer']: # TODO отдельная функция
self.fill_daterange(last_log.change_time.date() + timedelta(days=1), self.end_date + timedelta(days=1))
if last_log.change_time.date() == timezone.now().date():
self.statistic[last_log.change_time.date()] += (
- get_timedelta(None, timezone.now().time()) - get_timedelta(last_log)
+ get_timedelta(None, timezone.now().time()) - get_timedelta(last_log)
).total_seconds()
else:
self.statistic[last_log.change_time.date()] += (
@@ -455,7 +453,7 @@ class StatisticData:
if self.end_date == timezone.now().date():
self.statistic[self.end_date] = get_timedelta(None, timezone.now().time()).total_seconds()
- for log_index in range(len(self.data) - 1): #TODO отдельная функция
+ for log_index in range(len(self.data) - 1): # TODO отдельная функция
if self.data[log_index].new_role == ROLES['engineer']:
current_log, next_log = self.data[log_index], self.data[log_index + 1]
if current_log.change_time.date() != next_log.change_time.date():
diff --git a/main/migrations/0015_auto_20210321_1600.py b/main/migrations/0015_auto_20210321_1600.py
new file mode 100644
index 0000000..79b5726
--- /dev/null
+++ b/main/migrations/0015_auto_20210321_1600.py
@@ -0,0 +1,18 @@
+# Generated by Django 3.1.6 on 2021-03-21 13:00
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('main', '0014_auto_20210314_1455'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='unassignedticket',
+ name='status',
+ field=models.IntegerField(choices=[(0, 'Снят с пользователя, перенесён в буферную группу'), (1, 'Авторство восстановлено'), (2, 'Пока нас не было, тикет испарился из буферной группы. Дополнительные действия не требуются'), (3, 'Тикет уже был закрыт. Дополнительные действия не требуются'), (4, 'Тикет решён. Записан на пользователя с почтой SOLVED_TICKETS_EMAIL')], default=0),
+ ),
+ ]
diff --git a/main/templates/base/success_messages.html b/main/templates/base/success_messages.html
new file mode 100644
index 0000000..fdef313
--- /dev/null
+++ b/main/templates/base/success_messages.html
@@ -0,0 +1,14 @@
+
+ {% for message in messages %}
+
+ {% endfor %}
+
diff --git a/main/templates/pages/adm_ruleset.html b/main/templates/pages/adm_ruleset.html
index 92686f1..b324ac7 100644
--- a/main/templates/pages/adm_ruleset.html
+++ b/main/templates/pages/adm_ruleset.html
@@ -101,12 +101,13 @@
-
{% endblock %}
{% endblock %}
+
+ {% include 'base/success_messages.html' %}
diff --git a/main/templates/pages/work.html b/main/templates/pages/work.html
index 1ce7dd3..67c5846 100644
--- a/main/templates/pages/work.html
+++ b/main/templates/pages/work.html
@@ -61,6 +61,7 @@
Сдать права инженера
+ {% include 'base/success_messages.html' %}
{% endblock %}
diff --git a/main/views.py b/main/views.py
index a8b3af5..2c00277 100644
--- a/main/views.py
+++ b/main/views.py
@@ -7,6 +7,7 @@ from django.contrib.auth.models import User, Permission
from django.contrib.auth.tokens import default_token_generator
from django.contrib.auth.views import LoginView
from django.contrib.contenttypes.models import ContentType
+from django.contrib.messages.views import SuccessMessageMixin
from django.core.exceptions import PermissionDenied
from django.core.handlers.wsgi import WSGIRequest
from django.http import HttpResponseRedirect, HttpResponse
@@ -14,9 +15,12 @@ from django.shortcuts import render, get_list_or_404, redirect
from django.urls import reverse_lazy, reverse
from django.views.generic import FormView
from django_registration.views import RegistrationView
+from django.contrib import messages
+
# Django REST
from rest_framework import viewsets
from rest_framework.response import Response
+
from zenpy.lib.api_objects import User as ZenpyUser
from access_controller.settings import EMAIL_HOST_USER, ZENDESK_ROLES, ZENDESK_MAX_AGENTS
@@ -131,6 +135,7 @@ def work_page(request, id):
context = {
'engineers': engineers,
'agents': light_agents,
+ 'messages': messages.get_messages(request),
'licences_remaining': max(0, ZENDESK_MAX_AGENTS - len(engineers)),
'pagename': 'Управление правами'
}
@@ -138,15 +143,19 @@ def work_page(request, id):
return redirect("login")
+def user_update(zenpy_user, admin, request):
+ admin.users.update(zenpy_user)
+ request.user.userprofile.role = "agent"
+ request.user.userprofile.save()
+ messages.success(request, "Права были изменены")
+
+
@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.save()
+ user_update(zenpy_user, admin, request)
return HttpResponseRedirect(reverse('work', args=(request.user.id,)))
@@ -155,9 +164,7 @@ def work_become_engineer(request):
zenpy_user, admin = auth_user(request)
if zenpy_user.custom_role_id == ZENDESK_ROLES['light_agent']:
zenpy_user.custom_role_id = ZENDESK_ROLES['engineer']
- admin.users.update(zenpy_user)
- request.user.userprofile.role = "agent"
- request.user.userprofile.save()
+ user_update(zenpy_user, admin, request)
return HttpResponseRedirect(reverse('work', args=(request.user.id,)))
@@ -170,11 +177,12 @@ def main_page(request):
return render(request, 'pages/index.html')
-class AdminPageView(LoginRequiredMixin, PermissionRequiredMixin, FormView):
+class AdminPageView(LoginRequiredMixin, PermissionRequiredMixin, SuccessMessageMixin, FormView):
permission_required = 'main.has_control_access'
template_name = 'pages/adm_ruleset.html'
form_class = AdminPageUsers
success_url = '/control/'
+ success_message = "Права были изменены."
def form_valid(self, form: AdminPageUsers) -> AdminPageUsers:
"""
diff --git a/static/main/js/control.js b/static/main/js/control.js
index 62d2daf..e518c36 100644
--- a/static/main/js/control.js
+++ b/static/main/js/control.js
@@ -65,7 +65,7 @@ class TableBody extends React.Component {
componentDidMount() {
this.interval = setInterval(() => {
this.get_users();
- }, 10000);
+ }, 60000);
}
componentWillUnmount() {
@@ -80,4 +80,4 @@ class TableBody extends React.Component {
}
ReactDOM.render(, document.getElementById("new_tbody"));
-setTimeout(() => document.getElementById("old_tbody").remove(), 10000);
+setTimeout(() => document.getElementById("old_tbody").remove(), 60000);