Temporary vertion with non-working enchant

This commit is contained in:
Степаненко Ольга 2021-03-18 17:03:30 +03:00
parent 10e341fcbb
commit 0a7b4fb1a7
3 changed files with 70 additions and 42 deletions

View File

@ -37,10 +37,7 @@ ManagerDescriptor.__get__ = lambda self, *args, **kwargs: self.manager
from django.db.models.query import QuerySet
QuerySet.__repr__ = lambda self: self.__class__.__name__
# try:
# import enchant # NoQA
# except ImportError:
# enchant = None
django.setup()
@ -117,17 +114,12 @@ def skip_queryset(app, what, name, obj, skip, options):
return True
return skip
def process_signature(app, what, name, obj, options, signature, return_annotation):
return None
def setup(app):
# Register the docstring processor with sphinx
app.connect('autodoc-process-docstring', process_django_models)
app.connect('autodoc-skip-member', skip_queryset)
if enchant is not None:
app.connect('autodoc-process-docstring', process_modules)
app.connect('autodoc-process-signature', process_signature)
@ -191,6 +183,7 @@ intersphinx_mapping = {
autodoc_default_flags = ['members']
# spell checking
print(enchant.list_languages())
spelling_lang = 'ru_RU'
tokenizer_lang = 'ru_RU'
spelling_word_list_filename = ['spelling_wordlist.txt', 'another_list.txt']
@ -209,7 +202,6 @@ spelling_ignore_contributor_names=True
# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = True
set_type_checking_flag = True
typehints_fully_qualified = True
always_document_param_types = True

View File

@ -242,13 +242,10 @@ def get_timedelta(log: RoleChangeLogs, time=None) -> timedelta:
return time
def last_day_of_month(day):
def last_day_of_month(day: int) -> int:
"""
Функция возвращает последний день текущего месяца.
.. todo::
Дописать документацию по данной функции (не поняла типы и суть)
:param day: Текущий день
:return: Последний день месяца
"""
@ -259,10 +256,26 @@ def last_day_of_month(day):
class StatisticData:
"""
Класс для учета статистики интервалов работы пользователей.
Передаваемые параметры: start_date, end_date, user_email.
Передаваемые параметры: start_date, end_date, user_email, stat.
.. todo::
Дописать описание данного класса
:param display: Формат отображения времени (часы, минуты)
:type display: :class:`list`
:param interval: Инетрвал времени в часах и минутах
:type interval: :class:`list`
:param start_date: Дата начала работы
:type start_date: :class:`date`
:param end_date: Дата окончания работы
:type end_date: :class:`date`
:param email: Email пользователя
:type email: :class:`str`
:param errors: Список ошибок
:type errors: :class:`list`
:param warnings: Список предупрежденй
:type warnings: :class:`list`
:param data: Ретроспектива смены ролей пользователя
:type data: :class:`dict`
:param statistic: Интервалы работы пользователя
:type statistic: :class:`dict`
"""
def __init__(self, start_date, end_date, user_email, stat=None):
self.display = None
@ -362,12 +375,12 @@ class StatisticData:
new_stat[key] = item / (ONE_DAY * 3600)
return new_stat
def _use_interval(self, stat):
def _use_interval(self, stat: dict) -> dict:
"""
Функция объединяет ключи и значения в соответствии с интервалом работы.
:param stat:
:return:
:param stat: Статистика работы пользователя
:return: Обновленная статистика
"""
if not self.is_valid_statistic() or not self.interval:
return stat
@ -386,19 +399,21 @@ class StatisticData:
new_stat = stat # статистика изначально в днях
return new_stat
def check_time(self):
def check_time(self) -> bool:
"""
Проверка на правильность введенного времени
Функция проверяет корректность введенного времени.
:return: True, если время указано корректно. Иначе, False
"""
if self.end_date < self.start_date or self.end_date > datetime.now().date():
return False
return True
def _set_data(self):
def _set_data(self) -> dict:
"""
Функция возвращает логи в диапазоне дат start_date-end_date для пользователя с указанным email.
:return:
:return: Данные о смене статусов пользователя. Если пользователь не найден или интервал времени некорректен - ошибку.
"""
if not self.check_time():
self.errors += ['Конец диапазона должен быть позже начала диапазона и раньше текущего времени']
@ -411,11 +426,11 @@ class StatisticData:
except User.DoesNotExist:
self.errors += ['Пользователь не найден']
def _set_statistic(self):
def _set_statistic(self) -> dict:
"""
Функция заполняет словарь, в котором ключ - дата, значение - кол-во проработанных в этот день секунд.
:return:
:return: Статистика работы пользователя (statistic)
"""
self.clear_statistic()
if not self.get_data():
@ -445,22 +460,23 @@ class StatisticData:
elapsed_time = next_log.change_time - current_log.change_time
self.statistic[current_log.change_time.date()] += elapsed_time.total_seconds()
def fill_daterange(self, first, last, val=24 * 3600):
def fill_daterange(self, first: date, last: date, val: int = 24 * 3600) -> dict:
"""
Функция заполеняет диапазон дат значением val (по умолчанию val = кол-во секунд в 1 дне).
:param first:
:param last:
:param val:
:return:
:param first: Начальная дата интервала
:param last: Последняя дата интервала
:param val: Количество секунд в одном дне
:return: Статистику пользоваиеля с указанным количеством секунд в заданных днях
"""
for day in daterange(first, last):
self.statistic[day] = val
def clear_statistic(self):
def clear_statistic(self) -> dict:
"""
Функция осуществляет обновление всех дней
:return:
Функция осуществляет обновление всех дней.
:return: Статистику пользователя с количеством рабочих секунд = 0
"""
self.statistic.clear()
self.fill_daterange(self.start_date, self.end_date + timedelta(days=1), 0)

View File

@ -229,9 +229,14 @@ class AdminPageView(LoginRequiredMixin, PermissionRequiredMixin, FormView):
"""
Класс отображения страницы администратора.
.. todo::
Документация для данного класса:
:param permission_required: Права доступа к странице администратора
:type permission_required: :class:`str`
:param template_name: HTML-шаблон страницы администратора
:type template_name: :class:`str`
:param form_class: Форма страницы администратора
:type form_class: :class:`forms.AdminPageUsersForm`
:param success_url: Адрес страницы администратора
:type success_url: :class:`HttpResponseRedirect`
"""
permission_required = 'main.has_control_access'
template_name = 'pages/adm_ruleset.html'
@ -240,7 +245,10 @@ class AdminPageView(LoginRequiredMixin, PermissionRequiredMixin, FormView):
def form_valid(self, form: AdminPageUsers) -> AdminPageUsers:
"""
Функция установки ролей пользователям
Функция обновления страницы AdminPageUsers.
:param form: Форма страницы администратора
:return: Обновленная страница (пользователям проставлены новые статусы)
"""
if 'engineer' in self.request.POST:
self.make_engineers(form.cleaned_data['users'])
@ -250,10 +258,22 @@ class AdminPageView(LoginRequiredMixin, PermissionRequiredMixin, FormView):
@staticmethod
def make_engineers(users):
"""
Функция проходит по списку пользователей, проставляя статус "engineer".
:param users: Список пользователей
:return: Обновленный список пользователей
"""
[make_engineer(user) for user in users]
@staticmethod
def make_light_agents(users):
"""
Функция проходит по списку пользователей, проставляя статус "light_agent".
:param users: Список пользователей
:return: Обновленный список пользователей
"""
[make_light_agent(user) for user in users]
@staticmethod