This commit is contained in:
vladislav 2026-08-26 10:58:58 -04:00
parent 42ec4d0ba9
commit 2d1f17d9d5
Signed by: Vladislav
GPG Key ID: D97C9E5E4860EE45
6 changed files with 96 additions and 16 deletions

View File

@ -2903,7 +2903,7 @@
" competition = await competitions_col.find_one({'_id': ObjectId(competition_id)})\n", " competition = await competitions_col.find_one({'_id': ObjectId(competition_id)})\n",
" data = json.dumps(competition, cls=MongoJSONEncoder, ensure_ascii=False)\n", " data = json.dumps(competition, cls=MongoJSONEncoder, ensure_ascii=False)\n",
" return templates.TemplateResponse(\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" " )\n"
], ],
"display_name": ".venv" "display_name": ".venv"
@ -4554,6 +4554,48 @@
"id": "6157e497", "id": "6157e497",
"metadata": {}, "metadata": {},
"outputs": [], "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": [ "source": [
"@app.get('/profile/delivery/competition/{competition_id}')\n", "@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", "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", " {\"user._id\": user.get('_id')},\n",
" {\"receiver._id\": user.get('_id')}\n", " {\"receiver._id\": user.get('_id')}\n",
" ],\n", " ],\n",
" 'competition_id': ObjectId(competition_id),\n",
" 'prod': PROD,\n", " 'prod': PROD,\n",
" }},\n", " }},\n",
" {\"$sort\": {\"_id\": -1}},\n", " {\"$sort\": {\"_id\": -1}},\n",
@ -4577,6 +4618,8 @@
" ])\n", " ])\n",
"\n", "\n",
" data = [doc async for doc in cursor]\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", " return templates.TemplateResponse(\n",
" request=request,\n", " request=request,\n",
" name=\"profile/delivery_old.html\",\n", " name=\"profile/delivery_old.html\",\n",
@ -4591,7 +4634,7 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"id": "d68edb20", "id": "2148ef21",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
@ -4617,6 +4660,8 @@
" ])\n", " ])\n",
"\n", "\n",
" data = [doc async for doc in cursor]\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", " return templates.TemplateResponse(\n",
" request=request,\n", " request=request,\n",
" name=\"profile/delivery_old.html\",\n", " name=\"profile/delivery_old.html\",\n",
@ -4624,7 +4669,7 @@
" \"user\": user,\n", " \"user\": user,\n",
" \"data\": data,\n", " \"data\": data,\n",
" }\n", " }\n",
" )\n" " )"
], ],
"display_name": ".venv" "display_name": ".venv"
}, },

42
main.py
View File

