Переписал уведомления: toast/confirm вместо alert; объединил профиль+инвентарь; починил ленту активности

This commit is contained in:
root
2026-07-05 15:05:04 +00:00
parent fe6bf5cf29
commit 50535ec777
15 changed files with 1523 additions and 1111 deletions
+41 -61
View File
@@ -348,7 +348,7 @@ async def profile_page(
inventory_items = db.query(InventoryItem).filter(
InventoryItem.user_id == user.id
).all()
).order_by(desc(InventoryItem.obtained_at)).all()
valuable_items = sorted(
inventory_items,
@@ -356,15 +356,52 @@ async def profile_page(
reverse=True
)[:12]
rarities = set()
types = set()
enriched_items = []
for item in inventory_items:
item_data = None
for idx, it in enumerate(ALL_ITEMS):
if it.get("_id", idx) == item.item_id:
item_data = it
break
if not item_data:
item_data = get_item(item.item_id)
image_url = ""
price_rub = 100
if item_data:
image_url = item_data.get("image_url", "")
price_rub = item_data.get("price_rub", 100)
enriched_items.append({
"id": item.id,
"item_id": item.item_id,
"name": item.market_hash_name,
"rarity": item.rarity,
"wear": item.wear,
"float": item.float_value,
"type": item.type,
"image_url": image_url,
"price_rub": price_rub
})
if item.rarity:
rarities.add(item.rarity)
if item.type:
types.add(item.type)
return templates.TemplateResponse("profile.html", {
"request": request,
"user": user,
"total_items": total_items,
"cases_opened": cases_opened,
"contracts_completed": contracts_completed,
"balance": user.balance,
"recent_openings": recent_openings,
"recent_contracts": recent_contracts,
"valuable_items": valuable_items,
"inventory_items": enriched_items,
"rarities": sorted(rarities),
"types": sorted(types),
"rarity_order": RARITY_ORDER,
"is_public": False,
"profile_user": user
})
@@ -564,66 +601,9 @@ async def contracts_page(
"knife_count": len(knife_items)
})
@app.get("/inventory", response_class=HTMLResponse)
async def inventory_page(
request: Request,
db: Session = Depends(get_db),
user: User = Depends(get_current_user)
):
inventory_items = db.query(InventoryItem).filter(
InventoryItem.user_id == user.id
).order_by(desc(InventoryItem.obtained_at)).all()
rarities = set()
types = set()
enriched_items = []
for item in inventory_items:
# Ищем предмет по item_id
item_data = None
for idx, it in enumerate(ALL_ITEMS):
if it.get("_id", idx) == item.item_id:
item_data = it
break
# Если не нашли, пробуем get_item
if not item_data:
item_data = get_item(item.item_id)
image_url = ""
price_rub = 100
if item_data:
image_url = item_data.get("image_url", "")
price_rub = item_data.get("price_rub", 100)
enriched_items.append({
"id": item.id,
"item_id": item.item_id,
"name": item.market_hash_name,
"rarity": item.rarity,
"wear": item.wear,
"float": item.float_value,
"type": item.type,
"obtained_from": item.obtained_from,
"obtained_at": item.obtained_at,
"image_url": image_url,
"price_rub": price_rub
})
if item.rarity:
rarities.add(item.rarity)
if item.type:
types.add(item.type)
return templates.TemplateResponse("inventory.html", {
"request": request,
"user": user,
"inventory_items": enriched_items,
"rarities": sorted(rarities),
"types": sorted(types),
"rarity_order": RARITY_ORDER
})
@app.get("/inventory")
async def inventory_redirect():
return RedirectResponse(url="/profile")
# ─── API эндпоинты для веб-интерфейса ─────────────────────────────────────