Skip to content

agas0077/saving-tracker

Repository files navigation

web-forms

Основная идея проекта: заменить power apps microsoft. Структура проекта заключется в следующем: есть два основных приложения, которые устанавливают настройки всего проекта. Остальные приложения являются по сути самостоятельными сущностями, которые выполняют какую либо отдельную функцию, будь то заполнение формы для отправки в БД, получение каких-либо данных, построение визуализаций и т.д.

Запуск

Для запуска проекта необходимо:

  • Клонировать проект на компьютер или сервер;
  • Установить виртуальное окружение python -m venv venv ;
  • Включить вирутальное окружение:
    • Windows venv\Scripts\activate
    • Linux souce venv/bin/actibate
  • Из корня проекта (там где файл requirements.txt) установить зависимости pip install -r requirements.txt
  • Найти дирректорию, в которой лежит файл manage.py и запустить его командой python manage.py runserver или любым другим способом)

Готово. Проект запущен!

Заполнение файла .env

В проекте использовано много логинов, паролей и прочей особо ценной информации, которую нельзя хранить в коде, поэтому важно правильно создать и заполнить файл с этими переменными. Итак:

Параметры Django
  • SECRET_KEY=some_secret_key - секретный ключ Django
  • DEBUG=True - запускам проект в режиме разработки или продакшена
Параметры OAuth2.0
  • GOOGLE_CID=oauth_cid - client id из личного кабинета сервиса авторизации
  • GOOGLE_CSECRET=oauth_secret - secret из личного кабинета сервиса авторизации
Параметры отправки email, распространяются на все приложения в проекте.
  • SEND_EMAIL=True - если False, то ни одна из перечисленных ниже переменных не будут загружены в проект
  • EMAIL_HOST=smtp.yandex.abs
  • EMAIL_PORT=465
  • EMAIL_USE_SSL=True
  • DEFAULT_FROM_EMAIL=someone@email.abs - тот, кто будет отображаться в поле "От"
  • EMAIL_HOST_USER=someone@email.abs - чей ящик используется, обычно копия предыдущего поля
  • EMAIL_HOST_PASSWORD=ijeflskjflks - пароль доступа к серверу (!= пароль от почты)
  • EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend - подходящий бекенд Django

Описания доступных приложений

web-form
Основное приложений. Все что делает - это содержит:
  • настройки;
  • базовый шаблон и инклюдсы, которые могут быть использованы во всех приложениях;
  • исходные пути к каждому приложению. При создании нового приложения, путь к нему добавлятся сюда в urls.py
Описание эндпоинтов
  • '' - перенаправляет в приложение users.
  • 'saving_tracker/' - перенаправляет в приложениее saving_tracker.
  • 'admin/' - перенаправляет в админку. Доступна только заранее определенным пользователям.
users
Основное приложений пользователей для всех приложений. По сути сюда надо добавлять любого пользователя, а также любого человека, информацию о котором надо хранить.
Так же в этом приложении надо регистрировать любое новое создаанное приложение, так как через таблицу User_App создается список доступных пользователю приложений.
Описание эндпоинтов
  • 'login/' - стандартная форма входа. Логин - email.
  • 'logout/' - эндпоинт выхода, перенаправляет на страницу входа.
  • '' - отображает список доступных пользователю приложений.
