Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 82 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,84 @@
[![Build Status](https://app.travis-ci.com/kpdvstu/PTLab2.svg?branch=master)](https://app.travis-ci.com/kpdvstu/PTLab2)
# Лабораторная 2 по дисциплине "Технологии программирования"


## Цель работы
- Познакомиться с моделью **MVC** и её реализацией во фреймворке **Django**.
- Разобраться с сущностями «модель», «контроллер», «представление».
- Получить навыки разработки веб-приложений с использованием Django.
- Освоить написание модульных тестов.
- Выполнить индивидуальное задание по варианту.

## Постановка задачи
Базовый учебный проект представляет собой интернет-магазин, реализованный с помощью Django и базы данных PostgreSQL.

### Индивидуальное задание (вариант 8 — Магазин электроники)
В магазине имеется определённое количество товара каждого вида.
После продажи каждых 10 экземпляров любого товара его цена возрастает на **15%**.

Функциональность реализована через расширение модели `Product`:
- добавлены поля `sold_count` и `initial_quantity`;
- метод `sell()` автоматически уменьшает остатки, увеличивает счётчик продаж и повышает цену при достижении порога (10, 20, 30 … продаж).

## Используемые технологии
- Python 3.8
- Django 4.2
- PostgreSQL
- psycopg (драйвер для PostgreSQL)
- Unittest (модульные тесты)

## Развёртывание проекта
1. Клонировать репозиторий:
```bash
git clone https://github.com/<ваш_логин>/PTLab2.git
cd PTLab2
```
2. Создать базу данных PostgreSQL:
```sql
CREATE DATABASE django_db OWNER postgres;
```
3. Установить переменную окружения с паролем PostgreSQL (пример для PowerShell):
```powershell
$env:DATABASE_PASSWORD = "ps_password"
```
4. Создать и активировать виртуальное окружение:
```bash
conda create -n tplab2-env python=3.8
conda activate tplab2-env
```
5. Установить зависимости:
```bash
pip install -r requirements.txt
```
6. Выполнить миграции и загрузить данные:
```bash
python manage.py migrate
python manage.py loaddata products.yaml
```
7. Запустить сервер:
```bash
python manage.py runserver
```
Перейти в браузере по адресу: [http://127.0.0.1:8000](http://127.0.0.1:8000)

## Тестирование
Запуск всех тестов:
```bash
python manage.py test shop/tests/
```

Результат: **7 тестов — все проходят успешно**.
Тесты проверяют:
- корректность типов данных в модели,
- уменьшение количества товара при покупке,
- рост цены на 15% после каждой 10-й продажи,
- мультипликативное повышение цены при пересечении нескольких порогов за одну покупку.

## Результаты
- Изучена модель MVC на примере Django.
- Развёрнут базовый учебный проект интернет-магазина.
- Реализована дополнительная функциональность по индивидуальному заданию.
- Все тесты успешно пройдены.

## License
Проект распространяется по лицензии (LICENSE).