From a6ceae824013b192ee1faa942b58f616ebc70153 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B5=D0=BF=D0=B0=D0=BD=D0=B5=D0=BD=D0=BA?= =?UTF-8?q?=D0=BE=20=D0=9E=D0=BB=D1=8C=D0=B3=D0=B0?= Date: Wed, 12 May 2021 20:34:52 +0300 Subject: [PATCH] Pylint 10 --- .pylintrc | 2 +- README.rst | 2 +- access_controller/auth.py | 12 ++++++++ main/requester.py | 21 +++++++++++-- main/tests.py | 65 +++++++++++++++++++++++++++------------ 5 files changed, 77 insertions(+), 25 deletions(-) diff --git a/.pylintrc b/.pylintrc index 07ab0f1..b736d99 100644 --- a/.pylintrc +++ b/.pylintrc @@ -145,7 +145,7 @@ disable=print-statement, exception-escape, comprehension-escape, E5110, - C0415, + C0415 # Enable the message, report, category or checker with the given id(s). You can diff --git a/README.rst b/README.rst index 846db24..a10945a 100644 --- a/README.rst +++ b/README.rst @@ -170,7 +170,7 @@ Quickstart Для проверки pylint используем: ------------------------------- -pylint ../access_controller_new +pylint ../access_controller_new (папка проекта) Для приведения файлов к стандарту PEP8 используем: -------------------------------------------------- diff --git a/access_controller/auth.py b/access_controller/auth.py index 00b43a2..7cfd71b 100644 --- a/access_controller/auth.py +++ b/access_controller/auth.py @@ -1,9 +1,18 @@ +""" +Авторизация пользователя. +""" from django.contrib.auth.backends import ModelBackend from django.contrib.auth import get_user_model class EmailAuthBackend(ModelBackend): + """ + Класс авторизации пользователя по email. + """ def authenticate(self, request, username=None, password=None, **kwargs): + """ + Функция получения пользователя (модель User) по email. + """ try: user = get_user_model().objects.get(email=username) if user.check_password(password): @@ -13,6 +22,9 @@ class EmailAuthBackend(ModelBackend): return None def get_user(self, user_id): + """ + Функция получения пользователя по id. + """ try: return get_user_model().objects.get(pk=user_id) except get_user_model().DoesNotExist: diff --git a/main/requester.py b/main/requester.py index 468abee..d0c57ed 100644 --- a/main/requester.py +++ b/main/requester.py @@ -1,3 +1,6 @@ +""" +Обработка тикетов. +""" import requests from zenpy import TicketApi from zenpy.lib.api_objects import Ticket @@ -6,6 +9,9 @@ from main.zendesk_admin import zenpy class TicketListRequester: + """ + Класс обработки тикетов. + """ def __init__(self): self.email = zenpy.credentials['email'] if zenpy.credentials.get('token'): @@ -15,11 +21,17 @@ class TicketListRequester: self.token_or_password = zenpy.credentials.get('password') self.prefix = f'https://{zenpy.credentials.get("subdomain")}.zendesk.com/api/v2/' - def get_tickets_list_for_user(self, zendesk_user): + def get_tickets_list_for_user(self, zendesk_user: zenpy) -> str: + """ + Функция получения списка тикетов пользователя Zendesk. + """ url = self.prefix + f'users/{zendesk_user.id}/tickets/assigned' return self._get_tickets(url) - def get_tickets_list_for_group(self, group): + def get_tickets_list_for_group(self, group: zenpy) -> list(): + """ + Функция получения списка тикетов группы пользователей Zendesk. + """ url = self.prefix + '/tickets' all_tickets = self._get_tickets(url) tickets = list() @@ -28,7 +40,10 @@ class TicketListRequester: tickets.append(ticket) return tickets - def _get_tickets(self, url): + def _get_tickets(self, url: str) -> list(): + """ + Функция получения полного списка тикетов по url. + """ response = requests.get(url, auth=(self.email, self.token_or_password)) tickets = [] if response.status_code != 200: diff --git a/main/tests.py b/main/tests.py index 0cb93a0..f9fed9a 100644 --- a/main/tests.py +++ b/main/tests.py @@ -98,7 +98,7 @@ class RegistrationTestCase(TestCase): """ with self.settings(EMAIL_BACKEND=self.email_backend): self.client.post(reverse('registration'), data={'email': self.any_zendesk_user_email}) - user = User.objects.get(email=self.any_zendesk_user_email) + user = get_user_model().objects.get(email=self.any_zendesk_user_email) zendesk_user = zenpy.get_user(self.any_zendesk_user_email) self.assertEqual(user.userprofile.name, zendesk_user.name) @@ -108,71 +108,96 @@ class RegistrationTestCase(TestCase): """ with self.settings(EMAIL_BACKEND=self.email_backend): self.client.post(reverse('registration'), data={'email': self.zendesk_admin_email}) - user = User.objects.get(email=self.zendesk_admin_email) + user = get_user_model().objects.get(email=self.zendesk_admin_email) self.assertEqual(user.userprofile.role, 'admin') self.assertTrue(user.has_perm('main.has_control_access')) class MakeEngineerTestCase(TestCase): + """ + Класс тестов для проверки функции назначения роли engineer. + """ fixtures = ['fixtures/test_make_engineer.json'] def setUp(self): + """ + Предустановленные значения для проведения тестов. + """ self.light_agent = '123@test.ru' self.admin = 'admin@gmail.com' self.engineer = 'customer@example.com' self.client = Client() - self.client.force_login(User.objects.get(email=self.light_agent)) + self.client.force_login(get_user_model().objects.get(email=self.light_agent)) self.admin_client = Client() - self.admin_client.force_login(User.objects.get(email=self.admin)) + self.admin_client.force_login(get_user_model().objects.get(email=self.admin)) @patch('main.extra_func.zenpy') - def test_redirect(self, ZenpyMock): - user = User.objects.get(email=self.light_agent) + def test_redirect(self): + """ + Функция проверки переадресации пользователя на рабочую страницу после назначения роли engineer. + """ + user = get_user_model().objects.get(email=self.light_agent) resp = self.client.post(reverse_lazy('work_become_engineer')) self.assertRedirects(resp, reverse('work', args=[user.id])) self.assertEqual(resp.status_code, 302) @patch('main.extra_func.zenpy') - def test_light_agent_make_engineer(self, ZenpyMock): + def test_light_agent_make_engineer(self, zenpy_mock): + """ + Функция проверки назначения light_agent на роль engineer. + """ self.client.post(reverse_lazy('work_become_engineer')) - self.assertEqual(ZenpyMock.update_user.call_args[0][0].custom_role_id, sets.ZENDESK_ROLES['engineer']) + self.assertEqual(zenpy_mock.update_user.call_args[0][0].custom_role_id, sets.ZENDESK_ROLES['engineer']) @patch('main.extra_func.zenpy') - def test_admin_make_engineer(self, ZenpyMock): + def test_admin_make_engineer(self, zenpy_mock): + """ + Функция проверки назначения admin на роль engineer. + """ self.admin_client.post(reverse_lazy('work_become_engineer')) - self.assertEqual(ZenpyMock.update_user.call_args[0][0].custom_role_id, sets.ZENDESK_ROLES['engineer']) + self.assertEqual(zenpy_mock.update_user.call_args[0][0].custom_role_id, sets.ZENDESK_ROLES['engineer']) @patch('main.extra_func.zenpy') - def test_engineer_make_engineer(self, ZenpyMock): + def test_engineer_make_engineer(self, zenpy_mock): + """ + Функция проверки назначения engineer на роль engineer. + """ client = Client() - client.force_login(User.objects.get(email=self.engineer)) + client.force_login(get_user_model().objects.get(email=self.engineer)) client.post(reverse_lazy('work_become_engineer')) - self.assertEqual(ZenpyMock.update_user.call_args[0][0].custom_role_id, sets.ZENDESK_ROLES['engineer']) + self.assertEqual(zenpy_mock.update_user.call_args[0][0].custom_role_id, sets.ZENDESK_ROLES['engineer']) @patch('main.extra_func.zenpy') - def test_control_page_make_one(self, ZenpyMock): + def test_control_page_make_one(self, zenpy_mock): + """ + Функция проверки назначения администратором на роль engineer одного пользователя. + """ self.admin_client.post( reverse_lazy('control'), - data={'users': [User.objects.get(email=self.light_agent).userprofile.id], 'engineer': 'engineer'} + data={'users': [get_user_model().objects.get(email=self.light_agent).userprofile.id], + 'engineer': 'engineer'} ) - call_list = ZenpyMock.update_user.call_args_list + call_list = zenpy_mock.update_user.call_args_list mock_object = call_list[0][0][0] self.assertEqual(len(call_list), 1) self.assertEqual(mock_object.custom_role_id, sets.ZENDESK_ROLES['engineer']) @patch('main.extra_func.zenpy') - def test_control_page_make_many(self, ZenpyMock): + def test_control_page_make_many(self, zenpy_mock): + """ + Функция проверки назначения администратором на роль engineer нескольких пользователей. + """ self.admin_client.post( reverse_lazy('control'), data={ 'users': [ - User.objects.get(email=self.light_agent).userprofile.id, - User.objects.get(email=self.engineer).userprofile.id, + get_user_model().objects.get(email=self.light_agent).userprofile.id, + get_user_model().objects.get(email=self.engineer).userprofile.id, ], 'engineer': 'engineer' } ) - call_list = ZenpyMock.update_user.call_args_list + call_list = zenpy_mock.update_user.call_args_list mock_objects = list(call_list) self.assertEqual(len(call_list), 2) for obj in mock_objects: