Merge pull request 'dev' (#29) from dev into main

Reviewed-on: #29
This commit is contained in:
2024-11-14 14:41:27 +03:00
14 changed files with 545 additions and 1 deletions

View File

@@ -6,6 +6,7 @@ from .views import *
urlpatterns = [
path('', MainPage, name='main'),
path('mover_landing_page/', LandingMoverPage, name='mover_landing_page'),
path('page/<str:url>/', StaticPageView, name='static_page'),
path('test_code', test_code, name='test_code'),
path('generate_routes/<int:routes_count>/', generate_routes, name='generate_routes'),

View File

@@ -148,7 +148,28 @@ def Page404(request, exeption=None):
except Exception as e:
return HttpResponse(str(e))
def LandingMoverPage(request):
from .init_options import init_options
init_options()
print(f'LOCALE_PATHS = {str(settings.LOCALE_PATHS)}')
page, is_created = StaticPage.objects.get_or_create(url='landing_mover')
Dict = {
'page': page,
}
breadcrumbs_Dict = {
}
Dict.update({'breadcrumbs': breadcrumbs_Dict})
t = loader.get_template('pages/p_mover_landing_page.html')
return get_inter_http_response(t, Dict, request)
def MainPage(request):

162
static/css/moover.css Normal file
View File

@@ -0,0 +1,162 @@
/*.container {*/
/* margin: 0 auto;*/
/* width: 1260px*/
/*}*/
/*@media (max-width: 1339.98px) {*/
/* .container {*/
/* width: 992px*/
/* }*/
/*}*/
/*@media (max-width: 1019.98px) {*/
/* .container {*/
/* width: 720px*/
/* }*/
/*}*/
/*@media (max-width: 767.98px) {*/
/* .container {*/
/* margin: 0 15px;*/
/* width: auto*/
/* }*/
/*}*/
:root {
--color-primary: #FF613A;
--color-white: #FFFFFF;
--color-black: #000000;
}
.btn {
display: inline-flex;
text-decoration: none;
color: black;
line-height: 22px;
border-radius: 10px;
padding: 20px 76px;
justify-content: center;
align-items: center;
margin: 0px 3px;
letter-spacing: 0.2px;
font-size: 18px;
}
.btn--primary {
background: var(--color-primary);
color: var(--color-white);
}
/***********************presentation******************************************/
.presentation {
text-align: center;
margin: 0 -65px 20px;
}
.presentation__top {
position: relative;
min-height: 270px;
margin: 0 auto 116px;
padding: 29px 0 40px;
background-image: url(/static/img/webp/Box9.webp),
url(/static/img/webp/Box10.webp),
url(/static/img/webp/Box11.webp),
url(/static/img/webp/Box12.webp);
background-position: top -6px left 27px,
top -29px right -37px,
bottom 70px left 258px,
bottom 67px right 252px;
background-repeat: no-repeat,
no-repeat,
no-repeat,
no-repeat;
}
.presentation__title {
font-size: 44px;
font-style: normal;
font-weight: 700;
line-height: 52px;
margin-bottom: 20px;
}
.presentation__subtitle {
text-align: center;
padding-left: 5px;
margin-bottom: 40px;
font-size: 18px;
font-weight: 600;
line-height: 26px;
}
.presentation__btn {
margin-bottom: 38px;
}
.presentation__next {
font-weight: 500;
line-height: 22px;
}
.presentation__arrows {
padding-top: 2px;
animation: jump 2s ease-in-out infinite;
}
.presentation__desc {
margin-bottom: 50px;
}
@keyframes jump {
0% {
transform: translateY(0px);
}
50% {
/*transform: translateY(20px);*/
transform: translateY(-5px);
}
60% {
transform: translateY(20px);
}
70% {
transform: translateY(0px);
}
80% {
transform: translateY(20px);
}
100% {
transform: translateY(0px);
}
}
/***********************cards*********************/
.cards {
}
.cards__list {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 5px;
}
.cards__item {
position: relative;
}
.cards__img {
}
.cards__desc {
}
.cards__arrow {
width: 62px;
height: 20px;
position: absolute;
right: -30px;
top: -13px;
background-image: url("/static/img/svg/Arrow23.svg");
}

View File

@@ -0,0 +1,3 @@
<svg width="62" height="20" viewBox="0 0 62 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M31.2431 4.90696C27.074 4.72772 20.6916 5.46692 17.9124 6.45061C16.4661 6.96259 2.08303 11.0406 1.39753 11.9377C-0.140762 13.9508 1.29118 14.408 3.1617 13.1727C5.89172 11.37 27.1619 8.69633 35.062 10.0591C39.9082 10.8948 47.4586 13.1603 47.564 13.8104C47.5892 13.9643 46.8851 14.2956 46.0002 14.5464C43.7152 15.1933 40.1182 17.1925 39.6148 18.0955C39.308 18.6451 39.3898 18.9582 39.9052 19.2102C41.3022 19.8922 46.7352 20.1339 50.668 19.6888C52.8608 19.4402 55.7454 19.2598 57.0782 19.2876C60.8168 19.3653 62.6554 17.5634 61.518 14.9368C60.4219 12.4061 53.0751 3.8059 50.2101 1.69982C48.7444 0.62243 48.2982 0.471218 47.3165 0.719869C46.1556 1.01364 45.5481 1.89888 45.6075 3.20956C45.6224 3.54513 46.1962 4.82242 46.8823 6.04822L48.1296 8.27667L45.3967 7.42798C41.3929 6.18448 35.1664 5.07533 31.2431 4.90696Z" fill="#FF613A" fill-opacity="0.8"/>
</svg>

After

Width:  |  Height:  |  Size: 960 B

BIN
static/img/webp/Box10.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

BIN
static/img/webp/Box11.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
static/img/webp/Box12.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
static/img/webp/Box9.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

BIN
static/img/webp/image1.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
static/img/webp/image2.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
static/img/webp/image3.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/img/webp/image4.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -21,7 +21,7 @@
<a href="https://www.facebook.com/share/p/tckdLFiyXm9r2925/?mibextid=WC7FNe" target="_blank"><img class="svg" src="/static/img/svg/facebook.svg"></a>
<a href="https://vk.com/club226251027" target="_blank"><img class="svg" src="/static/img/svg/vk.svg"></a>
<a href="https://www.tiktok.com/@tripwithbonus?_t=8qHingfQWNq" target="_blank"><img class="svg" src="/static/img/svg/tiktok.svg"></a>
<a href="https://youtube.com/@twb-bonus?si=k_YFiY86vBdvvHFN" target="_blank"><img class="svg" src="/static/img/svg/Youtube.svg"></a>
<a href="https://youtube.com/@tripwb?si=oiNZrtiOqx6OePJv" target="_blank"><img class="svg" src="/static/img/svg/Youtube.svg"></a>
<a href="https://t.me/+XA6A8Ls7fYw2Yzli" target="_blank"><img class="svg" src="/static/img/svg/Telegram.svg"></a>
</div>
</div>

View File

@@ -0,0 +1,357 @@
{% extends 'tb_base.html' %}
{% load static %}
{% load i18n %}
{% block meta %}
<link rel="stylesheet" href="{% static "css/moover.css" %}">
{% endblock %}
{% block content %}
<section class="presentation">
<div class="presentation__top">
<h1 class="presentation__title" >
{% blocktrans %}
Сервис попутных посылок
{% endblocktrans %}
</h1>
<div class="presentation__subtitle">
{% translate "Отправляй посылки с попутчиками в любую точку, быстро и недорого" %}
</div>
<button class="presentation__btn btn btn--primary">Узнать подробнее</button>
<div class="presentation__next">
{% translate "Как это работает?" %}
<div class="presentation__arrows">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none">
<path d="M26 16L16 26L6 16" stroke="#272424" stroke-opacity="0.6" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M26 6L16 16L6 6" stroke="#272424" stroke-opacity="0.6" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</div>
</div>
</div>
<div class="presentation__bottom">
<div class="presentation__title">
{% translate "Как это работает" %}
</div>
<p class="presentation__desc">
{% translate "Маленькая история о том, как работает наш сервис" %}
</p>
<div class="presentation__cards cards">
<div class="cards__list">
<div class="cards__item">
<div class="cards__arrow"></div>
<img class="cards__img" src="{% static "img/webp/image1.webp" %}" alt="img1"/>
<p class="cards__desc">
{% translate "Мария, хочет отправить посылку, но её не устраивает цена доставки почтовых сервисов и она устала искать в чатах тех, кто сможет перевезти посылку." %}
</p>
</div>
<div class="cards__item">
<div class="cards__arrow"></div>
<img class="cards__img" src="{% static "img/webp/image2.webp" %}" alt="img1"/>
<p class="cards__desc">
{% translate "Мария, узнаёт о нашем сервисе TripWB.com. Регистрируется и очень быстро размещает объявление." %}
</p>
</div>
<div class="cards__item">
<div class="cards__arrow"></div>
<img class="cards__img" src="{% static "img/webp/image3.webp" %}" alt="img1"/>
<p class="cards__desc">
{% translate "Попутчик Егор увидел объявление Марии, нажал откликнуться и получил возможность связаться с ней, удобным для него способом." %}
</p>
</div>
<div class="cards__item">
<img class="cards__img" src="{% static "img/webp/image4.webp" %}" alt="img1"/>
<p class="cards__desc">
{% translate "Мария и Егор обговорили детали доставки и потом встретились в удобном для всех месте. После чего Мария передала посылку Егору и он её доставил." %}
</p>
</div>
</div>
</div>
</div>
{# <div class="switch">#}
{# <div><a class="active" href="#">Перевозчик</a></div>#}
{# <div><a class="deadctive" href="#">Отправитель</a></div>#}
{# </div>#}
</div>
<div class="presentaition__bottom search_form_main">
<div class="cut-width">
{% include "blocks/b_find_route_form.html" %}
</div>
</div>
</section>
<div class="switch">
<div class="form_radio_btn">
<input onclick="set_right_btn_owner_type(this)" class="btns_owner el_form_find_route" id="radio-1" type="radio"
name="owner_type" value="mover" checked>
<label for="radio-1">{% translate "Найти перевозчика" %}</label>
</div>
<div class="form_radio_btn">
<input onclick="set_right_btn_owner_type(this)" class="btns_owner el_form_find_route" id="radio-2" type="radio"
name="owner_type" value="customer">
<label for="radio-2">{% translate "Найти отправителя" %}</label>
</div>
</div>
<div class="search_form_main">
<div class="cut-width">
{% include "blocks/b_find_route_form.html" %}
</div>
</div>
<div class="mid_block_static">
<h2 id="title_static">{% translate "О сервисе Trip With Bonus" %}</h2>
<span id="sub_title_static">
<p>
{% translate "TripWithBonus — это сервис, созданный для того, чтобы отправитель и перевозчик нашли друг-друга!" %}
{% translate "Наш сервис предлагает вам прямые контакты, а не является посредником!" %}
</p>
</span>
<div class="tabs">
<div class="wrapper_tab_button">
<div
class="tab-btn-1 tab-btn-active"
onclick="showTabBtn(this)"
>
{% translate "Как отправить?" %}
</div>
<div
class="tab-btn-2"
onclick="showTabBtn(this)"
>
{% translate "Как перевезти?" %}
</div>
</div>
<div id="content-1" class="show ">
<h2 id="title_static">{% translate "Вам нужно отправить посылку быстро и недорого?" %}</h2>
<div class="benefit_img">
<div class="benefit_img_item">
<img src="/static/img/svg/Find_carrier.svg" alt="">
<h3>{% translate "Найдите перевозчика" %}</h3>
<span>{% translate "Зайдите на сайт Trip With Bonus и в форме вверху страницы, заполните данные для поиска перевозчика." %}</span>
</div>
<img src="/static/img/svg/Arrow_direction.svg" alt="">
<div class="benefit_img_item">
<img src="/static/img/svg/Contact_carrier.svg" alt="">
<h3>{% translate "Свяжитесь с перевозчиком" %}</h3>
<span>{% translate "Откройте контакты на сайте и договоритесь о месте встречи и условиях перевозки. В случае, если Вы не нашли объявления о перевозчиках по Вашему запросу, Вы можете разместить свое объявление воспользовавшись формой в личном кабинете." %}</span>
</div>
<img src="/static/img/svg/Arrow_direction.svg" alt="">
<div class="benefit_img_item">
<img src="/static/img/svg/Pass_package.svg" alt="">
<h3>{% translate "Передайте посылку" %}</h3>
<span>{% translate "Встречайтесь, знакомьтесь и передавайте посылку" %}</span>
</div>
</div>
<div class="button_container">
<a class="a_btn_standart"
href="{% url 'profile_page' 'create_route_for_customer' %}"
id="more_button">{% translate "Отправить посылку" %}
</a>
</div>
</div>
<div id="content-2">
<h2 id="title_static">{% translate "Вы путешествуете и можете взять посылку по-пути?" %}</h2>
<div class="benefit_img">
<div class="benefit_img_item">
<img src="/static/img/svg/Find_carrier.svg" alt="">
<h3>{% translate "Найдите отправителя" %}</h3>
<span>{% translate "Зайдите на сайт Trip With Bonus и в форме вверху страницы, заполните данные для поиска отправителя посылки." %}</span>
</div>
<img src="/static/img/svg/Arrow_direction.svg" alt="">
<div class="benefit_img_item">
<img src="/static/img/svg/Contact_carrier.svg" alt="">
<h3>{% translate "Свяжитесь с отправителем" %}</h3>
<span>{% translate "Откройте контакты на сайте и договоритесь о месте встречи и условиях перевозки. В случае, если Вы не нашли объявления об отправителях по Вашему запросу, Вы можете разместить свое объявление воспользовавшись формой в личном кабинете." %}</span>
</div>
<img src="/static/img/svg/Arrow_direction.svg" alt="">
<div class="benefit_img_item">
<img src="/static/img/svg/Pass_package.svg" alt="">
<h3>{% translate "Принимайте посылку" %}</h3>
<span>{% translate "Встречайтесь, знакомьтесь и принимайте посылку" %}</span>
</div>
</div>
<div class="button_container">
<a class="a_btn_standart"
href="{% url 'profile_page' 'create_route_for_mover' %}"
id="more_button">{% translate "Перевезти посылку" %}
</a>
</div>
</div>
</div>
</div>
<div class="pre_bottom_block_static">
<h2 id=title_static>{% translate "Trip With Bonus это комфорт и эффективность!" %}</h2>
<div class="cards_wrapper">
<div class="cards_item_1">
<div class="cards_item_img">
<img src="/static/img/png/cards_item_1.png" alt="">
</div>
<div class="cards_item_text">
<div class="card_title_1">{% translate "+5%" %}</div>
<div class="card_title_2">{% translate "рост путешествий ежегодно" %}</div>
<div
class="card_title_3">{% translate "В среднем на 5% растёт количество путешествий ежегодно. Просто путешествуй и получай бонусы." %}</div>
</div>
</div>
<div class="cards_item_2">
<div class="cards_item_img">
<img src="/static/img/png/cards_item_2.png" alt="">
</div>
<div class="cards_item_text">
<div class="card_title_1">{% translate "в 3 раза" %}</div>
<div class="card_title_2">{% translate "быстрее других сервисов" %}</div>
<div
class="card_title_3">{% translate "Почтовые сервисы доставляет посылки в среднем за 10 дней. С нами - быстрее!" %}</div>
</div>
{# <div class="card_gradient"></div>#}
</div>
<div class="cards_item_3">
<div class="cards_item_img">
<img src="/static/img/png/cards_item_3.png" alt="">
</div>
<div class="cards_item_text">
<div class="card_title_1">{% translate "+142" %}</div>
<div class="card_title_2">{% translate "заявки ежедневно" %}</div>
<div class="card_title_3">{% translate "На перевозку или отправку посылок в разные уголки мира" %}</div>
</div>
{# <div class="cards_item_3_right">#}
{# <div class="card_gradient"></div>#}
{# </div>#}
</div>
<div class="cards_item_4">
<div class="cards_item_img">
<img src="/static/img/png/cards_item_4.png" alt="">
</div>
<div class="cards_item_text">
<div class="card_title_1">{% translate "30+" %}</div>
<div class="card_title_2">{% translate "стран" %}</div>
<div class="card_title_3">{% translate "С TripWB отправляй посылки по всему миру! С нами нет границ!" %}</div>
</div>
{# <div class="cards_item_4_right">#}
{# <div class="card_gradient_black"></div>#}
{# </div>#}
</div>
</div>
</div>
{% if page.get_FAQ_items %}
<div class="faq_main_page">
<h2 id=title_static>
{% if page.FAQ_title %}{{ page.FAQ_title }}{% else %}{% translate "Частые вопросы" %}{% endif %}
</h2>
{% for faq_item in page.get_FAQ_items %}
<details>
<summary>{{ faq_item.question }}</summary>
<p>{{ faq_item.answer }}</p>
</details>
{% endfor %}
{% endif %}
</div>
<div class="news_block_main">
<h2 class="ta_center" id=title_static>{% translate "Последние новости" %}</h2>
{# {% for art in articles %}#}
{##}
{# <div class="news_item">#}
{# <div class="news_img"><img src="{{ MEDIA_URL }}{{ art.picture }}" /></div>#}
{# <div class="news_header">{{ art.name }}</div>#}
{# <div class="news_description">#}
{# {{ art.description|truncatechars:100 }}#}
{# <div class="news_gradient"></div>#}
{# </div>#}
{# </div>#}
{##}
{# {% endfor %}#}
{# <div class="three_pinned_news">#}
<div class="news_block">
{% for art in articles %}
<a class="cont_one_news" href="{% url "article_one" art.url %}">
<div class="cont_img_one_news">
<img class="img_one_news" src="{{ MEDIA_URL }}{{ art.picture }}">
</div>
<div class="cont_content_one_news">
<div class="container_name_one_news">
{{ art.name|truncatechars:100 }}
</div>
<div class="container_descript_one_news">
{{ art.description|truncatechars:100 }}
</div>
</div>
</a>
{% endfor %}
</div>
{# {% url "article_one" art.url %}#}
{# {{ MEDIA_URL }}{{ art.picture }}#}
{# {{ art.description|truncatechars:100 }}#}
{# </div>#}
</div>
{% endblock %}