SwedL / industrial-company

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Industrial-Company

Python Version Django Version

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

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

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

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

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

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

image

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

image

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

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

image

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

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

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

image

Установка

Скачайте код:

git clone https://github.com/SwedL/industrial-company.git

Перейдите в каталог проекта industrial-company, создайте виртуальное окружение, выполнив команду:

  • Windows: python -m venv venv
  • Linux: python3 -m venv venv

Активируйте его командой:

  • Windows: .\venv\Scripts\activate
  • Linux: source venv/bin/activate

Создайте файл .env с переменными окружения и положите туда такой код:

DEBUG=True
SECRET_KEY='vu1c-=svhigsn81!1doknfa2zxchlq&^37vdyqgc165a8wswjr'
ALLOWED_HOSTS='127.0.0.1 localhost'
INTERNAL_IPS='127.0.0.1 localhost'

POSTGRES_USER=user
POSTGRES_PASSWORD=user_pass
POSTGRES_DB=user_db

SQL_ENGINE=django.db.backends.postgresql
SQL_DATABASE=user_db
SQL_USER=user
SQL_PASSWORD=user_pass
SQL_HOST=localhost
SQL_PORT=5432

! Важно: SECRET_KEY замените на свой.
Если вы хотите использовать базу данных PostgreSQL, то замените настройки доступа к базе данных на свои.

Если хотите использовать базу данных по умолчанию SQLite, то файле settings.py каталога ic поменяйте базу данных на SQLite

Перейдите в каталог project и установите зависимости в виртуальное окружение:

pip install -r requirements.txt

Создайте необходимые таблицы базы данных командой:

python manage.py migrate

Для наполнения базы данных списком должностей, загрузите фикстуру командой:

  • Windows: python manage.py loaddata structure\fixtures\positions.json
  • Linux: python manage.py loaddata structure/fixtures/positions.json

Для наполнения базы фейковыми данными сотрудников можно воспользоваться скриптом, путь его размещения structure/management/commands/init_employees.py
Команда запуска:

python manage.py init_employees

Возможно для наполнения базы сотрудниками потребуется какое-то время image Создайте модель суперпользователя командой:

python manage.py createsuperuser

Запустите сервер:

python manage.py runserver

Для добавления разрешения на изменения данных новому пользователю необходимо выдать право structure.change_employee

Как запустить версию сайта в docker.

Скачайте код:

git clone https://github.com/SwedL/industrial-company.git

Приложение в docker настроено на работу с использованием базы данных PostgreSQL.

Перейдите в каталог проекта industrial-company.
Создайте файл .env с переменными окружения и положите туда такой код:

DEBUG=True
SECRET_KEY='vu1c-=svhigsn81!1doknfa2zxchlq&^37vdyqgc165a8wswjr'
ALLOWED_HOSTS='127.0.0.1 localhost'
INTERNAL_IPS='127.0.0.1 localhost'

POSTGRES_USER=user
POSTGRES_PASSWORD=user_pass
POSTGRES_DB=user_db

SQL_ENGINE=django.db.backends.postgresql
SQL_DATABASE=user_db
SQL_USER=user
SQL_PASSWORD=user_pass
SQL_HOST=postgres
SQL_PORT=5432

! Важно: SECRET_KEY замените на свой.

Затем выполните сборку и запуск образа:

docker-compose up -d

Если необходимо наполнить базу фейковыми данными сотрудников, используйте команду:

docker exec -it ic_project python manage.py init_employees

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

docker exec -it ic_project python manage.py createsuperuser

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

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

python manage.py test

В docker:

docker exec -it ic_project python manage.py test

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

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

About

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


Languages

Language:Python 50.6%Language:HTML 18.4%Language:JavaScript 16.9%Language:SCSS 5.5%Language:CSS 4.3%Language:Sass 4.1%Language:Dockerfile 0.3%