@@ -24,11 +24,33 @@ def get_active_contracts(db: Session) -> list[str]:
|
||||
|
||||
@router.get("/", response_class=HTMLResponse)
|
||||
def contract_index(request: Request, db: Session = Depends(get_db)):
|
||||
active_contracts = get_active_contracts(db)
|
||||
from app.models import Product
|
||||
|
||||
# Build product → contracts mapping, ordered by product code
|
||||
products = (
|
||||
db.query(Product)
|
||||
.order_by(Product.code)
|
||||
.all()
|
||||
)
|
||||
|
||||
product_groups = []
|
||||
all_codes = []
|
||||
for prod in products:
|
||||
codes = [
|
||||
c.code for c in prod.contracts if c.is_active
|
||||
]
|
||||
if codes:
|
||||
product_groups.append({
|
||||
"code": prod.code,
|
||||
"name": prod.name,
|
||||
"exchange": prod.exchange,
|
||||
"contracts": codes,
|
||||
})
|
||||
all_codes.extend(codes)
|
||||
|
||||
latest = (
|
||||
db.query(DailyBar)
|
||||
.filter(DailyBar.contract.in_(active_contracts))
|
||||
.filter(DailyBar.contract.in_(all_codes))
|
||||
.order_by(DailyBar.date.desc())
|
||||
.all()
|
||||
)
|
||||
@@ -42,7 +64,7 @@ def contract_index(request: Request, db: Session = Depends(get_db)):
|
||||
template.render(
|
||||
request=request,
|
||||
active_nav="contracts",
|
||||
contracts=active_contracts,
|
||||
product_groups=product_groups,
|
||||
contract_bars=contract_bars,
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user