Compare commits

...

4 Commits

Author SHA256 Message Date
83f0485fb7
fix 2026-09-23 06:34:07 -04:00
5e711bc4e9
fix 2026-09-23 06:29:35 -04:00
4e5303db36
fix 2026-09-19 13:11:47 -04:00
fcab4a8df9
style 2026-09-14 20:17:32 -04:00
5 changed files with 21 additions and 126 deletions

View File

@ -671,7 +671,7 @@
"\n", "\n",
" if post and post.get(\"user\"):\n", " if post and post.get(\"user\"):\n",
" notified_post_user_ids.update({str(post[\"user\"].get(\"_id\")):1})\n", " notified_post_user_ids.update({str(post[\"user\"].get(\"_id\")):1})\n",
" \n", " doc.pop('_id')\n",
" new_doc = {\n", " new_doc = {\n",
" **doc,\n", " **doc,\n",
" \"exhibition\": exhibition_to_start,\n", " \"exhibition\": exhibition_to_start,\n",
@ -3392,7 +3392,7 @@
" link=\"/profile/delivery\",\n", " link=\"/profile/delivery\",\n",
" text=f\"{str(existing.get('post',{}).get('title'))}\"\n", " text=f\"{str(existing.get('post',{}).get('title'))}\"\n",
" ))\n", " ))\n",
"\n", " \n",
" new_doc = {**existing, **update_data, \"notify\": notify.upserted_id}\n", " new_doc = {**existing, **update_data, \"notify\": notify.upserted_id}\n",
"\n", "\n",
" result = await delivery_collection.insert_one(new_doc)\n", " result = await delivery_collection.insert_one(new_doc)\n",

View File

@ -443,7 +443,7 @@ async def cron_every_five_min(token: str = Security(get_token)):
if post and post.get("user"): if post and post.get("user"):
notified_post_user_ids.update({str(post["user"].get("_id")):1}) notified_post_user_ids.update({str(post["user"].get("_id")):1})
doc.pop('_id')
new_doc = { new_doc = {
**doc, **doc,
"exhibition": exhibition_to_start, "exhibition": exhibition_to_start,

View File

@ -143,9 +143,9 @@
<div class="c_jups4"> <div class="c_jups4">
<span class="c_q00x6" id="past_select_val">Количество картин для конкурса</span> <span class="c_q00x6" id="past_select_val">Количество картин для конкурса</span>
<label class="c_mkcow">Минимум</label> <label class="c_mkcow">Минимум</label>
<input type="number" id="min_val" name="min_paintings" class="c_l8kil" value="1" min="1"> <input type="number" id="min_val" name="min_paintings" class="c_l8kil" min="1">
<label class="c_mkcow">Максимум</label> <label class="c_mkcow">Максимум</label>
<input type="number" id="max_val" name="max_paintings" class="c_l8kil" value="10" min="1" max="99"> <input type="number" id="max_val" name="max_paintings" class="c_l8kil" min="1" max="99">
<!-- <input type="range" id="select_val" name="selected_count" class="c_5qh93" min="1" max="10" value="3"> --> <!-- <input type="range" id="select_val" name="selected_count" class="c_5qh93" min="1" max="10" value="3"> -->
</div> </div>
<!-- <!--

View File

@ -281,7 +281,7 @@ function loadAndClick() {
select.parentNode.classList.remove('error'); select.parentNode.classList.remove('error');
} }
} }
if (selectedPosts.length === max_paintings) { if (selectedPosts.length > max_paintings) {
showToast({message: `Максимальное кол-во картин: ${max_paintings}`, status: 'error'}); showToast({message: `Максимальное кол-во картин: ${max_paintings}`, status: 'error'});
return; return;
} }

View File

