Skip to content

Commit 4ced652

Browse files
authored
Merge pull request #60 from tecladocode/jose/recording-improvements-aug-22
2 parents 9d22570 + bb0278c commit 4ced652

File tree

484 files changed

+824
-753
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

484 files changed

+824
-753
lines changed

docs/docs/01_course_intro/04_what_is_rest_api/README.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ That data might look like this:
6262

6363
### The purpose of APIs
6464

65-
Okay, we've learned that we can make a Flask app and expose certain functions to the public by using endpoints. Clients can then make requests (we'll learn how later), and get data.
65+
We've learned that we can make a Flask app and expose certain functions to the public by using endpoints. Clients can then make requests (we'll learn how later), and get data.
6666

67-
Clients can also send data, which the functions can use.
67+
Clients can also send data, which the Flask functions can use.
6868

6969
But _why_? If you want to use certain functions, why not just code them in your application?
7070

@@ -74,10 +74,14 @@ Let's say you want to build a weather app.
7474

7575
You could try to install sensors at the top of your house, connect them directly to the computer running your code, and then offer weather info based on what the sensors say...
7676

77-
Or you could request weather data from the OpenWeatherMap API, just as tens of thousands of other devices do.
77+
Or you could request weather data from the OpenWeatherMap API, just as tens of thousands of other devices do.
7878

7979
Much easier, and all you have to do is make a request to the API!
8080

81+
### What is a client?
82+
83+
An API client can be any device, such as a web app or a mobile app.
84+
8185
### Making an API for your own consumption
8286

