From 2d1f17d9d5e551faaad5940bcd1011de1234ec4b97e523684d0474ec2e2434a0 Mon Sep 17 00:00:00 2001 From: vladislav Date: Wed, 26 Aug 2026 10:58:58 -0400 Subject: [PATCH] feat --- main.ipynb | 53 +++++++++++++++++++++++++--- main.py | 42 ++++++++++++++++++++-- templates/competition/card.html | 1 + templates/competition/edit.html | 7 ++-- templates/form/competition_edit.html | 2 +- templates/profile/delivery_old.html | 7 ++-- 6 files changed, 96 insertions(+), 16 deletions(-) diff --git a/main.ipynb b/main.ipynb index ab076f3..6d16049 100644 --- a/main.ipynb +++ b/main.ipynb @@ -2903,7 +2903,7 @@ " competition = await competitions_col.find_one({'_id': ObjectId(competition_id)})\n", " data = json.dumps(competition, cls=MongoJSONEncoder, ensure_ascii=False)\n", " return templates.TemplateResponse(\n", - " request=request, name=\"form/competition_edit.html\", context={\"competition\": str(data), \"user\": user}\n", + " request=request, name=\"form/competition_edit.html\", context={\"competition\": str(data), \"competition_id\": competition_id, \"user\": user}\n", " )\n" ], "display_name": ".venv" @@ -4554,6 +4554,48 @@ "id": "6157e497", "metadata": {}, "outputs": [], + "source": [ + "# @app.get('/profile/delivery/{type_d}/{item_id}')\n", + "# async def profile_delivery_by_old(request: Request, type_d:str, item_id:str, user: Dict = Security(get_current_user)):\n", + "# cursor = delivery_collection.aggregate([\n", + "# {\"$match\": {\n", + "# \"$or\": [\n", + "# {\"sender._id\": user.get('_id')},\n", + "# {\"user._id\": user.get('_id')},\n", + "# {\"receiver._id\": user.get('_id')}\n", + "# ],\n", + "# f'{type_d}_id': ObjectId(item_id),\n", + "# 'prod': PROD,\n", + "# }},\n", + "# {\"$sort\": {\"_id\": -1}},\n", + "# {\"$group\": {\n", + "# \"_id\": \"$post_id\",\n", + "# \"doc\": {\"$first\": \"$$ROOT\"}\n", + "# }},\n", + "# {\"$replaceRoot\": {\"newRoot\": \"$doc\"}},\n", + "# {\"$sort\": {\"_id\": -1}},\n", + "# ])\n", + "\n", + "# data = [doc async for doc in cursor]\n", + "# data.sort(key=lambda doc: doc[\"_id\"].generation_time, reverse=True)\n", + "\n", + "# return templates.TemplateResponse(\n", + "# request=request,\n", + "# name=\"profile/delivery_old.html\",\n", + "# context={\n", + "# \"user\": user,\n", + "# \"data\": data,\n", + "# }\n", + "# )\n" + ], + "display_name": ".venv" + }, + { + "cell_type": "code", + "execution_count": null, + "id": "089ba597", + "metadata": {}, + "outputs": [], "source": [ "@app.get('/profile/delivery/competition/{competition_id}')\n", "async def profile_delivery_by_competition(request: Request, competition_id:str, user: Dict = Security(get_current_user)):\n", @@ -4564,7 +4606,6 @@ " {\"user._id\": user.get('_id')},\n", " {\"receiver._id\": user.get('_id')}\n", " ],\n", - " 'competition_id': ObjectId(competition_id),\n", " 'prod': PROD,\n", " }},\n", " {\"$sort\": {\"_id\": -1}},\n", @@ -4577,6 +4618,8 @@ " ])\n", "\n", " data = [doc async for doc in cursor]\n", + " data.sort(key=lambda doc: doc[\"_id\"].generation_time, reverse=True)\n", + "\n", " return templates.TemplateResponse(\n", " request=request,\n", " name=\"profile/delivery_old.html\",\n", @@ -4591,7 +4634,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d68edb20", + "id": "2148ef21", "metadata": {}, "outputs": [], "source": [ @@ -4617,6 +4660,8 @@ " ])\n", "\n", " data = [doc async for doc in cursor]\n", + " data.sort(key=lambda doc: doc[\"_id\"].generation_time, reverse=True)\n", + "\n", " return templates.TemplateResponse(\n", " request=request,\n", " name=\"profile/delivery_old.html\",\n", @@ -4624,7 +4669,7 @@ " \"user\": user,\n", " \"data\": data,\n", " }\n", - " )\n" + " )" ], "display_name": ".venv" }, diff --git a/main.py b/main.py index 0df7ac5..63c05e7 100644 --- a/main.py +++ b/main.py @@ -2162,7 +2162,7 @@ async def form_( competition = await competitions_col.find_one({'_id': ObjectId(competition_id)}) data = json.dumps(competition, cls=MongoJSONEncoder, ensure_ascii=False) return templates.TemplateResponse( - request=request, name="form/competition_edit.html", context={"competition": str(data), "user": user} + request=request, name="form/competition_edit.html", context={"competition": str(data), "competition_id": competition_id, "user": user} ) @@ -3459,6 +3459,40 @@ async def profile_delivery_history_post(request: Request, post_id:str, user: Dic ) +# @app.get('/profile/delivery/{type_d}/{item_id}') +# async def profile_delivery_by_old(request: Request, type_d:str, item_id:str, user: Dict = Security(get_current_user)): +# cursor = delivery_collection.aggregate([ +# {"$match": { +# "$or": [ +# {"sender._id": user.get('_id')}, +# {"user._id": user.get('_id')}, +# {"receiver._id": user.get('_id')} +# ], +# f'{type_d}_id': ObjectId(item_id), +# 'prod': PROD, +# }}, +# {"$sort": {"_id": -1}}, +# {"$group": { +# "_id": "$post_id", +# "doc": {"$first": "$$ROOT"} +# }}, +# {"$replaceRoot": {"newRoot": "$doc"}}, +# {"$sort": {"_id": -1}}, +# ]) + +# data = [doc async for doc in cursor] +# data.sort(key=lambda doc: doc["_id"].generation_time, reverse=True) + +# return templates.TemplateResponse( +# request=request, +# name="profile/delivery_old.html", +# context={ +# "user": user, +# "data": data, +# } +# ) + + @app.get('/profile/delivery/competition/{competition_id}') async def profile_delivery_by_competition(request: Request, competition_id:str, user: Dict = Security(get_current_user)): cursor = delivery_collection.aggregate([ @@ -3468,7 +3502,6 @@ async def profile_delivery_by_competition(request: Request, competition_id:str, {"user._id": user.get('_id')}, {"receiver._id": user.get('_id')} ], - 'competition_id': ObjectId(competition_id), 'prod': PROD, }}, {"$sort": {"_id": -1}}, @@ -3481,6 +3514,8 @@ async def profile_delivery_by_competition(request: Request, competition_id:str, ]) data = [doc async for doc in cursor] + data.sort(key=lambda doc: doc["_id"].generation_time, reverse=True) + return templates.TemplateResponse( request=request, name="profile/delivery_old.html", @@ -3513,6 +3548,8 @@ async def profile_delivery_by_exhibition(request: Request, exhibition_id:str, us ]) data = [doc async for doc in cursor] + data.sort(key=lambda doc: doc["_id"].generation_time, reverse=True) + return templates.TemplateResponse( request=request, name="profile/delivery_old.html", @@ -3522,7 +3559,6 @@ async def profile_delivery_by_exhibition(request: Request, exhibition_id:str, us } ) - @app.get( "/profile/delivery", response_class=HTMLResponse, diff --git a/templates/competition/card.html b/templates/competition/card.html index 404e231..795b156 100644 --- a/templates/competition/card.html +++ b/templates/competition/card.html @@ -31,6 +31,7 @@ {{ {-1:'Формируется',0:'Прием заявок',1:'Идет отбор',2:'Закончился'}[competition.get('status',-1)] }} {% endif %} + До {{ (competition.date_finish.strftime('%d.%m.%Y')) if competition.date_finish else ''}}

{{ competition.title }}

diff --git a/templates/competition/edit.html b/templates/competition/edit.html index 823034a..8b0f687 100644 --- a/templates/competition/edit.html +++ b/templates/competition/edit.html @@ -1,7 +1,7 @@ {% import "competition/list.html" as competition %} {% import "components/checkbox.html" as checkbox %} -{% macro section(user, competition) -%} +{% macro section(user, competition, competition_id) -%}

Выбор

@@ -346,7 +346,7 @@ function bindLinkValidation({