@ -6,6 +6,7 @@
{% import "competition/list.html" as competition %} {% import "competition/list.html" as competition %}
{% import "competition/card.html" as card %} {% import "competition/card.html" as card %}
{% block title %}Где картины{% endblock %} {% block title %}Где картины{% endblock %}
@ -214,7 +215,6 @@
</div> </div>
</div> </div>
</section> </section>
{{ footer.section(user) }} {{ footer.section(user) }}
{% endblock %} {% endblock %}
@ -234,102 +234,52 @@ summary{ text-align: center; font-size: 24px; color: #5f1798; font-weight: bold;
.main__title > p{ margin: 0 0 10px 0; font-size: 20px; font-weight: 900; color: #0f172a;} .main__title > p{ margin: 0 0 10px 0; font-size: 20px; font-weight: 900; color: #0f172a;}
.main__address-label{ font-size: 13px; color: #64748b; margin-bottom: 6px;} .main__address-label{ font-size: 13px; color: #64748b; margin-bottom: 6px;}
.main__address-value{ font-size: 14px; font-weight: 800; color: #0f172a;} .main__address-value{ font-size: 14px; font-weight: 800; color: #0f172a;}
.b_ya0t5 { .b_ya0t5 {align-self: stretch;border-radius: 5px;height: 222px;}
align-self: stretch; picture > img {width: 100%;object-fit: scale-down;}
border-radius: 5px; .b_kbsvf {padding: 10px 20px;align-items: center;align-self: stretch;display: flex;flex-direction: column;gap: 10px;justify-content: center;}
height: 222px;
}
picture > img {
width: 100%;
object-fit: scale-down;
}
.b_kbsvf {
padding: 10px 20px;
align-items: center;
align-self: stretch;
display: flex;
flex-direction: column;
gap: 10px;
justify-content: center;
}
.b_thlt1 { align-items: center; background: rgba(14, 214, 70, 0.20); border-radius: 30px; display: flex; justify-content: center; padding: 1.5px 10px; } .b_thlt1 { align-items: center; background: rgba(14, 214, 70, 0.20); border-radius: 30px; display: flex; justify-content: center; padding: 1.5px 10px; }
.b_5dr47 { color: #0ED646; font-family: Inter; font-size: 12px; font-style: normal; font-weight: 700; line-height: normal; } .b_5dr47 { color: #0ED646; font-family: Inter; font-size: 12px; font-style: normal; font-weight: 700; line-height: normal; }
.b_thlt1_2 { align-items: center; background: rgba(95, 23, 152, 0.20); border-radius: 30px; display: flex; justify-content: center; padding: 1.5px 10px; } .b_thlt1_2 { align-items: center; background: rgba(95, 23, 152, 0.20); border-radius: 30px; display: flex; justify-content: center; padding: 1.5px 10px; }
.b_5dr47_2 { color: #5F1798; font-family: Inter; font-size: 12px; font-style: normal; font-weight: 700; line-height: normal; } .b_5dr47_2 { color: #5F1798; font-family: Inter; font-size: 12px; font-style: normal; font-weight: 700; line-height: normal; }
.b_h57rq { .b_h57rq { align-items: flex-start;background: #FDFAFF;border-radius: 5px;border: 1px solid #5F1798;display: flex;flex-direction: column;width: 335px; }
align-items: flex-start;
background: #FDFAFF;
border-radius: 5px;
border: 1px solid #5F1798;
display: flex;
flex-direction: column;
width: 335px;
}
.b_wy3rt { align-items: center; background: #5F1798; border-radius: 5px; display: flex; justify-content: center; padding: 15px 0; width: 100%; } .b_wy3rt { align-items: center; background: #5F1798; border-radius: 5px; display: flex; justify-content: center; padding: 15px 0; width: 100%; }
.b_bvl0d { color: #FFF; font-family: Inter; font-size: 14px; font-style: normal; font-weight: 400; line-height: normal; } .b_bvl0d { color: #FFF; font-family: Inter; font-size: 14px; font-style: normal; font-weight: 400; line-height: normal; }
/* remove default button outline but keep focus visible */ /* remove default button outline but keep focus visible */
.password-toggle:focus { outline: 2px solid rgba(95,23,152,0.25); outline-offset: 2px; } .password-toggle:focus { outline: 2px solid rgba(95,23,152,0.25); outline-offset: 2px; }
/* ensure svg size fits */ /* ensure svg size fits */
.password-toggle .eye { width: 24px; height: 24px; display: block; } .password-toggle .eye { width: 24px; height: 24px; display: block; }
.file-name-display {width: 100%;padding: 16px 50px 16px 16px;border: 2px solid #ddd;border-radius: 8px;font-size: 16px;color: #555;background: #fff;min-height: 56px;display: flex;align-items: center;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;transition: all 0.3s ease;cursor: pointer;} .file-name-display {width: 100%;padding: 16px 50px 16px 16px;border: 2px solid #ddd;border-radius: 8px;font-size: 16px;color: #555;background: #fff;min-height: 56px;display: flex;align-items: center;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;transition: all 0.3s ease;cursor: pointer;}
/* Hover эффект */ /* Hover эффект */
.c_aihm6:hover select, .c_nb6gy:hover textarea, .poster-group:hover .file-name-display {border-color: #5F1798;} .c_aihm6:hover select, .c_nb6gy:hover textarea, .poster-group:hover .file-name-display {border-color: #5F1798;}
/* Когда файл выбран — делаем текст чуть темнее */ /* Когда файл выбран — делаем текст чуть темнее */
.poster-group.has-file .file-name-display {color: #222;font-weight: 500;} .poster-group.has-file .file-name-display {color: #222;font-weight: 500;}
/* Скрытый input file */ /* Скрытый input file */
.hidden-file {position: absolute;inset: 0;opacity: 0;cursor: pointer;z-index: 2;} .hidden-file {position: absolute;inset: 0;opacity: 0;cursor: pointer;z-index: 2;}
/* Плавающий лейбл */ /* Плавающий лейбл */
.poster-group .floating-label {position: absolute;left: 16px;top: -8px;font-size: 13px;color: #5F1798;}background: #fff;padding: 0 6px;z-index: 3;transition: all 0.3s ease;pointer-events: none;} .poster-group .floating-label {position: absolute;left: 16px;top: -8px;font-size: 13px;color: #5F1798;}background: #fff;padding: 0 6px;z-index: 3;transition: all 0.3s ease;pointer-events: none;}
/* Когда лейбл должен подняться */ /* Когда лейбл должен подняться */
.poster-group select:focus + .floating-label, .poster-group select:focus + .floating-label,
.poster-group.has-file .floating-label {top: -8px;font-size: 13px;color: #5F1798;} .poster-group.has-file .floating-label {top: -8px;font-size: 13px;color: #5F1798;}
/* Иконка справа */ /* Иконка справа */
.file-icon {position: absolute;right: 16px;top: 50%;transform: translateY(-50%);z-index: 3;pointer-events: none;} .file-icon {position: absolute;right: 16px;top: 50%;transform: translateY(-50%);z-index: 3;pointer-events: none;}
/* Красная ошибка */ /* Красная ошибка */
.poster-group.error .file-name-display {border-color: #e74c3c !important;box-shadow: 0 0 0 3px rgba(231, 76, 60, 0.15);} .poster-group.error .file-name-display {border-color: #e74c3c !important;box-shadow: 0 0 0 3px rgba(231, 76, 60, 0.15);}
.poster-group.error .floating-label {color: #e74c3c !important;} .poster-group.error .floating-label {color: #e74c3c !important;}
/* ====================== FLOATING LABELS ====================== */ /* ====================== FLOATING LABELS ====================== */
.floating-group {position: relative;margin-bottom: 1.5rem;} .floating-group {position: relative;margin-bottom: 1.5rem;}
.floating-label {position: absolute;left: 16px;top: -8px;font-size: 13px;color: #5F1798;transition: all 0.3s ease;pointer-events: none;background: #fff;padding: 0 6px;z-index: 2;} .floating-label {position: absolute;left: 16px;top: -8px;font-size: 13px;color: #5F1798;transition: all 0.3s ease;pointer-events: none;background: #fff;padding: 0 6px;z-index: 2;}
/* Плавающий лейбл */ /* Плавающий лейбл */
.floating-group select:focus + .floating-label, .floating-group textarea:focus + .floating-label, .floating-group select:focus + .floating-label, .floating-group textarea:focus + .floating-label,
.floating-group select:not(:placeholder-shown) + .floating-label, .floating-group textarea:not(:placeholder-shown) + .floating-label {top: -8px;font-size: 15px;color: #5F1798;} .floating-group select:not(:placeholder-shown) + .floating-label, .floating-group textarea:not(:placeholder-shown) + .floating-label {top: -8px;font-size: 15px;color: #5F1798;}
/* Красная подсветка — ТОЛЬКО после попытки отправки */ /* Красная подсветка — ТОЛЬКО после попытки отправки */
.floating-group.error select, .floating-group.error textarea, .floating-group.error select, .floating-group.error textarea,
.floating-group.error select[type="file"] {border-color: #e74c3c !important;box-shadow: 0 0 0 3px rgba(231, 76, 60, 0.38);} .floating-group.error select[type="file"] {border-color: #e74c3c !important;box-shadow: 0 0 0 3px rgba(231, 76, 60, 0.38);}
.floating-group.error .floating-label {color: #e74c3c !important;} .floating-group.error .floating-label {color: #e74c3c !important;}
/* Основные стили полей */ /* Основные стили полей */
.c_xhd5k, .c_4ykpn {box-sizing: border-box; width: 100%;padding: 16px 16px;border: 2px solid #ddd;border-radius: 8px;font-size: 16px;transition: all 0.3s ease;background: #fff;} .c_xhd5k, .c_4ykpn {box-sizing: border-box; width: 100%;padding: 16px 16px;border: 2px solid #ddd;border-radius: 8px;font-size: 16px;transition: all 0.3s ease;background: #fff;}
.c_xhd5k:focus, .c_4ykpn:focus {border-color: #5F1798;outline: none;box-shadow: 0 0 0 3px rgba(95, 23, 152, 0.15);}
.c_xhd5k:focus, .c_4ykpn:focus {border-color: #5F1798;outline: none;box-shadow: 0 0 0 3px rgba(95, 23, 152, 0.15);} .c_aq9et {cursor: pointer;transition: transform 0.1s linear, box‑shadow 0.1s linear;box-shadow: 0 0 0 rgba(0, 0, 0, 0);}
.c_aq9et:active {transform: scale(0.9);box-shadow: 5px 5px 5px rgba(95, 23, 152, 0.32);}
.c_aq9et {
cursor: pointer;
transition: transform 0.1s linear, box‑shadow 0.1s linear;
box-shadow: 0 0 0 rgba(0, 0, 0, 0);
}
.c_aq9et:active {
transform: scale(0.9);
box-shadow: 5px 5px 5px rgba(95, 23, 152, 0.32);
}
article>a{width: 100%;} article>a{width: 100%;}
picture>img{ width: 100%; object-fit: scale-down; } picture>img{ width: 100%; object-fit: scale-down; }
.fl{display: flex;justify-content: space-between;width: 100%;} .fl{display: flex;justify-content: space-between;width: 100%;}
@ -360,23 +310,10 @@ picture>img{ width: 100%; object-fit: scale-down; }
} }
</style> </style>
<style> <style>
.menua{width: 100%; .menua{width: 100%;display: flex;flex-direction: column;gap: 7px;margin: 10px 20px;}
display: flex; .icona{display: flex;gap: 10px;align-items: center;}
flex-direction: column;
gap: 7px;
margin: 10px 20px;}
.icona{display: flex;
gap: 10px;
align-items: center;}
.icona>span{color: #5F1798;} .icona>span{color: #5F1798;}
.c_hysjg { .c_hysjg {color: #0ED646;font-family: Inter;/* font-size: 12px; */font-style: normal;font-weight: 700;line-height: normal;}
color: #0ED646;
font-family: Inter;
/* font-size: 12px; */
font-style: normal;
font-weight: 700;
line-height: normal;
}
/* .c_m876y{align-items: center; /* .c_m876y{align-items: center;
background: rgba(14, 214, 70, 0.20); background: rgba(14, 214, 70, 0.20);
border-radius: 30px; border-radius: 30px;
@ -386,50 +323,24 @@ picture>img{ width: 100%; object-fit: scale-down; }
/* Mobile */ /* Mobile */
@media (max-width: 699px) { @media (max-width: 699px) {
.c_mrl59 { align-items: center; background: #5F1798; border-radius: 25px; bottom: -15px; display: flex; height: 50px; justify-content: center; position: absolute; right: -15px; width: 50px; } .c_mrl59 { align-items: center; background: #5F1798; border-radius: 25px; bottom: -15px; display: flex; height: 50px; justify-content: center; position: absolute; right: -15px; width: 50px; }
} }
/* Tablet */ /* Tablet */
@media (min-width: 700px) and (max-width: 900px) { @media (min-width: 700px) and (max-width: 900px) {
.c_iiehk { align-items: center; border-radius: 5px; display: flex; flex-direction: column; gap: 20px; width: 335px; } .c_iiehk { align-items: center; border-radius: 5px; display: flex; flex-direction: column; gap: 20px; width: 335px; }
.c_nnsh6>a>img{display: none;} .c_nnsh6>a>img{display: none;}
} }
/* Desktop */ /* Desktop */
@media (min-width: 901px) { @media (min-width: 901px) {
.c_iiehk { align-items: flex-end; border-radius: 5px; display: flex; flex-direction: column; gap: 20px; width: 310px; } .c_iiehk { align-items: flex-end; border-radius: 5px; display: flex; flex-direction: column; gap: 20px; width: 310px; }
.c_nnsh6>a>img{display: none;} .c_nnsh6>a>img{display: none;}
}</style> }</style>
<style> <style>
.b_thlt1 { align-items: center; background: rgba(14, 214, 70, 0.20); border-radius: 30px; display: flex; justify-content: center; padding: 1.5px 10px; } .b_thlt1 { align-items: center; background: rgba(14, 214, 70, 0.20); border-radius: 30px; display: flex; justify-content: center; padding: 1.5px 10px; }
.b_5dr47 { color: #0ED646; font-family: Inter; font-size: 12px; font-style: normal; font-weight: 700; line-height: normal; } .b_5dr47 { color: #0ED646; font-family: Inter; font-size: 12px; font-style: normal; font-weight: 700; line-height: normal; }
.b_thlt1_2 { align-items: center; background: rgba(95, 23, 152, 0.20); border-radius: 30px; display: flex; justify-content: center; padding: 1.5px 10px; } .b_thlt1_2 { align-items: center; background: rgba(95, 23, 152, 0.20); border-radius: 30px; display: flex; justify-content: center; padding: 1.5px 10px; }
.b_5dr47_2 { color: #5F1798; font-family: Inter; font-size: 12px; font-style: normal; font-weight: 700; line-height: normal; } .b_5dr47_2 { color: #5F1798; font-family: Inter; font-size: 12px; font-style: normal; font-weight: 700; line-height: normal; }
.b_6spaf { .b_6spaf {color: #5F1798;font-family: Inter;font-size: 14px;font-style: normal;font-weight: 400;line-height: normal;}
color: #5F1798; .b_qla2q {-webkit-box-orient: vertical;-webkit-line-clamp: 1;color: #000;display: -webkit-box;font-family: Inter;font-size: 13px;font-style: normal;font-weight: 400;line-height: normal;overflow: hidden;text-overflow: ellipsis;}
font-family: Inter;
font-size: 14px;
font-style: normal;
font-weight: 400;
line-height: normal;
}
.b_qla2q {
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
color: #000;
display: -webkit-box;
font-family: Inter;
font-size: 13px;
font-style: normal;
font-weight: 400;
line-height: normal;
overflow: hidden;
text-overflow: ellipsis;
}
.b_uu2ub { align-items: flex-start; background: #FDFAFF; border-radius: 5px; border: 1px solid #5F1798; box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25), 0 4px 20px 0 rgba(0, 0, 0, 0.20); display: flex; flex-direction: column; width: 335px; } .b_uu2ub { align-items: flex-start; background: #FDFAFF; border-radius: 5px; border: 1px solid #5F1798; box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25), 0 4px 20px 0 rgba(0, 0, 0, 0.20); display: flex; flex-direction: column; width: 335px; }
.b_1fvkt { align-self: stretch; border-radius: 5px; flex-shrink: 0; } .b_1fvkt { align-self: stretch; border-radius: 5px; flex-shrink: 0; }
.b_pvw5a { gap: 7px;align-items: flex-start; align-self: stretch; display: flex; flex-direction: column; flex: 1 0 0; justify-content: space-between; padding: 10px 20px 37px 20px; } .b_pvw5a { gap: 7px;align-items: flex-start; align-self: stretch; display: flex; flex-direction: column; flex: 1 0 0; justify-content: space-between; padding: 10px 20px 37px 20px; }
@ -437,27 +348,11 @@ picture>img{ width: 100%; object-fit: scale-down; }
.b_ob59y { border-radius: 1em; height: 70px; min-width: 70px; max-width: 150px; vertical-align: top; object-fit: cover;} .b_ob59y { border-radius: 1em; height: 70px; min-width: 70px; max-width: 150px; vertical-align: top; object-fit: cover;}
.b_ffruz { align-items: flex-start; display: flex; flex-direction: column; flex: 1 0 0; justify-content: center; } .b_ffruz { align-items: flex-start; display: flex; flex-direction: column; flex: 1 0 0; justify-content: center; }
.b_09est { color: #000; font-family: Inter; font-size: 15px; font-style: normal; font-weight: 700; line-height: normal; } .b_09est { color: #000; font-family: Inter; font-size: 15px; font-style: normal; font-weight: 700; line-height: normal; }
.b_wy3rt { .b_wy3rt {align-items: center;background: #5F1798;border-radius: 5px;display: flex;justify-content: center;padding: 15px 0;width: 100%;}
align-items: center; .b_bvl0d {color: #FFF;font-family: Inter;font-size: 14px;font-style: normal;font-weight: 400;line-height: normal;}
background: #5F1798;
border-radius: 5px;
display: flex;
justify-content: center;
padding: 15px 0;
width: 100%;
}
.b_bvl0d {
color: #FFF;
font-family: Inter;
font-size: 14px;
font-style: normal;
font-weight: 400;
line-height: normal;
}
/* Mobile */ /* Mobile */
@media (max-width: 699px) { @media (max-width: 699px) {
.c_3g8gh { align-items: flex-start; align-self: stretch; display: flex; flex-direction: column; flex-shrink: 0; justify-content: space-between; padding: 10px 20px 37px 20px; } .c_3g8gh { align-items: flex-start; align-self: stretch; display: flex; flex-direction: column; flex-shrink: 0; justify-content: space-between; padding: 10px 20px 37px 20px; }
.c_4b1hy { align-items: flex-start; background: #FDFAFF; border-radius: 5px; border: 1px solid #5F1798; box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25), 0 4px 20px 0 rgba(0, 0, 0, 0.20); display: flex; flex-direction: column; width: 335px; } .c_4b1hy { align-items: flex-start; background: #FDFAFF; border-radius: 5px; border: 1px solid #5F1798; box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25), 0 4px 20px 0 rgba(0, 0, 0, 0.20); display: flex; flex-direction: column; width: 335px; }
.c_mrl59 { align-items: center; background: #5F1798; border-radius: 25px; bottom: -15px; display: flex; height: 50px; justify-content: center; position: absolute; right: -15px; width: 50px; } .c_mrl59 { align-items: center; background: #5F1798; border-radius: 25px; bottom: -15px; display: flex; height: 50px; justify-content: center; position: absolute; right: -15px; width: 50px; }
} }