Skip to content

SwedL/industrial-company

Repository files navigation

Industrial-Company

Python Version Django Version

Приложение для сайта промышленной компании, выполненное по тестовому заданию.
Штат сотрудников компании более 50000 человек

Рабочую версию сайта вы можете посмотреть на https://icompany-pro.ru

Описание работы приложения

Приложение состоит из четырёх интерфейсов.

  • Авторизация пользователя
  • Древовидная структура компании
  • Страница списка сотрудников, сгруппированных по выбранным параметрам поиска
  • Интерфейс администратора для приёма и распределения сотрудников

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

Страница, после авторизации, на которой, можно будет получить доступ к информации приложения, в зависимости от прав пользователя.

image

Древовидная структура компании

image

Пользователь без прав изменения данных Пользователь с правами изменения данных
может переходить по блокам отделов и должностей менеджеров дополнительно получает возможность снимать с должности и менять менеджеров используя drag-n-drop сразу в дереве структуры компании
gif gif
Изменение базы данных происходит путём обмена сообщений канала Websocket

Страница списка сотрудников

  • переход в подразделение компании, осуществляется при нажатии на подразделение в древовидной структуре компании

image

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

Интерфейс администратора "приём и распределение сотрудников"

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

image

Запуск сервера:

Локально в Docker контейнере

  • Склонируйте репозиторий:
git clone https://github.com/SwedL/industrial-company.git
  • Перейдите в каталог проекта
cd industrial-company
  • Установите переменные окружения. Создайте файл .env и скопируйте содержимое из .env.dev.example, подставьте свои значения.
  • Запустите контейнеры.
docker compose up --build

Создайте модель суперпользователя

  • Войдите в терминал контейнера с помощью команды:
docker exec -it project bash
  • Создайте суперпользователя:
python3 manage.py createsuperuser
  • Для наполнения базы фейковыми данными сотрудников можно воспользоваться скриптом
    Команда запуска:
python3 manage.py init_employees

На удалённом сервере в Docker контейнере

  • Склонируйте репозиторий:
git clone https://github.com/SwedL/industrial-company.git
  • Перейдите в каталог проекта
cd industrial-company
  • Установите переменные окружения. Создайте файл .env и скопируйте содержимое из .env.prod.example, подставьте свои значения.
  • Создайте директории для certbot, выполнив:
mkdir -p certbot/conf
mkdir certbot/www
  • Измените в docker-compose.prod.yml в строке 76 ваш email и ваш домен, для получения SSL-сертификата от Let's Encrypt
  • Перейдите в директорию nginx/prod/default.conf и в строках 4, 17, 19, 20 установите значение вашего домена
  • Запустите контейнеры.
docker compose -f docker-compose.prod.yml up --build

Создайте модель суперпользователя

  • Войдите в терминал контейнера с помощью команды:
docker exec -it project bash
  • Создайте суперпользователя:
python3 manage.py createsuperuser
  • Для наполнения базы фейковыми данными сотрудников можно воспользоваться скриптом
    Команда запуска:
python3 manage.py init_employees

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

industrial-company/
├── nginx/               # Директория конфигурационных файлов обратного прокси сервера           
│   └── ...   
└── project/             # Директория Django проекта
    ├── ic/              # Django проект ic
    │   └── ... 
    ├── structure/       # Приложение structure
    │   ├── consumers/   # Обработка асинхронных событий websocket соединений
    │   ├── fixtures/    # Начальные данные для заполнения БД
    │   ├── management/  # Собственные скрипты проекта для manage.py
    │   ├── migrations/   
    │   ├── permissions/ # Функции-разрешения для пользователей
    │   ├── services/    # Сервисы - выполняют операции над данными
    │   ├── static/       
    │   ├── templates/    
    │   ├── tests/       # Тесты шаблонов, форм, представлений
    │   ├── admin.py     
    │   ├── models.py    
    │   ├── routing.py   # Маршрутизация асинхронных событий websocket соединений
    │   ├── urls.py      
    │   ├── views.py     
    │   └── ...
    ├── Dockerfile    
    ├── manage.py    
    └── pyproject.toml   # Конфигурация Poetry    

Тестирование

Проект покрыт тестами моделей, форм, представлений и url.
Тесты запускаются командой:

python manage.py test

В docker:

docker exec -it project python manage.py test

Автор проекта

  • Осминин Алексей - SwedL

About

Web application for automating the work of the HR department of an industrial company

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published