Feb 02 2026: implement remembering logged in, correct timezone
This commit is contained in:
+1
-1
@@ -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')
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user