Skip to content

slaverchief/DevOps-task-app

Repository files navigation

Система учета аудиторного фонда университета

Веб-приложение для учета и управления аудиторным фондом университета, разработанное на Django.

Описание проекта

Система предназначена для комплексного учета аудиторного фонда университета, включая:

  • Управление корпусами: информация о корпусах, их адресах, количестве этажей
  • Учет помещений: детальная информация о каждом помещении с расчетом площадей и объемов
  • Структура подразделений: иерархическая организация подразделений университета
  • Статистика и отчеты: автоматический расчет площадей, объемов и вместимости

Основные возможностиs

1. Расчет данных о площадях и объема

  • Автоматический расчет площади помещений (ширина × длина)
  • Расчет объема помещений (площадь × высота потолков)
  • Оценочная вместимость (площадь ÷ 2 кв.м на человека)
  • Общая статистика по корпусам и подразделениям

2. Структура подразделений в корпусах

  • Просмотр иерархической структуры подразделений
  • Определение факультетов, кафедр и лабораторий в каждом корпусе
  • Статистика по подразделениям

3. Управление корпусами

  • Добавление новых корпусов
  • Редактирование информации о корпусах
  • Удаление корпусов (с проверкой связанных помещений)

4. Управление помещениями

  • Добавление новых помещений
  • Редактирование информации о помещениях
  • Удаление помещений
  • Фильтрация по корпусам, назначению и типу

Запуск тестов

Bash

cd DevOps-task-app
DJANGO_SETTINGS_MODULE=university_auditorium.settings_tests coverage run --source=auditorium_app manage.py test
coverage report -m

PowerShell

cd DevOps-task-app
$env:DJANGO_SETTINGS_MODULE="university_auditorium.settings_tests"; coverage run --source=auditorium_app manage.py test
coverage report -m

Технические требования

  • Python 3.8+
  • Django 4.2.7
  • SQLite (по умолчанию) или PostgreSQL/MySQL
  • Bootstrap 5.3.0 (для интерфейса)

Установка и запуск

Быстрый запуск (Windows)

  1. Двойной клик на start.bat - автоматически создаст виртуальное окружение, установит зависимости и запустит приложение

  2. Или через PowerShell:

    .\start.ps1

Ручная установка

1. Клонирование репозитория

git clone <repository-url>
cd university-auditorium

2. Создание виртуального окружения

# Windows
python -m venv venv
venv\Scripts\activate

# Linux/Mac
python -m venv venv
source venv/bin/activate

3. Установка зависимостей

pip install -r requirements.txt

4. Настройка базы данных

python manage.py makemigrations
python manage.py migrate

5. Инициализация тестовых данных

python init_db.py

6. Создание суперпользователя (опционально)

python manage.py createsuperuser

7. Запуск сервера разработки

python manage.py runserver
# или
python run.py

Приложение будет доступно по адресу: http://127.0.0.1:8000/

Доступ к приложению

Структура проекта

university_auditorium/
├── auditorium_app/           # Основное приложение
│   ├── models.py            # Модели данных
│   ├── views.py             # Представления (контроллеры)
│   ├── forms.py             # Формы для ввода данных
│   ├── urls.py              # URL маршруты
│   ├── admin.py             # Административный интерфейс
│   └── templates/           # HTML шаблоны
│       └── auditorium_app/
│           ├── base.html    # Базовый шаблон
│           ├── index.html   # Главная страница
│           ├── buildings_*.html  # Страницы корпусов
│           ├── rooms_*.html      # Страницы помещений
│           └── departments_*.html # Страницы подразделений
├── university_auditorium/   # Настройки проекта
│   ├── settings.py         # Основные настройки
│   ├── urls.py             # Корневые URL маршруты
│   └── wsgi.py             # WSGI конфигурация
├── static/                 # Статические файлы
├── init_db.py             # Скрипт инициализации БД
├── requirements.txt       # Зависимости Python
├── manage.py             # Управляющий скрипт Django
└── README.md             # Документация

Модели данных

Building (Корпус)

  • name - Наименование корпуса
  • address - Адрес корпуса
  • floors_count - Количество этажей
  • description - Описание

Room (Помещение)

  • building - Связь с корпусом
  • room_number - Номер комнаты
  • floor - Этаж
  • location_in_building - Расположение в корпусе
  • width, length - Размеры помещения
  • ceiling_height - Высота потолков
  • purpose - Назначение помещения
  • room_type - Тип помещения
  • department - Закрепленное подразделение

Department (Подразделение)

  • name - Название подразделения
  • parent - Родительское подразделение (иерархия)
  • department_type - Тип подразделения
  • description - Описание

BuildingFloor (Этаж корпуса)

  • building - Связь с корпусом
  • floor_number - Номер этажа
  • ceiling_height - Высота потолков на этаже

API Endpoints

Основные страницы

  • / - Главная страница со статистикой
  • /buildings/ - Список корпусов
  • /buildings/<id>/ - Детальная информация о корпусе
  • /rooms/ - Список помещений
  • /rooms/<id>/ - Детальная информация о помещении
  • /departments/ - Структура подразделений

CRUD операции

  • /buildings/create/ - Создание корпуса
  • /buildings/<id>/edit/ - Редактирование корпуса
  • /buildings/<id>/delete/ - Удаление корпуса
  • /rooms/create/ - Создание помещения
  • /rooms/<id>/edit/ - Редактирование помещения
  • /rooms/<id>/delete/ - Удаление помещения

API для AJAX

  • /api/rooms/<id>/calculations/ - Расчеты помещения
  • /api/buildings/<id>/statistics/ - Статистика корпуса

Особенности реализации

1. Автоматические расчеты

  • Площадь: ширина × длина
  • Объем: площадь × высота потолков
  • Вместимость: площадь ÷ 2 (2 кв.м на человека)

2. Валидация данных

  • Проверка уникальности номеров комнат в корпусе
  • Валидация размеров помещений
  • Проверка соответствия этажа количеству этажей в корпусе

3. Иерархическая структура подразделений

  • Рекурсивное построение дерева подразделений
  • Поддержка неограниченной глубины вложенности
  • Автоматический расчет полного пути подразделения

4. Фильтрация и поиск

  • Фильтрация помещений по корпусам
  • Фильтрация по назначению и типу помещений
  • Пагинация для больших списков

Административный интерфейс

Доступ к административному интерфейсу Django:

  • URL: /admin/
  • Требуется создание суперпользователя

Развертывание в продакшене

1. Настройка базы данных

Для продакшена рекомендуется использовать PostgreSQL или MySQL:

# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'university_auditorium',
        'USER': 'your_username',
        'PASSWORD': 'your_password',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

2. Настройка статических файлов

# settings.py
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

3. Настройка безопасности

# settings.py
DEBUG = False
ALLOWED_HOSTS = ['your-domain.com']
SECRET_KEY = 'your-secret-key'

4. Сборка статических файлов

python manage.py collectstatic

Лицензия

Проект распространяется под лицензией MIT License.

Авторы

Разработано в рамках учебного проекта по дисциплине "Разработка веб-приложений".

Поддержка

Для получения поддержки или сообщения об ошибках создайте issue в репозитории проекта.

Changelog

v1.0.0 (2024)

  • Первоначальная версия
  • Базовый функционал учета корпусов и помещений
  • Расчет площадей и объемов
  • Иерархическая структура подразделений
  • Веб-интерфейс на Bootstrap

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors