An open API service indexing awesome lists of open source software.

https://github.com/alexfofanov/company-structure

Django-приложение с древовидной структурой подразделений и списком сотрудников
https://github.com/alexfofanov/company-structure

django django-mptt django-rest-framework docker docker-compose mysql pytest python3

Last synced: 3 months ago
JSON representation

Django-приложение с древовидной структурой подразделений и списком сотрудников

Awesome Lists containing this project

README

          

# Тестовое задание
Создайте веб страницу, которая будет выводить древовидную структуру отделов со списком сотрудников.
Информация о каждом сотруднике должна храниться в базе данных и содержать следующие данные:
* ФИО;
* Должность;
* Дата приёма на работу;
* Размер заработной платы;
* Подразделение - подразделение имеет структуру до 5 уровней;

Дерево должно отображаться в свернутом виде.
База данных должна содержать не менее 50 000 сотрудников и 25 подразделений в 5 уровнях иерархий
Управление записями CRUD через административную часть Django
Django 3+, Python 3.5+, база на свое усмотрение
Используйте Twitter Bootstrap для создания базовых стилей Вашей страницы.

# Решение
В рамках выполнения задания реализована веб-страница с древовидной структурой отделов и сотрудников.
Технологический стек выбран исходя из требований указанных в вакансии и личных предпочтений.

## Технологический стек:
- Бэкенд: Python 3.12, Django 4.2(LTS), Django REST Framework, MariaDB 11, django-mptt, Bootstrap 5
- Инфраструктура: Docker, Docker Compose, uv
- Тестирование: pytest, pytest-django

Для демонстрации проекта созданы тестовые данные в требуемом заданием объеме.
Доступ к странице с данными об отделах и сотрудниках: http://127.0.0.1:8000/staff/
Пользователь: admin пароль: admin

Доступ к административной панели можно получить по ссылке: http://127.0.0.1:8000/admin/
Пользователь: admin пароль: admin

## Установка и запуск
Клонируем репозиторий:
```
git clone git@github.com:alexfofanov/company-structure.git
```
Переходим в папку проекта:
```
cd company-structure
```
Создаём и при необходимости редактируем файл настройки проекта .env
```
cp .env.sample .env
```
Запуск сервиса:
```
docker compose up --build -d
```
Запуск тестов:
```
docker compose exec django /app/.venv/bin/pytest -v
```
Остановка сервиса:
```
docker compose down -v
```