From 709ba284c76e04428115e5c2e2604d114cfb91dc Mon Sep 17 00:00:00 2001 From: Real Python Bot <42617967+realpython-bot@users.noreply.github.com> Date: Wed, 21 Oct 2026 15:32:43 +0000 Subject: [PATCH] Use timezone-aware UTC timestamps and return 200 from PUT in Flask REST parts 2-3 Replace the deprecated datetime.utcnow with datetime.now(timezone.utc) in the models, and return the default 200 from people/notes update() to match the documented PUT response. Co-Authored-By: Claude Opus 5.5 (1M context) --- flask-connexion-rest-part-2/rp_flask_api/models.py | 6 ++++-- flask-connexion-rest-part-2/rp_flask_api/people.py | 2 +- flask-connexion-rest-part-3/rp_flask_api/models.py | 10 +++++++--- flask-connexion-rest-part-3/rp_flask_api/notes.py | 2 +- flask-connexion-rest-part-3/rp_flask_api/people.py | 2 +- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/flask-connexion-rest-part-2/rp_flask_api/models.py b/flask-connexion-rest-part-2/rp_flask_api/models.py index bd5df040e8..2fa1a8d8fc 100644 --- a/flask-connexion-rest-part-2/rp_flask_api/models.py +++ b/flask-connexion-rest-part-2/rp_flask_api/models.py @@ -1,4 +1,4 @@ -from datetime import datetime +from datetime import datetime, timezone from config import db, ma @@ -9,7 +9,9 @@ class Person(db.Model): lname = db.Column(db.String(32), unique=True) fname = db.Column(db.String(32)) timestamp = db.Column( - db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow + db.DateTime, + default=lambda: datetime.now(timezone.utc), + onupdate=lambda: datetime.now(timezone.utc), ) diff --git a/flask-connexion-rest-part-2/rp_flask_api/people.py b/flask-connexion-rest-part-2/rp_flask_api/people.py index 49ae7ec950..05417bd1c2 100644 --- a/flask-connexion-rest-part-2/rp_flask_api/people.py +++ b/flask-connexion-rest-part-2/rp_flask_api/people.py @@ -38,7 +38,7 @@ def update(lname, person): existing_person.fname = update_person.fname db.session.merge(existing_person) db.session.commit() - return person_schema.dump(existing_person), 201 + return person_schema.dump(existing_person) else: abort(404, f"Person with last name {lname} not found") diff --git a/flask-connexion-rest-part-3/rp_flask_api/models.py b/flask-connexion-rest-part-3/rp_flask_api/models.py index e636812804..ca7b381333 100644 --- a/flask-connexion-rest-part-3/rp_flask_api/models.py +++ b/flask-connexion-rest-part-3/rp_flask_api/models.py @@ -1,4 +1,4 @@ -from datetime import datetime +from datetime import datetime, timezone from config import db, ma from marshmallow_sqlalchemy import fields @@ -10,7 +10,9 @@ class Note(db.Model): person_id = db.Column(db.Integer, db.ForeignKey("person.id")) content = db.Column(db.String, nullable=False) timestamp = db.Column( - db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow + db.DateTime, + default=lambda: datetime.now(timezone.utc), + onupdate=lambda: datetime.now(timezone.utc), ) @@ -28,7 +30,9 @@ class Person(db.Model): lname = db.Column(db.String(32), unique=True) fname = db.Column(db.String(32)) timestamp = db.Column( - db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow + db.DateTime, + default=lambda: datetime.now(timezone.utc), + onupdate=lambda: datetime.now(timezone.utc), ) notes = db.relationship( diff --git a/flask-connexion-rest-part-3/rp_flask_api/notes.py b/flask-connexion-rest-part-3/rp_flask_api/notes.py index e77983faa6..5942bad7ef 100644 --- a/flask-connexion-rest-part-3/rp_flask_api/notes.py +++ b/flask-connexion-rest-part-3/rp_flask_api/notes.py @@ -20,7 +20,7 @@ def update(note_id, note): existing_note.content = update_note.content db.session.merge(existing_note) db.session.commit() - return note_schema.dump(existing_note), 201 + return note_schema.dump(existing_note) else: abort(404, f"Note with ID {note_id} not found") diff --git a/flask-connexion-rest-part-3/rp_flask_api/people.py b/flask-connexion-rest-part-3/rp_flask_api/people.py index 49ae7ec950..05417bd1c2 100644 --- a/flask-connexion-rest-part-3/rp_flask_api/people.py +++ b/flask-connexion-rest-part-3/rp_flask_api/people.py @@ -38,7 +38,7 @@ def update(lname, person): existing_person.fname = update_person.fname db.session.merge(existing_person) db.session.commit() - return person_schema.dump(existing_person), 201 + return person_schema.dump(existing_person) else: abort(404, f"Person with last name {lname} not found")