36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
from flask import Blueprint, render_template
|
|
from flask_login import login_required
|
|
from app.models.user import User
|
|
from app.models.asset import Asset
|
|
from app.models.assignment import Assignment
|
|
from app.models.paperwork import Paperwork
|
|
|
|
bp = Blueprint('dashboard', __name__)
|
|
|
|
|
|
@bp.route('/')
|
|
@login_required
|
|
def index():
|
|
stats = {
|
|
'total_users': User.query.count(),
|
|
'active_users': User.query.filter_by(is_active=True, is_masked=False).count(),
|
|
'masked_users': User.query.filter_by(is_masked=True).count(),
|
|
'total_assets': Asset.query.count(),
|
|
'available_assets': Asset.query.filter_by(status='available').count(),
|
|
'assigned_assets': Asset.query.filter_by(status='assigned').count(),
|
|
'maintenance_assets': Asset.query.filter_by(status='maintenance').count(),
|
|
'active_assignments': Assignment.query.filter_by(is_active=True).count(),
|
|
'total_paperwork': Paperwork.query.count(),
|
|
}
|
|
|
|
# Recent assignments
|
|
recent_assignments = (
|
|
Assignment.query
|
|
.filter_by(is_active=True)
|
|
.order_by(Assignment.created_at.desc())
|
|
.limit(10)
|
|
.all()
|
|
)
|
|
|
|
return render_template('dashboard/index.html', stats=stats, recent_assignments=recent_assignments)
|