saving-tracker
Первое полноценное приложение проекта. Занимается ведением списка проектов и его увеличением, рассчитывает их экономию и уведомляет ключевых пользователей каждого из проектов о каких-либо изменениях в них.
Модели
  • SupportFunction - модель-список бизнес функций.
    • title - человекочитаемое название
      • Максимальная длина 200 символов
    • pk - индекс
  • SavingType - модель-список статусов высокого уровня.
    • title - человекочитаемое название
      • Максимальная длина 200 символов
    • pk - индекс
  • LowLevelStatus - модель-список статусов низкого уровня.
    • title - человекочитаемое название
      • Максимальная длина 200 символов
    • pk - индекс
  • Group - модель-список групп.
    • title - человекочитаемое название
      • Максимальная длина 200 символов
    • pk - индекс
  • RiskAdjustment - модель-список уровней риска.
    • title - человекочитаемое название
      • Максимальная длина 200 символов
    • pk - индекс
  • LossesForAttack - модель-список типов потерь.
    • title - человекочитаемое название
      • Максимальная длина 200 символов
    • pk - индекс
  • BusinessArea - модель-список бизнес сегментов.
    • title - человекочитаемое название
      • Максимальная длина 200 символов
    • pk - индекс
  • Stream - модель-список направлений.
    • title - человекочитаемое название
      • Максимальная длина 200 символов
    • pk - индекс
  • Project - основная модель приложения. Хранит информацию о каждом проекте.
    • title - человекочитаемое название
      • Тип поля CharField
      • Максимальная длина 200 символов
    • pk - индекс
    • owner - владелец проекта
      • Тип поля ForeignKey
      • Ссылка на модель User
      • Не даст удалить объект User, если у него есть проекты
    • support_function - функция.
      • Тип поля ForeignKey
      • Ссылка на модель SupportFunction
      • Не даст удалить объект SupportFunction, если у него есть проекты
    • initial_start_date - дата старта проекта.
      • Тип поля DateField
    • planned_start_date - плановая дата старта проекта.
      • Тип поля DateField
    • project_end_date - дата окончания проекта.
      • Тип поля DateField
    • saving_potential - функция.
      • Тип поля FloatField
    • saving_type - функция.
      • Тип поля ForeignKey
      • Ссылка на модель SavingType
      • Не даст удалить объект SavingType, если у него есть проекты
    • high_level_status - статус высокого уровня.
      • Тип поля ForeignKey
      • Ссылка на модель HighLevelStatus
      • Не даст удалить объект HighLevelStatus, если у него есть проекты
    • low_level_status - статус низкого уровня.
      • Тип поля ForeignKey
      • Ссылка на модель LowLevelStatus
      • Не даст удалить объект LowLevelStatus, если у него есть проекты
    • comment - комментарий.
      • Тип поля TextField
      • Необязательное поле
    • coordinator - координатор проекта.
      • Тип поля ForeignKey
      • Ссылка на модель User
      • Не даст удалить объект User, если у него есть проекты
    • group - группа.
      • Тип поля ForeignKey
      • Ссылка на модель Group
      • Не даст удалить объект Group, если у него есть проекты
    • risk_adjustment - уровень риска.
      • Тип поля ForeignKey
      • Ссылка на модель RiskAdjustment
      • Не даст удалить объект RiskAdjustment, если у него есть проекты
    • budget_use - используется ли бюджет.
      • Тип поля BooleanField
    • approved - согласован ли проект.
      • Тип поля BooleanField
    • losses_for_attack - тип потерь.
      • Тип поля ForeignKey
      • Ссылка на модель LossesForAttack
      • Не даст удалить объект LossesForAttack, если у него есть проекты
    • business_area - бизнес сегмент.
      • Тип поля ForeignKey
      • Ссылка на модель BusinessArea
      • Не даст удалить объект BusinessArea, если у него есть проекты
    • stream - направление.
      • Тип поля ForeignKey
      • Ссылка на модель Stream
      • Не даст удалить объект Stream, если у него есть проекты
    • local_focus - является ли проект фокусным.
      • Тип поля BooleanField
    • srs_number - номер SRS (больше не используется, в формах не отображается).
      • Тип поля CharField
      • Максимальная длина 20 символов
      • Необязательное поле
    • folder_url - ссылка на папку с проектом.
      • Тип поля URLField
      • Необязательное поле
    • Все поля share - доли в чем либо.
      • Значение в каждом поле может быть от 0 до 1
      • Суммы по полям (primary_share, secondary_share, wharehose_share), (personal_care_share, home_care_share, tea_share, food_share, ic_share) и (share_2020, share_2021...share_2027) должны быть равны 1. Важно проверять это в формах
Обязательные проверки
  • Суммы по полям (primary_share, secondary_share, wharehose_share), (personal_care_share, home_care_share, tea_share, food_share, ic_share) и (share_2020, share_2021...share_2027) должны быть равны 1.
  • Каждое поле primary_share, secondary_share, wharehose_share, personal_care_share, home_care_share, tea_share, food_share, ic_share, share_2020, share_2021...share_2027 должны быть между 0 и 1.
  • Все даты находятся в пределах с 01.01.2020 по 31.12.2020
  • Нельзя сохранить проект с полем high_level_status == 'Done', если у него potential_saving >= 40 kE, а поле approved == False.
Описание эндпоинтов
  • 'index/' - страница с основной таблицей. С нее можно зайти в любой проект, ее можно фильтровать, на ней отображается обобщенная инфомрция о проектах в рахных статусах и о суммарных сейвингах по типам. С нее можно скачать таблицу по кнопке.
  • 'update_project/' - отображает форму проекта с уже заполненными значениями, соответствующими тем, что записаны в проекте. Поля можно корректировать, а затем сохранять. После обновления координатору приходит письмо со списком изменений.
  • 'create_project/' - отображает форму проекта без заполненных полей. После сохрания создает новый проект.
  • 'download_table/' - позволяет скачать таблицу со всеми характеристиками всех проектов. Все доли ('_share_') конвертирует в абсолютные значения исходя из saving_poential.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published