This Django project provides views for managing products. It implements a Product model with fields for name, description, uuid, created, updated, logo, and rotate_duration.
The project uses Celery to handle the delayed task of loading the photo for the logo field and rotating the image 180 degrees. It also implements the ability to change a product only once and ensures adherence to PEP8 standards.
- Git repository access
- Project documentation in README.md
- Virtual environment (preferably pipenv -> used poetry)
- Migrations
- English language (comments and string constants)
- Proper logging of main processes
- Clone the repository
- Create a virtual environment using
poetry
- Install dependencies with
poetry install
- Run migrations with
python manage.py migrate
- Start the development server with
python manage.py runserver
- AWS EC2 - for deploying django app on linux instance (Used docker, nginx, gunicorn)
- AWS S3 BUCKET - for media files
- Amazon MQ - Used Rabbit MQ
- Amazon RDS - Used PostgreSQL
GET /products/
- list all products (with pagination)GET /products/[uuid]/
- retrieve a specific product by uuidPOST /products/
- create a new productPUT /products/[uuid]/
- update an existing productDELETE /products/[uuid]/
- delete a product by uuid
- Unit tests are implemented and can be run using python manage.py test.