Final project from Udacity Full Stack Nanodegree.
URL: https://casting-agency-xaviermm.herokuapp.com
Casting Assist Token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InhPR1JhQkdoNGRJVURMTXlMM3RiSiJ9.eyJpc3MiOiJodHRwczovL3hhdmllcm1tLmF1dGgwLmNvbS8iLCJzdWIiOiJhdXRoMHw1ZWE2MThiOTZiNjliYzBjMTJkODFjOGUiLCJhdWQiOiJjYXN0aW5nLWFnZW5jeSIsImlhdCI6MTU4Nzk0NTkzMiwiZXhwIjoxNTg4NjM3MTMyLCJhenAiOiIwVzdJWWhuWmR3c1ptOHJDRWVESFQ4UGthUW5vZHFQdiIsImd0eSI6InBhc3N3b3JkIiwicGVybWlzc2lvbnMiOlsiZ2V0OmFjdG9ycyIsImdldDptb3ZpZXMiXX0.g2yRXA84xVaZTIpZxgggOeyKoU3A89bb2oqaYrJW4cDEoMwrHEW-6D4dJgOsPJPbwgWwIFpsvu4qPN7AhN-8XrFgNgZ3HfTal0p2Dt0gSmVtTzE11Ol1pRtuRqOK87-LXOFq99PXNyci8AvREeIlM4wET8GU3GxdxtwsCicSg26W-xYsTOMEg0YYOu6oxiCeEHssxeewiqsd9uqF6HIED8MlZOhiTlfDTL_reAF1h2nu4E6J9n6zvb3gkXZGtalJ8pL0WgDTI9ewwXnS69OQJZXsuG131N86eTwzPexCRpbH5QG8sxm4h8OvoamBFXTNAmESH7xS236vSwasz2OrPw
Casting Director Token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InhPR1JhQkdoNGRJVURMTXlMM3RiSiJ9.eyJpc3MiOiJodHRwczovL3hhdmllcm1tLmF1dGgwLmNvbS8iLCJzdWIiOiJhdXRoMHw1ZWE2MjMzMDZiNjliYzBjMTJkODMwNWQiLCJhdWQiOiJjYXN0aW5nLWFnZW5jeSIsImlhdCI6MTU4Nzk0NjQxMSwiZXhwIjoxNTg4NjM3NjExLCJhenAiOiIwVzdJWWhuWmR3c1ptOHJDRWVESFQ4UGthUW5vZHFQdiIsImd0eSI6InBhc3N3b3JkIiwicGVybWlzc2lvbnMiOlsiZGVsZXRlOmFjdG9ycyIsImdldDphY3RvcnMiLCJnZXQ6bW92aWVzIiwicGF0Y2g6YWN0b3JzIiwicGF0Y2g6bW92aWVzIiwicG9zdDphY3RvcnMiXX0.XX-XrJ4xCe-usyjx1FpxRbNwzdX4CH9XgXZeojx9xF9ndbVxg-VWOAIzdBZyLLPnW6Isq6CtuEwZMiys_XNKqVYQCElh9lOzKK2_esJTnmXcrB2pkI5r7MslbqFxjMhr2fyfoXSmYSrJcXxE2raxgWJjEBueLSZwSVKY9HZckybXMZoGd2tPqYFDs7gL1tygJ5FGEQdRtrXqjLyIb0DyAwM9fjWs4oE5F68p4FDL6UrVe8ZDUr4atz73T87X_AMXjKVwknK4EG4twYqpRIRWer4atBbGZ-1YtC7ZaxLgB9TKteihWk4exJyejL26kEjjAdAcAsiwLGhLJ11NuK3ehA
Executive Producer Token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InhPR1JhQkdoNGRJVURMTXlMM3RiSiJ9.eyJpc3MiOiJodHRwczovL3hhdmllcm1tLmF1dGgwLmNvbS8iLCJzdWIiOiJhdXRoMHw1ZWE2MjM2NzFjYzFhYzBjMTQ2OGEyZTAiLCJhdWQiOiJjYXN0aW5nLWFnZW5jeSIsImlhdCI6MTU4Nzk0NjQ3OSwiZXhwIjoxNTg4NjM3Njc5LCJhenAiOiIwVzdJWWhuWmR3c1ptOHJDRWVESFQ4UGthUW5vZHFQdiIsImd0eSI6InBhc3N3b3JkIiwicGVybWlzc2lvbnMiOlsiZGVsZXRlOmFjdG9ycyIsImRlbGV0ZTptb3ZpZXMiLCJnZXQ6YWN0b3JzIiwiZ2V0Om1vdmllcyIsInBhdGNoOmFjdG9ycyIsInBhdGNoOm1vdmllcyIsInBvc3Q6YWN0b3JzIiwicG9zdDptb3ZpZXMiXX0.NFzA-Mc7S8GrScsSk8uOgswCtVaxpndKQDHGT5-gprAXu3aW6m3AU93Li4qYZ9NvcB6K8rfGk2dERkZ62Erzr4OILfmj05IeIbSGlf1PFh-GakfkslC8ATOTh0x-3Bmcs5MNV9rbIVLdIQrmAIMfGezhMzGMd12DGRh2MX6k47Bw6lZVCuQfjlJmtJegZ7wTdYJ3me585qW8NRTjYKhNtKAxpZX-7brMc9nWhVwsgyFBigEYtudErULPGh2ZvaPlCMZn4PyqJHzciBmrTAlKrrl66tC3rl4wU1lu_0Xh-5SRKIq0SkG8c4j2siFU6ScDnPCzK695GpCQ2MKhDkEFdw
- Install Python 3.7 (https://www.python.org/downloads/)
virtualenv -p python3.7 venv
source venv/bin/activate
pip install -r requirements.txt
The env variables can be set running setup.sh. Before running the script set the database URI string to your local database
sudo chmod +x setup.sh
source ./setup.sh
python manage.py db init
python manage.py db migrate
python manage.py db upgrade
Finally to run the server:
flask run
GET '/movies'
GET '/actors'
POST '/movies'
POST '/actors'
POST '/movies/actors'
PATCH '/movies/<int:movie_id>'
PATCH '/actors/<int:actor_id>'
DELETE '/movies/<int:movie_id>'
DELETE '/movies/<int:actor_id>'
- Fetches a list for all available movies
- Request Arguments: None
- Returns:
{
'success': True, # request status
'movies': # List of dicts { 'tile', 'release_date' }
}
- Fetches a list for all available actors
- Request Arguments: None
- Returns:
{
'success': True, # request status
'actors': # List of dicts { 'name', 'age', 'gender' }
}
-
Create a new movie, require the title and release date
-
Request Arguments:
- title: string
- release_date: string, date format (YYYY-MM-DD)
-
Returns:
{
'success': True,
'movie_id': # ID of the new created movie
}
-
Create a new actor, require the name, age and gender
-
Request Arguments:
- name: string
- gender: string
- age: int
-
Returns:
{
'success': True,
'actor_id': # ID of the new created actor
}
-
Create a new relation movie-actor require the movie and actor id
-
Request Arguments:
- movie_id: int
- actor_id: int
-
Returns:
{
'success': True,
'actor_id': # ID of the actor
'movie_id': # ID of the movie
}
-
Update the title and/or release date
-
Request Arguments:
- movie_id: int
- tile: new movie title
- release_date: new release date
-
Returns:
{
'success': True,
'movie_id': # ID of the updated movie
}
-
Update the name, age, gender of an actor
-
Request Arguments:
- actor_id: int
- name: string
- age: int
- gender: string
-
Returns:
{
'success': True,
'actor_id': # ID of the updated actor
}
-
Delete a movie
-
Request Arguments:
- movie_id: int
-
Returns:
{
'success': True,
'movie_id': # ID of the deleted movie
}
-
Delete an actor
-
Request Arguments:
- actor_id: int
-
Returns:
{
'success': True,
'actor_id': # ID of the deleted actor
}
To run the Test Cases:
python test_app.py