diff --git a/access_controller/settings.py b/access_controller/settings.py index 480cfbd..febc172 100644 --- a/access_controller/settings.py +++ b/access_controller/settings.py @@ -172,3 +172,8 @@ LOGGING = { } } } + +ZENDESK_ROLES = { + 'engineer': 360005209000, + 'light_agent': 360005208980, +} diff --git a/access_controller/urls.py b/access_controller/urls.py index 45781bf..5420838 100644 --- a/access_controller/urls.py +++ b/access_controller/urls.py @@ -17,7 +17,7 @@ from django.contrib import admin from django.contrib.auth.views import LoginView from django.contrib.auth import views as auth_views from django.urls import path, include -from main.views import main_page, profile_page, CustomRegistrationView +from main.views import main_page, profile_page, CustomRegistrationView, AdminPageView urlpatterns = [ path('admin/', admin.site.urls, name='admin'), @@ -28,6 +28,7 @@ urlpatterns = [ path('accounts/', include('django.contrib.auth.urls')), path('accounts/', include('django_registration.backends.activation.urls')), path('accounts/login/', include('django.contrib.auth.urls')), + path('control/', AdminPageView.as_view(), name='control') ] urlpatterns += [ diff --git a/main/extra_func.py b/main/extra_func.py index 9e0a564..20c3712 100644 --- a/main/extra_func.py +++ b/main/extra_func.py @@ -5,6 +5,8 @@ from zenpy.lib.exception import APIException from main.models import UserProfile +from access_controller.settings import ZENDESK_ROLES as ROLES + class ZendeskAdmin: """ @@ -114,12 +116,34 @@ class ZendeskAdmin: raise ValueError('invalid access_controller`s login data') +def update_role(user_profile, role): + zendesk = ZendeskAdmin() + user = zendesk.get_user(user_profile.user.email) + user.custom_role_id = role + zendesk.admin.users.update(user) + + +def make_engineer(user_profile): + update_role(user_profile, ROLES['engineer']) + + +def make_light_agent(user_profile): + update_role(user_profile, ROLES['light_agent']) + + +def get_users_list(): + zendesk = ZendeskAdmin() + admin = zendesk.get_user(zendesk.email) + org = next(zendesk.admin.users.organizations(user=admin)) + return zendesk.admin.organizations.users(org) + + def update_profile(user_profile: UserProfile): """ - Функция обновляет профиль пользователя в соотвтетствии с текущим в Zendesk + Функция обновляет профиль пользователя в соотвтетствии с текущим в Zendesk - :param user_profile: Объект профиля пользователя - :type user_profile: :class:`main.models.UserProfile` + :param user_profile: Объект профиля пользователя + :type user_profile: :class:`main.models.UserProfile` """ user = ZendeskAdmin().get_user(user_profile.user.email) user_profile.name = user.name @@ -140,7 +164,7 @@ def check_user_exist(email: str) -> bool: return ZendeskAdmin().check_user(email) -def get_user_organization(email: str) -> bool: +def get_user_organization(email: str) -> str: """ Функция возвращает организацию пользователя diff --git a/main/forms.py b/main/forms.py index 6a058bb..d80932c 100644 --- a/main/forms.py +++ b/main/forms.py @@ -1,6 +1,8 @@ from django import forms from django_registration.forms import RegistrationFormUniqueEmail +from main.models import UserProfile + class CustomRegistrationForm(RegistrationFormUniqueEmail): """ @@ -24,3 +26,15 @@ class CustomRegistrationForm(RegistrationFormUniqueEmail): class Meta(RegistrationFormUniqueEmail.Meta): fields = RegistrationFormUniqueEmail.Meta.fields + + +class AdminPageUsers(forms.Form): + users = forms.ModelMultipleChoiceField( + queryset=UserProfile.objects.filter(role='agent'), + widget=forms.CheckboxSelectMultiple( + attrs={ + 'class': 'form-check-input' + } + ), + label='' + ) diff --git a/main/models.py b/main/models.py index 3e3fe29..b7b30dd 100644 --- a/main/models.py +++ b/main/models.py @@ -1,5 +1,5 @@ -from django.contrib.auth.models import User from django.db import models +from django.contrib.auth.models import User from django.db.models.signals import post_save from django.dispatch import receiver diff --git a/main/templates/pages/adm_ruleset.html b/main/templates/pages/adm_ruleset.html index a2e3e9d..1bddc5f 100644 --- a/main/templates/pages/adm_ruleset.html +++ b/main/templates/pages/adm_ruleset.html @@ -2,76 +2,108 @@ {% load static %} -{% block title %}{{ pagename }}{% endblock %} +{% block title %}Управление{%endblock %} {% block heading %}Управление{% endblock %} {% block extra_css %} - + {% endblock %} {% block content %}
Основная информация о странице
+Основаная информация о странице
+