Skip to content

thunderamur/django_csv_upload_n_report

Repository files navigation

django_csv_upload_n_report

Задача про сотрудников.
В компании работают 10000 сотрудников.
Имеется файл регистрации времени работы сотрудников по
дням за 3 года в формате CSV:
date;name;hours
2019-05-01;Андрей;8
2019-05-01;Василий;11
2019-05-02;Роман;7
2019-05-05;Андрей;6
2019-05-10;Роман;11
2019-06-01;Василий;6
...
Если имя сотрудника повторяется, то это один и тот же
сотрудник.
Нужно написать сервис на Django, который позволяет
загрузить указанный выше файл.
Этот сервис из указанного файла по заданному промежутку
дат (задаётся через форму на сайте) формируется отчёт по
детализации по каждому из сотрудников (тоже в формате
CSV)
Например, если в форме задали с 2019-05-01 по 2019-05-05:
то в результате скачаем файл
name; 2019-05-01;2019-05-02;2019-05-05;sum_hours
Андрей;8;-;6;14
Василий;11;-;-;11
Роман;-;7;-;7
Видно, что полностью пустые столбцы(даты) отсутствуют.

Установка

  1. Установим зависимости
pip install -r requirements.txt
  1. Создадим БД (Postgres) с паролем 'password', создадим и применим миграции.
utils/reset.sh -0
  1. Запускаем проект
python manage.py runserver
  • В корне проекта есть образец CSV-файла из задания data.csv.
  • Можно сгенерировать большой файл с помощью create_big_csv.py

TODO

  • Больше тестов
  • Получение результата в sql, не с помощью python. Не знаю как это сделать в SQL, но наверное можно. Хотя текущая реализация для 10 000 сотрудников за 30 дней отрабатывает за 3 секунды.
  • Загрузка CSV очень медленная на пару порядков медленнее генерации отчета, не знаю как её ускорить в 100 раз.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published