@ -2162,7 +2162,7 @@ async def form_(
competition = await competitions_col.find_one({'_id': ObjectId(competition_id)}) competition = await competitions_col.find_one({'_id': ObjectId(competition_id)})
data = json.dumps(competition, cls=MongoJSONEncoder, ensure_ascii=False) data = json.dumps(competition, cls=MongoJSONEncoder, ensure_ascii=False)
return templates.TemplateResponse( 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}') @app.get('/profile/delivery/competition/{competition_id}')
async def profile_delivery_by_competition(request: Request, competition_id:str, user: Dict = Security(get_current_user)): async def profile_delivery_by_competition(request: Request, competition_id:str, user: Dict = Security(get_current_user)):
cursor = delivery_collection.aggregate([ cursor = delivery_collection.aggregate([
@ -3468,7 +3502,6 @@ async def profile_delivery_by_competition(request: Request, competition_id:str,
{"user._id": user.get('_id')}, {"user._id": user.get('_id')},
{"receiver._id": user.get('_id')} {"receiver._id": user.get('_id')}
], ],
'competition_id': ObjectId(competition_id),
'prod': PROD, 'prod': PROD,
}}, }},
{"$sort": {"_id": -1}}, {"$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 = [doc async for doc in cursor]
data.sort(key=lambda doc: doc["_id"].generation_time, reverse=True)
return templates.TemplateResponse( return templates.TemplateResponse(
request=request, request=request,
name="profile/delivery_old.html", 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 = [doc async for doc in cursor]
data.sort(key=lambda doc: doc["_id"].generation_time, reverse=True)
return templates.TemplateResponse( return templates.TemplateResponse(
request=request, request=request,
name="profile/delivery_old.html", name="profile/delivery_old.html",
@ -3522,7 +3559,6 @@ async def profile_delivery_by_exhibition(request: Request, exhibition_id:str, us
} }
) )
@app.get( @app.get(
"/profile/delivery", "/profile/delivery",
response_class=HTMLResponse, response_class=HTMLResponse,

View File

@ -31,6 +31,7 @@
<span class="b_0jst1">{{ {-1:'Формируется',0:'Прием заявок',1:'Идет отбор',2:'Закончился'}[competition.get('status',-1)] }}</span> <span class="b_0jst1">{{ {-1:'Формируется',0:'Прием заявок',1:'Идет отбор',2:'Закончился'}[competition.get('status',-1)] }}</span>
</div> </div>
{% endif %} {% endif %}
<span class="b_sdf">До {{ (competition.date_finish.strftime('%d.%m.%Y')) if competition.date_finish else ''}}</span>
<header class="c_m876y b_9xtz9"> <header class="c_m876y b_9xtz9">
<h3 class="c_hysjg b_8f3uh">{{ competition.title }}</h3> <h3 class="c_hysjg b_8f3uh">{{ competition.title }}</h3>
</header> </header>

View File

@ -1,7 +1,7 @@
{% import "competition/list.html" as competition %} {% import "competition/list.html" as competition %}
{% import "components/checkbox.html" as checkbox %} {% import "components/checkbox.html" as checkbox %}
{% macro section(user, competition) -%} {% macro section(user, competition, competition_id) -%}
<form class="c_sbrxk"> <form class="c_sbrxk">
<div class="c_dtjoh"> <div class="c_dtjoh">
<h3>Выбор</h3> <h3>Выбор</h3>
@ -346,7 +346,7 @@ function bindLinkValidation({
<script> <script>
document.addEventListener('DOMContentLoaded', () => { document.addEventListener('DOMContentLoaded', () => {
const competition = JSON.parse({{competition|tojson}}) const competition = JSON.parse({{competition|tojson}})
const competitionId = competition._id const competitionId = `{{competition_id}}`
document.getElementById('title').value = competition.title; document.getElementById('title').value = competition.title;
document.getElementById('preview_title').textContent = competition.title; document.getElementById('preview_title').textContent = competition.title;
@ -595,7 +595,7 @@ document.addEventListener('DOMContentLoaded', () => {
console.log('Отправка формы...'); console.log('Отправка формы...');
try { try {
const res = await fetch(`/api/competition/${competitionId}`, { const res = await fetch(`/api/competition/{{competition_id}}`, {
method: 'PUT', method: 'PUT',
body: formData body: formData
}); });
@ -895,5 +895,4 @@ input[type="number"]:focus::-webkit-inner-spin-button {display: none;}
.c_sbrxk{z-index: 1000;} .c_sbrxk{z-index: 1000;}
#preview_poster{width: 335px;} #preview_poster{width: 335px;}
</style> </style>
{%- endmacro %} {%- endmacro %}

View File

@ -14,6 +14,6 @@
{% block content %} {% block content %}
{{ header.section(user) }} {{ header.section(user) }}
{{ form.section(user, competition) }} {{ form.section(user, competition, competition_id) }}
{{ footer.section() }} {{ footer.section() }}
{% endblock %} {% endblock %}

View File

@ -82,6 +82,8 @@
<span class="b_bvl0d">Получить</span> <span class="b_bvl0d">Получить</span>
</button> </button>
{% endif %} {% endif %}
{% if doc.status == 'Получено' %}
{% endif %}
{% endif %} {% endif %}
<p class="b_6spaf"> <p class="b_6spaf">
{{ (doc._id.generation_time.strftime('%d.%m.%Y')) if doc._id else ''}} {{ (doc._id.generation_time.strftime('%d.%m.%Y')) if doc._id else ''}}
@ -125,10 +127,7 @@
</div> </div>
</article> </article>
{% endif %} {% endif %}
{% for doc in data if doc.status in statuses %} {% for doc in data %}
{{ render_doc(doc) }}
{% endfor %}
{% for doc in data if doc.status not in statuses %}
{{ render_doc(doc) }} {{ render_doc(doc) }}
{% endfor %} {% endfor %}
<script defer> <script defer>