diff --git a/access_controller/settings.py b/access_controller/settings.py index eecfa19..4c25e78 100644 --- a/access_controller/settings.py +++ b/access_controller/settings.py @@ -127,3 +127,8 @@ MEDIA_URL = '/media/' LOGIN_REDIRECT_URL = '/' LOGOUT_REDIRECT_URL = '/' + +ZENDESK_ROLES = { + 'engineer': '360005209000', + 'light_agent': '360005208980', +} diff --git a/access_controller/urls.py b/access_controller/urls.py index b2603b2..1de1835 100644 --- a/access_controller/urls.py +++ b/access_controller/urls.py @@ -20,7 +20,7 @@ from django.urls import path, include from access_controller import settings from access_controller.settings import DEBUG -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'), @@ -30,4 +30,5 @@ urlpatterns = [ path('accounts/login/', LoginView.as_view(extra_context={}), name='login'), # TODO add extra context path('accounts/', include('django.contrib.auth.urls')), path('accounts/', include('django_registration.backends.one_step.urls')), + path('control/', AdminPageView.as_view(), name='control') ] diff --git a/main/extra_func.py b/main/extra_func.py index d510430..26dffa5 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: """ @@ -106,6 +108,24 @@ class ZendeskAdmin: except APIException: raise ValueError('invalid access_controller`s login data') + def get_user(self, email): + user = self.admin.users.search(email).values[0] + return user + + +def make_engineer(user_profile): + zendesk = ZendeskAdmin() + user = zendesk.get_user(user_profile.user.email) + user.custom_role_id = ROLES['engineer'] + zendesk.admin.users.update(user) + + +def make_light_agent(user_profile): + zendesk = ZendeskAdmin() + user = zendesk.get_user(user_profile.user.email) + user.custom_role_id = ROLES['light_agent'] + zendesk.admin.users.update(user) + def update_profile(user_profile: UserProfile): """ @@ -145,10 +165,10 @@ def check_user_auth(email: str, password: str) -> bool: :rtype: :class:`bool` """ creds = { - 'email': email, - 'password': password, - 'subdomain': 'ngenix1612197338', - } + 'email': email, + 'password': password, + 'subdomain': 'ngenix1612197338', + } try: user = Zenpy(**creds) user.search(email, type='user') diff --git a/main/forms.py b/main/forms.py index fcd8a7f..87aa217 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): """ @@ -32,3 +34,15 @@ class CustomRegistrationForm(RegistrationFormUniqueEmail): class Meta(RegistrationFormUniqueEmail.Meta): fields = RegistrationFormUniqueEmail.Meta.fields fields.insert(2, 'password_zen') + + +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..460d8d2 100644 --- a/main/templates/pages/adm_ruleset.html +++ b/main/templates/pages/adm_ruleset.html @@ -2,76 +2,101 @@ {% load static %} -{% block title %}{{ pagename }}{% endblock %} +{% block title %} +Управление +{%endblock %} -{% block heading %}Управление{% endblock %} +{% block heading %} +Управление +{% endblock %} {% block extra_css %} - + {% endblock %} {% block content %}
Основаная информация о странице
-Основаная информация о странице
+