{% extends 'base.html' %} {% block content %}

Задание к лабораторной работе №5

Доработайте веб-приложение, разработанное в рамках ЛР4 "Реализация CRUD-интерфейса". Добавьте к нему функциональность авторизации пользователей и формирования статистических отчётов.

Авторизация пользователей

Добавьте в приложение авторизацию пользователей, то есть проверку прав пользователей на совершение определённых действий и ограничение доступа к функциональности, для доступа к которой у пользователя нет прав. Права пользователей должны быть привязаны к их ролям.

У пользователей с ролью "Администратор" есть право на:

У пользователей с ролью "Пользователь" есть право на:

Реализация проверки прав должна быть реализована при помощи декоратора check_rights, который можно применить к view function. В случае, если у пользователя оказалось недостаточно прав для выполнения запрашиваемого действия, его нужно перенаправить на главную страницу с сообщением "У вас недостаточно прав для доступа к данной странице.".

Пользователю не должны отображаться кнопки, соответствующие действиям, для выполнения которых у него недостаточно прав.

Формирование статистических отчётов

Добавьте в разрабатываемое приложение "Журнал посещений", в котором разместите информацию посещении пользователями различных страниц сайта. Для этого создайте таблицу visit_logs со следующими полями:

Для автоматического заполнения данной таблицы рекомендуется использовать декоратор before_request.

Функциональность формирования отчётов необходимо вынести в отдельный модуль и подключать к приложению при помощи Blueprint'а.

На главной странице журнала посещений нужно отобразить записи таблицы visit_logs, отсортированные по убыванию даты. На этой странице должна быть табличка с колонками:

Должна быть предусмотрена пагинация записей.

На главной странице журнала посещений должны быть расположены ссылки на страницы с отчётами по посещениям по страницам и по пользователям.

На странице с отчётом по страницам должна быть таблица, отображающая статистику посещения страниц сайта. В ней должны быть колонки "№", "Страница" и "Количество посещений". Данные должны быть отсортированы в убывающем порядке количества посещений.

Под таблицей должна располагаться кнопка "Экспорт в CVS", по нажатию на которую должен скачиваться файл с содержимым отчёта в формате CSV.

Аналогичным образом нужно реализовать формирования отчёта по пользователям. Только в данном случае в таблице будут колонки "№", "Пользователь" (ФИО или "Неаутентифицированный пользователь"), "Количество посещений".

{% endblock %}