diff --git a/docs/source/code.rst b/docs/source/code.rst index 65539a7..7479081 100644 --- a/docs/source/code.rst +++ b/docs/source/code.rst @@ -1,7 +1,6 @@ Документация разработчика ========================= - ******* Models ******* @@ -48,3 +47,5 @@ Views .. automodule:: main.views :members: + + diff --git a/docs/source/conf.py b/docs/source/conf.py index c963176..7e99943 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -115,24 +115,12 @@ def skip_queryset(app, what, name, obj, skip, options): return True return skip -# def process_signature(app): -# if app != 'module': -# return lines -# from enchant.checker import SpellChecker -# for line in lines: -# chkr = SpellChecker("ru_RU", line) -# for err in chkr: -# print(err) -# print('cheked') - -def setup(app): - # Register the docstring processor with sphinx - app.connect('autodoc-process-docstring', process_django_models) - app.connect('autodoc-skip-member', skip_queryset) - app.connect('autodoc-process-docstring', process_modules) - # process_signature(app) - print('app') +# def setup(app): +# # Register the docstring processor with sphinx +# app.connect('autodoc-process-docstring', process_django_models) +# app.connect('autodoc-skip-member', skip_queryset) +# app.connect('autodoc-process-docstring', process_modules) @@ -196,12 +184,8 @@ intersphinx_mapping = { autodoc_default_flags = ['members'] # spell checking - - - spelling_lang = 'ru_RU' tokenizer_lang = 'ru_RU' -spelling_word_list_filename = ['spelling_wordlist', None] spelling_exclude_patterns=['ignored_*'] spelling_show_suggestions = True spelling_show_whole_line=True diff --git a/docs/source/index.rst b/docs/source/index.rst index 83cf46a..96f9c69 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -3,7 +3,7 @@ You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. -Welcome to ZenDesk Access Controller's documentation! +Документация контроллера прав доступа ===================================================== .. toctree:: @@ -15,7 +15,6 @@ Welcome to ZenDesk Access Controller's documentation! todo - Indices and tables ================== diff --git a/docs/source/overview.rst b/docs/source/overview.rst index 84766d5..fb3c627 100644 --- a/docs/source/overview.rst +++ b/docs/source/overview.rst @@ -7,7 +7,7 @@ ****************************** -**ZenDesk Access Controller** - Web-приложение, для выдачи прав пользователям системы по запросу самого пользователя. +**ZenDesk Access Controller** - web-приложение, для выдачи прав пользователям системы по запросу самого пользователя. Например, из 12 человек 3 сейчас работают с правами администратора, по окончании рабочей смены они сдают свои права (освобождают места) и другие пользователи могут запросить эти права в свое пользование. @@ -52,7 +52,7 @@ .. image:: _static/login.png -Если Вы не помните пароль необходимо пройти по ссылке "Забыли пароль" и указанть email. +Если Вы не помните пароль необходимо пройти по ссылке "Забыли пароль" и указать email. На Вашу почту придет ссылка для установки нового пароля. ******** @@ -78,7 +78,7 @@ Управление правами доступа администратором ****************************************** -Для администратора существует удобный интефейс страницы управления, в котором представлены: +Для администратора существует удобный интерфейс страницы управления, в котором представлены: * Количество свободных инженерных мест * Количество и список инженеров и легких агентов diff --git a/docs/source/spelling_wordlist.txt b/docs/source/spelling_wordlist.txt index e69de29..f190ae2 100644 --- a/docs/source/spelling_wordlist.txt +++ b/docs/source/spelling_wordlist.txt @@ -0,0 +1,86 @@ +тикетами +тикета +тикетов +тикет +web +Indices +and +tables +Models +логирования +User +user +superuser +light +light_agent +admin +agent +bootstrap +form +control +Zendesk +email +Extra +Functions +env +ID +url +None +token +password +engineer +SYSTEM +start_date +end_date +timedelta +log +RoleChangeLogs +time(datetime.time) +stat +statistic +True +False +val +start +end +date +Токен +токеном +аутентифицирован +(datetime.time) +datetime +time +serializer +валидны +html +subdomain +логгирования +логгирование +forms +StatisticForm +Userprofile +login +login_required +required +id +prom +home +PycharmProjects +Access +access +controler +controller +main +views +py +docstring +of +page +API +functions +Serializer +Serializers + + + + diff --git a/main/extra_func.py b/main/extra_func.py index 8268814..b87ac27 100644 --- a/main/extra_func.py +++ b/main/extra_func.py @@ -13,7 +13,7 @@ from main.models import UserProfile, RoleChangeLogs, UnassignedTicket, Unassigne class ZendeskAdmin: """ - Класс **ZendeskAdmin** существует, чтобы в каждой фунциии отдельно не проверять аккаунт администратора. + Класс **ZendeskAdmin** существует, чтобы в каждой функции отдельно не проверять аккаунт администратора. :param credentials: Полномочия (первым указывается учетная запись организации в Zendesk) :type credentials: :class:`dict` @@ -95,7 +95,7 @@ class ZendeskAdmin: Функция возвращает группы, к которым принадлежит пользователь. :param name: Имя пользователя - :return: Группы пользователя (в случае отствия None) + :return: Группы пользователя (в случае отсутствия None) """ groups = self.admin.search(name) for group in groups: @@ -155,10 +155,10 @@ def update_role(user_profile: UserProfile, role: str) -> UserProfile: def make_engineer(user_profile: UserProfile, who_changes: User) -> UserProfile: """ - Функция устанавливапет пользователю роль инженера. + Функция устанавливает пользователю роль инженера. :param user_profile: Профиль пользователя - :return: Вызов функции **update_role** с параметрами: профиль пользователя, роль "endineer" + :return: Вызов функции **update_role** с параметрами: профиль пользователя, роль "engineer" """ RoleChangeLogs.objects.create( user=user_profile.user, @@ -171,7 +171,7 @@ def make_engineer(user_profile: UserProfile, who_changes: User) -> UserProfile: def make_light_agent(user_profile: UserProfile, who_changes: User) -> UserProfile: """ - Функция устанавливапет пользователю роль легкого агента. + Функция устанавливает пользователю роль легкого агента. :param user_profile: Профиль пользователя :return: Вызов функции **update_role** с параметрами: профиль пользователя, роль "light_agent" @@ -220,7 +220,7 @@ def get_tickets_list(email): def update_profile(user_profile: UserProfile) -> UserProfile: """ - Функция обновляет профиль пользователя в соотвтетствии с текущим в Zendesk. + Функция обновляет профиль пользователя в соответствии с текущим в Zendesk. :param user_profile: Профиль пользователя :return: Обновленный, в соответствие с текущими данными в Zendesk, профиль пользователя @@ -248,7 +248,7 @@ def get_user_organization(email: str) -> str: Функция возвращает организацию пользователя. :param email: Email пользователя - :return: Организацния пользователя + :return: Организация пользователя """ return ZendeskAdmin().get_user_org(email) @@ -290,7 +290,7 @@ def update_user_in_model(profile: UserProfile, zendesk_user: User) -> UserProfil def count_users(users) -> tuple: """ - Функция подсчета количества сотрудников с ролями engineer и light_a + Функция подсчета количества сотрудников с ролями engineer и light_agent """ engineers, light_agents = 0, 0 for user in users: @@ -358,11 +358,11 @@ def last_day_of_month(day: int) -> int: class StatisticData: """ Класс для учета статистики интервалов работы пользователей. - Передаваемые параметры: start_date, end_date, user_email, stat. + Передаваемые параметры: start_date, end_date, email, stat. :param display: Формат отображения времени (часы, минуты) :type display: :class:`list` - :param interval: Инетрвал времени в часах и минутах + :param interval: Интервал времени в часах и минутах :type interval: :class:`list` :param start_date: Дата начала работы :type start_date: :class:`date` @@ -372,7 +372,7 @@ class StatisticData: :type email: :class:`str` :param errors: Список ошибок :type errors: :class:`list` - :param warnings: Список предупрежденй + :param warnings: Список предупреждений :type warnings: :class:`list` :param data: Ретроспектива смены ролей пользователя :type data: :class:`dict` @@ -399,7 +399,7 @@ class StatisticData: """ Функция возвращает статистику работы пользователя. - :return: Cловарь statistic с применением формата отображения и интеравала работы(если они есть). None, если были ошибки при создании. + :return: Словарь statistic с применением формата отображения и интервала работы(если они есть). None, если были ошибки при создании. """ if self.is_valid_statistic(): stat = self.statistic @@ -413,7 +413,7 @@ class StatisticData: """ Функция проверяет были ли ошибки при создании статистики. - :return: True, при отутствии ошибок + :return: True, при отсутствии ошибок """ return not self.errors and self.statistic @@ -513,7 +513,7 @@ class StatisticData: def _init_data(self): """ - Функция возвращает логи в диапазоне дат start_date-end_date для пользователя с указанным email. + Функция возвращает логи в диапазоне дат start_date - end_date для пользователя с указанным email. :return: Данные о смене статусов пользователя. Если пользователь не найден или интервал времени некорректен - ошибку. """ @@ -569,12 +569,12 @@ class StatisticData: def fill_daterange(self, first: date, last: date, val: int = 24 * 3600) -> dict: """ - Функция заполеняет диапазон дат значением val (по умолчанию val = кол-во секунд в 1 дне). + Функция заполняет диапазон дат значением val (по умолчанию val = кол-во секунд в 1 дне). :param first: Начальная дата интервала :param last: Последняя дата интервала :param val: Количество секунд в одном дне - :return: Статистику пользоваиеля с указанным количеством секунд в заданных днях + :return: Статистику пользователя с указанным количеством секунд в заданных днях """ for day in daterange(first, last): self.statistic[day] = val diff --git a/main/forms.py b/main/forms.py index 5f4531f..2ad67cb 100644 --- a/main/forms.py +++ b/main/forms.py @@ -11,7 +11,7 @@ class CustomRegistrationForm(RegistrationFormUniqueEmail): Форма для регистрации :class:`django_registration.forms.RegistrationFormUniqueEmail` с добавлением bootstrap-класса "form-control". - :param visible_fields.email: Поле для ввода email, зарегистирированного на Zendesk + :param visible_fields.email: Поле для ввода email, зарегистрированного на Zendesk :type visible_fields.email: :class:`django_registration.forms.RegistrationFormUniqueEmail` """ def __init__(self, *args, **kwargs) -> RegistrationFormUniqueEmail: diff --git a/main/models.py b/main/models.py index 8c21293..782b79f 100644 --- a/main/models.py +++ b/main/models.py @@ -40,18 +40,16 @@ class RoleChangeLogs(models.Model): Модель для логирования изменений ролей пользователя. """ - user = models.ForeignKey(to=User, on_delete=models.CASCADE, - help_text='Пользователь, которому присвоили другую роль') + user = models.ForeignKey(to=User, on_delete=models.CASCADE, help_text='Пользователь, которому присвоили другую роль') old_role = models.IntegerField(default=0, help_text='Старая роль') new_role = models.IntegerField(default=0, help_text='Присвоенная роль') - change_time = models.DateTimeField(help_text='Дата и время изменения роли', default=timezone.now) - changed_by = models.ForeignKey(to=User, on_delete=models.CASCADE, related_name='changed_by', - help_text='Кем была изменена роль') + change_time = models.DateTimeField(default=timezone.now, help_text='Дата и время изменения роли') + changed_by = models.ForeignKey(to=User, on_delete=models.CASCADE, related_name='changed_by', help_text='Кем была изменена роль') class UnassignedTicketStatus(models.IntegerChoices): """ - Класс статусов нераспределенных тикетов. + Класс статусов не распределенных тикетов. :param UNASSIGNED: Снят с пользователя, перенесён в буферную группу :param RESTORED: Авторство восстановлено @@ -68,7 +66,7 @@ class UnassignedTicketStatus(models.IntegerChoices): class UnassignedTicket(models.Model): """ - Модель нераспределенного тикета. + Модель не распределенного тикета. """ assignee = models.ForeignKey(to=User, on_delete=models.CASCADE, related_name='tickets', help_text='Пользователь, с которого снят тикет') ticket_id = models.IntegerField(help_text='Номер тикера, для которого сняли ответственного') diff --git a/main/serializers.py b/main/serializers.py index aae45a6..5a4fd1a 100644 --- a/main/serializers.py +++ b/main/serializers.py @@ -14,7 +14,7 @@ class UserSerializer(serializers.HyperlinkedModelSerializer): class ProfileSerializer(serializers.HyperlinkedModelSerializer): """ - Класс serialiser для модель профиля пользователя. + Класс serializer для модель профиля пользователя. """ user = UserSerializer() diff --git a/main/views.py b/main/views.py index f1900a7..8cb568e 100644 --- a/main/views.py +++ b/main/views.py @@ -109,10 +109,10 @@ class CustomRegistrationView(RegistrationView): def get_success_url(self, user: User = None) -> success_url: """ - Функция возвращает url-адрес страницы, куда нужно перейти после успешной/неуспешной регистрации. + Функция возвращает url-адрес страницы, куда нужно перейти после успешной/не успешной регистрации. Используется самой django-registration. - :param user: пользователь, пытающийся зарегистроваться + :param user: пользователь, пытающийся зарегистрироваться :return: адресация на страницу успешной регистрации """ if self.is_allowed: @@ -216,7 +216,7 @@ def work_hand_over(request: WSGIRequest) -> HttpResponseRedirect: @login_required() def work_become_engineer(request: WSGIRequest) -> HttpResponseRedirect: """ - Функция меняет роль пользователя в Zendesk на "engineer" и присваевает роль "agent" в БД (в случае, если исходная роль пользователя была "light_agent"). + Функция меняет роль пользователя в Zendesk на "engineer" и присваивает роль "agent" в БД (в случае, если исходная роль пользователя была "light_agent"). :param request: данные текущего пользователя (login_required) :return: перезагрузка текущей страницы после выполнения смены роли