Feb 02 2026: implement remembering logged in, correct timezone

This commit is contained in:
2026-02-28 12:37:20 -05:00
parent 998569d402
commit ab2d5546b4
11 changed files with 53 additions and 20 deletions
+1 -1
View File
@@ -35,7 +35,7 @@ def login():
user = User.query.filter_by(username=form.username.data).first()
if user and user.check_password(form.password.data):
login_user(user)
login_user(user, remember=form.remember_me.data)
# Use validated next URL — never redirect blindly to request.args['next']
next_page = _safe_next(request.args.get('next'))
flash(f'Welcome back, {user.username}!', 'success')
+3 -2
View File
@@ -7,6 +7,7 @@ from app.models.issue import Issue
from app.models.user import User
from sqlalchemy import func
from datetime import datetime, timedelta
from app.utils.time_utils import now_eastern
bp = Blueprint('dashboard', __name__)
@@ -15,7 +16,7 @@ bp = Blueprint('dashboard', __name__)
@login_required
def index():
# Get today's date range
today_start = datetime.utcnow().replace(hour=0, minute=0, second=0, microsecond=0)
today_start = now_eastern().replace(hour=0, minute=0, second=0, microsecond=0)
today_end = today_start + timedelta(days=1)
# Statistics for today
@@ -55,7 +56,7 @@ def index():
).count()
# Calculate average score (last 30 days)
thirty_days_ago = datetime.utcnow() - timedelta(days=30)
thirty_days_ago = now_eastern() - timedelta(days=30)
avg_score_query = Inspection.query.filter(
Inspection.status == 'completed',
Inspection.overall_score.isnot(None),
+4 -3
View File
@@ -2,6 +2,7 @@ import os
import json
import uuid
from datetime import datetime
from app.utils.time_utils import now_eastern
from flask import (Blueprint, render_template, redirect, url_for,
flash, request, current_app, jsonify)
from flask_login import login_required, current_user
@@ -223,7 +224,7 @@ def start():
facility_id = form.facility_id.data,
area_id = form.area_id.data or None,
inspector_id = current_user.id,
inspection_date = datetime.utcnow(),
inspection_date = now_eastern(),
status = 'in_progress',
notes = form.notes.data or None,
)
@@ -300,7 +301,7 @@ def execute(inspection_id):
score = _compute_score_from_form(form_fields, responses)
inspection.overall_score = score
inspection.status = 'completed'
inspection.completed_at = datetime.utcnow()
inspection.completed_at = now_eastern()
# Persist the final form data alongside any inspector notes
_save_responses(inspection, responses)
@@ -401,7 +402,7 @@ def flag_issue(inspection_id):
photo_path = photo_path,
status = 'open',
assigned_to = form.assigned_to.data or None,
reported_at = datetime.utcnow(),
reported_at = now_eastern(),
)
db.session.add(issue)
+3 -3
View File
@@ -1,4 +1,4 @@
from datetime import datetime
from app.utils.time_utils import now_eastern
from flask import (Blueprint, render_template, redirect, url_for,
flash, request, current_app)
from flask_login import login_required, current_user
@@ -66,7 +66,7 @@ def view(issue_id):
issue.assigned_to = form.assigned_to.data or None
if form.status.data == 'resolved' and not issue.resolved_at:
issue.resolved_at = datetime.utcnow()
issue.resolved_at = now_eastern()
elif form.status.data != 'resolved':
issue.resolved_at = None
@@ -130,7 +130,7 @@ def create():
photo_path = photo_path,
status = 'open',
assigned_to = form.assigned_to.data or None,
reported_at = datetime.utcnow(),
reported_at = now_eastern(),
)
db.session.add(issue)
db.session.commit()
+2 -1
View File
@@ -1,6 +1,7 @@
import csv
import io
from datetime import datetime, timedelta
from app.utils.time_utils import now_eastern
from flask import (Blueprint, render_template, request,
Response, stream_with_context)
from flask_login import login_required, current_user
@@ -17,7 +18,7 @@ bp = Blueprint('reports', __name__, url_prefix='/reports')
def _date_range():
"""Parse ?start= and ?end= query params; default to last 30 days."""
end_default = datetime.utcnow()
end_default = now_eastern()
start_default = end_default - timedelta(days=30)
try:
start = datetime.strptime(request.args.get('start', ''), '%Y-%m-%d')