8387
Make software companies make APIs that only they use (so they aren't fully public).

docs/docs/06_sql_storage_sqlalchemy/02_create_simple_sqlalchemy_model/end/models/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ class ItemModel(db.Model):
55
__tablename__ = "items"
66

77
id = db.Column(db.Integer, primary_key=True)
8-
name = db.Column(db.String(80), unique=True, nullable=False)
8+
name = db.Column(db.String(80), unique=False, nullable=False)
99
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
1010
store_id = db.Column(db.Integer, unique=False, nullable=False)

docs/docs/06_sql_storage_sqlalchemy/03_one_to_many_relationships_sqlalchemy/end/models/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class ItemModel(db.Model):
55
__tablename__ = "items"
66

77
id = db.Column(db.Integer, primary_key=True)
8-
name = db.Column(db.String(80), unique=True, nullable=False)
8+
name = db.Column(db.String(80), unique=False, nullable=False)
99
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
1010

1111
store_id = db.Column(

docs/docs/06_sql_storage_sqlalchemy/03_one_to_many_relationships_sqlalchemy/start/models/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ class ItemModel(db.Model):
55
__tablename__ = "items"
66

77
id = db.Column(db.Integer, primary_key=True)
8-
name = db.Column(db.String(80), unique=True, nullable=False)
8+
name = db.Column(db.String(80), unique=False, nullable=False)
99
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
1010
store_id = db.Column(db.Integer, unique=False, nullable=False)

docs/docs/06_sql_storage_sqlalchemy/04_configure_flask_sqlalchemy/end/models/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class ItemModel(db.Model):
55
__tablename__ = "items"
66

77
id = db.Column(db.Integer, primary_key=True)
8-
name = db.Column(db.String(80), unique=True, nullable=False)
8+
name = db.Column(db.String(80), unique=False, nullable=False)
99
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
1010

1111
store_id = db.Column(

docs/docs/06_sql_storage_sqlalchemy/04_configure_flask_sqlalchemy/start/models/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class ItemModel(db.Model):
55
__tablename__ = "items"
66

77
id = db.Column(db.Integer, primary_key=True)
8-
name = db.Column(db.String(80), unique=True, nullable=False)
8+
name = db.Column(db.String(80), unique=False, nullable=False)
99
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
1010

1111
store_id = db.Column(

docs/docs/06_sql_storage_sqlalchemy/05_insert_models_sqlalchemy/README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ description: Learn how to use SQLAlchemy to add new rows to our SQL database.
1414
Inserting models with SQLAlchemy couldn't be easier! We'll use the `db.session`[^1] variable to `.add()` a model. Let's begin working on our `Item` resource:
1515

1616
```python title="resources/item.py"
17+
from sqlalchemy.exc import SQLAlchemyError
18+
19+
from db import db
20+
from models import ItemModel
21+
22+
...
23+
1724
@blp.arguments(ItemSchema)
1825
@blp.response(201, ItemSchema)
1926
def post(self, item_data):
@@ -31,6 +38,13 @@ def post(self, item_data):
3138
Similarly in our `Store` resource:
3239

3340
```python title="resources/store.py"
41+
from sqlalchemy.exc import SQLAlchemyError, IntegrityError
42+
43+
from db import db
44+
from models import StoreModel
45+
46+
...
47+
3448
@blp.arguments(StoreSchema)
3549
@blp.response(201, StoreSchema)
3650
def post(self, store_data):

docs/docs/06_sql_storage_sqlalchemy/05_insert_models_sqlalchemy/end/models/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class ItemModel(db.Model):
55
__tablename__ = "items"
66

77
id = db.Column(db.Integer, primary_key=True)
8-
name = db.Column(db.String(80), unique=True, nullable=False)
8+
name = db.Column(db.String(80), unique=False, nullable=False)
99
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
1010

1111
store_id = db.Column(

docs/docs/06_sql_storage_sqlalchemy/05_insert_models_sqlalchemy/start/models/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class ItemModel(db.Model):
55
__tablename__ = "items"
66

77
id = db.Column(db.Integer, primary_key=True)
8-
name = db.Column(db.String(80), unique=True, nullable=False)
8+
name = db.Column(db.String(80), unique=False, nullable=False)
99
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
1010

1111
store_id = db.Column(

docs/docs/06_sql_storage_sqlalchemy/06_get_models_or_404/end/models/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class ItemModel(db.Model):
55
__tablename__ = "items"
66

77
id = db.Column(db.Integer, primary_key=True)
8-
name = db.Column(db.String(80), unique=True, nullable=False)
8+
name = db.Column(db.String(80), unique=False, nullable=False)
99
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
1010

1111
store_id = db.Column(

docs/docs/06_sql_storage_sqlalchemy/06_get_models_or_404/end/resources/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def delete(self, item_id):
2323
@blp.arguments(ItemUpdateSchema)
2424
@blp.response(200, ItemSchema)
2525
def put(self, item_data, item_id):
26-
item = ItemModel.query.get_or_404(item_id)
26+
item = ItemModel.query.get(item_id)
2727

2828
raise NotImplementedError("Updating an item is not implemented.")
2929

docs/docs/06_sql_storage_sqlalchemy/06_get_models_or_404/start/models/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class ItemModel(db.Model):
55
__tablename__ = "items"
66

77
id = db.Column(db.Integer, primary_key=True)
8-
name = db.Column(db.String(80), unique=True, nullable=False)
8+
name = db.Column(db.String(80), unique=False, nullable=False)
99
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
1010

1111
store_id = db.Column(

docs/docs/06_sql_storage_sqlalchemy/07_updating_models_sqlalchemy/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,17 @@ This idempotency is frequently seen with `PUT` requests. You can see it in actio
2121
@blp.arguments(ItemUpdateSchema)
2222
@blp.response(200, ItemSchema)
2323
def put(self, item_data, item_id):
24-
item = ItemModel.query.get_or_404(item_id)
2524
# highlight-start
25+
item = ItemModel.query.get(item_id)
2626
if item:
2727
item.price = item_data["price"]
2828
item.name = item_data["name"]
2929
else:
30-
item = ItemModel(**item_data)
30+
item = ItemModel(id=item_id, **item_data)
3131

3232
db.session.add(item)
3333
db.session.commit()
3434

3535
return item
3636
# highlight-end
37-
```
37+
```

docs/docs/06_sql_storage_sqlalchemy/07_updating_models_sqlalchemy/end/models/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class ItemModel(db.Model):
55
__tablename__ = "items"
66

77
id = db.Column(db.Integer, primary_key=True)
8-
name = db.Column(db.String(80), unique=True, nullable=False)
8+
name = db.Column(db.String(80), unique=False, nullable=False)
99
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
1010

1111
store_id = db.Column(

docs/docs/06_sql_storage_sqlalchemy/07_updating_models_sqlalchemy/end/resources/item.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ def delete(self, item_id):
2323
@blp.arguments(ItemUpdateSchema)
2424
@blp.response(200, ItemSchema)
2525
def put(self, item_data, item_id):
26-
item = ItemModel.query.get_or_404(item_id)
26+
item = ItemModel.query.get(item_id)
2727

2828
if item:
2929
item.price = item_data["price"]
3030
item.name = item_data["name"]
3131
else:
32-
item = ItemModel(**item_data)
32+
item = ItemModel(id=item_id, **item_data)
3333

3434
db.session.add(item)
3535
db.session.commit()

docs/docs/06_sql_storage_sqlalchemy/07_updating_models_sqlalchemy/start/models/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class ItemModel(db.Model):
55
__tablename__ = "items"
66

77
id = db.Column(db.Integer, primary_key=True)
8-
name = db.Column(db.String(80), unique=True, nullable=False)
8+
name = db.Column(db.String(80), unique=False, nullable=False)
99
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
1010

1111
store_id = db.Column(

docs/docs/06_sql_storage_sqlalchemy/07_updating_models_sqlalchemy/start/resources/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def delete(self, item_id):
2323
@blp.arguments(ItemUpdateSchema)
2424
@blp.response(200, ItemSchema)
2525
def put(self, item_data, item_id):
26-
item = ItemModel.query.get_or_404(item_id)
26+
item = ItemModel.query.get(item_id)
2727

2828
raise NotImplementedError("Updating an item is not implemented.")
2929

docs/docs/06_sql_storage_sqlalchemy/08_retrieve_list_all_models/end/models/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class ItemModel(db.Model):
55
__tablename__ = "items"
66

77
id = db.Column(db.Integer, primary_key=True)
8-
name = db.Column(db.String(80), unique=True, nullable=False)
8+
name = db.Column(db.String(80), unique=False, nullable=False)
99
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
1010

1111
store_id = db.Column(

docs/docs/06_sql_storage_sqlalchemy/08_retrieve_list_all_models/end/resources/item.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ def delete(self, item_id):
2323
@blp.arguments(ItemUpdateSchema)
2424
@blp.response(200, ItemSchema)
2525
def put(self, item_data, item_id):
26-
item = ItemModel.query.get_or_404(item_id)
26+
item = ItemModel.query.get(item_id)
2727

2828
if item:
2929
item.price = item_data["price"]
3030
item.name = item_data["name"]
3131
else:
32-
item = ItemModel(**item_data)
32+
item = ItemModel(id=item_id, **item_data)
3333

3434
db.session.add(item)
3535
db.session.commit()

docs/docs/06_sql_storage_sqlalchemy/08_retrieve_list_all_models/start/models/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class ItemModel(db.Model):
55
__tablename__ = "items"
66

77
id = db.Column(db.Integer, primary_key=True)
8-
name = db.Column(db.String(80), unique=True, nullable=False)
8+
name = db.Column(db.String(80), unique=False, nullable=False)
99
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
1010

1111
store_id = db.Column(

docs/docs/06_sql_storage_sqlalchemy/08_retrieve_list_all_models/start/resources/item.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ def delete(self, item_id):
2323
@blp.arguments(ItemUpdateSchema)
2424
@blp.response(200, ItemSchema)
2525
def put(self, item_data, item_id):
26-
item = ItemModel.query.get_or_404(item_id)
26+
item = ItemModel.query.get(item_id)
2727

2828
if item:
2929
item.price = item_data["price"]
3030
item.name = item_data["name"]
3131
else:
32-
item = ItemModel(**item_data)
32+
item = ItemModel(id=item_id, **item_data)
3333

3434
db.session.add(item)
3535
db.session.commit()

docs/docs/06_sql_storage_sqlalchemy/09_delete_models_sqlalchemy/end/models/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class ItemModel(db.Model):
55
__tablename__ = "items"
66

77
id = db.Column(db.Integer, primary_key=True)
8-
name = db.Column(db.String(80), unique=True, nullable=False)
8+
name = db.Column(db.String(80), unique=False, nullable=False)
99
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
1010

1111
store_id = db.Column(

docs/docs/06_sql_storage_sqlalchemy/09_delete_models_sqlalchemy/end/resources/item.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ def delete(self, item_id):
2525
@blp.arguments(ItemUpdateSchema)
2626
@blp.response(200, ItemSchema)
2727
def put(self, item_data, item_id):
28-
item = ItemModel.query.get_or_404(item_id)
28+
item = ItemModel.query.get(item_id)
2929

3030
if item:
3131
item.price = item_data["price"]
3232
item.name = item_data["name"]
3333
else:
34-
item = ItemModel(**item_data)
34+
item = ItemModel(id=item_id, **item_data)
3535

3636
db.session.add(item)
3737
db.session.commit()

docs/docs/06_sql_storage_sqlalchemy/09_delete_models_sqlalchemy/start/models/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class ItemModel(db.Model):
55
__tablename__ = "items"
66

77
id = db.Column(db.Integer, primary_key=True)
8-
name = db.Column(db.String(80), unique=True, nullable=False)
8+
name = db.Column(db.String(80), unique=False, nullable=False)
99
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
1010

1111
store_id = db.Column(

docs/docs/06_sql_storage_sqlalchemy/09_delete_models_sqlalchemy/start/resources/item.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ def delete(self, item_id):
2323
@blp.arguments(ItemUpdateSchema)
2424
@blp.response(200, ItemSchema)
2525
def put(self, item_data, item_id):
26-
item = ItemModel.query.get_or_404(item_id)
26+
item = ItemModel.query.get(item_id)
2727

2828
if item:
2929
item.price = item_data["price"]
3030
item.name = item_data["name"]
3131
else:
32-
item = ItemModel(**item_data)
32+
item = ItemModel(id=item_id, **item_data)
3333

3434
db.session.add(item)
3535
db.session.commit()

docs/docs/06_sql_storage_sqlalchemy/10_conclusion/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class ItemModel(db.Model):
3030
__tablename__ = "items"
3131

3232
id = db.Column(db.Integer, primary_key=True)
33-
name = db.Column(db.String(80), unique=True, nullable=False)
33+
name = db.Column(db.String(80), unique=False, nullable=False)
3434
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
3535

3636
store_id = db.Column(
@@ -92,6 +92,7 @@ class ItemSchema(PlainItemSchema):
9292
class ItemUpdateSchema(Schema):
9393
name = fields.Str()
9494
price = fields.Float()
95+
store_id = fields.Int()
9596

9697

9798
class StoreSchema(PlainStoreSchema):

docs/docs/07_sqlalchemy_many_to_many/02_one_to_many_review/end/models/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class ItemModel(db.Model):
55
__tablename__ = "items"
66

77
id = db.Column(db.Integer, primary_key=True)
8-
name = db.Column(db.String(80), unique=True, nullable=False)
8+
name = db.Column(db.String(80), unique=False, nullable=False)
99
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
1010

1111
store_id = db.Column(

docs/docs/07_sqlalchemy_many_to_many/02_one_to_many_review/end/resources/item.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ def delete(self, item_id):
2525
@blp.arguments(ItemUpdateSchema)
2626
@blp.response(200, ItemSchema)
2727
def put(self, item_data, item_id):
28-
item = ItemModel.query.get_or_404(item_id)
28+
item = ItemModel.query.get(item_id)
2929

3030
if item:
3131
item.price = item_data["price"]
3232
item.name = item_data["name"]
3333
else:
34-
item = ItemModel(**item_data)
34+
item = ItemModel(id=item_id, **item_data)
3535

3636
db.session.add(item)
3737
db.session.commit()

docs/docs/07_sqlalchemy_many_to_many/02_one_to_many_review/start/models/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class ItemModel(db.Model):
55
__tablename__ = "items"
66

77
id = db.Column(db.Integer, primary_key=True)
8-
name = db.Column(db.String(80), unique=True, nullable=False)
8+
name = db.Column(db.String(80), unique=False, nullable=False)
99
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
1010

1111
store_id = db.Column(

docs/docs/07_sqlalchemy_many_to_many/02_one_to_many_review/start/resources/item.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ def delete(self, item_id):
2525
@blp.arguments(ItemUpdateSchema)
2626
@blp.response(200, ItemSchema)
2727
def put(self, item_data, item_id):
28-
item = ItemModel.query.get_or_404(item_id)
28+
item = ItemModel.query.get(item_id)
2929

3030
if item:
3131
item.price = item_data["price"]
3232
item.name = item_data["name"]
3333
else:
34-
item = ItemModel(**item_data)
34+
item = ItemModel(id=item_id, **item_data)
3535

3636
db.session.add(item)
3737
db.session.commit()

docs/docs/07_sqlalchemy_many_to_many/03_many_to_many_relationships/end/models/item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class ItemModel(db.Model):
55
__tablename__ = "items"
66

77
id = db.Column(db.Integer, primary_key=True)
8-
name = db.Column(db.String(80), unique=True, nullable=False)
8+
name = db.Column(db.String(80), unique=False, nullable=False)
99
price = db.Column(db.Float(precision=2), unique=False, nullable=False)
1010

1111
store_id = db.Column(

0 commit comments

Comments
 (0)