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.