Merge remote-tracking branch 'origin/main'

This commit is contained in:
2023-11-30 14:43:46 +03:00
27 changed files with 342 additions and 128 deletions

View File

@@ -19,7 +19,7 @@ from django.utils.translation import gettext_lazy as _
class UserPageModel(BaseModelViewPage):
# pub_DT = models.DateTimeField(verbose_name=u'Дата и время публикации', auto_created=True)
text = RichTextUploadingField(verbose_name=u'Текст')
text = RichTextUploadingField(verbose_name=_('Текст'))
class Meta:
verbose_name=_("Пользовательская страница")

View File

@@ -48,7 +48,7 @@ class Admin_ProfileInline(admin.StackedInline):
'comment', 'creator'
)
}),
('Дополнительно', {
(_('Дополнительно'), {
'classes': ['wide'],
'fields': (
('json_data',)

View File

@@ -27,4 +27,7 @@ urlpatterns = [
path('change_profile/', change_profile_ajax, name='change_profile_ajax'),
path('change_profile_confirm/', change_profile_confirm_ajax, name='change_profile_confirm_ajax'),
path('change_avatar_confirm/', change_avatar_confirm_ajax, name='change_avatar_confirm_ajax'),
path('request_offer/', request_offer_ajax, name='request_offer_ajax')
]

View File

@@ -29,6 +29,57 @@ import base64
# html = render_to_string('blocks/profile/b_subscribe.html', Dict, request=request)
# return JsonResponse({'html': html}, status=200)
def request_offer_ajax(request):
if request.method != 'POST':
raise Http404
data = request.POST
if not data and request.body:
data = request.body
from GeneralApp.funcs_options import get_options_by_opt_types, get_mail_send_options
sets = get_options_by_opt_types(['domain', 'project_name'], only_vals=True)
request_type = None
subject = _('Получен запрос')
if 'form_name' in data:
if data['form_name'] == 'msg_from_advertisement':
subject = _('Получен запрос на рекламу')
request_type = _('запрос на рекламу')
if request_type:
request_type_str = f'<b>{_("Тип запроса")}:</b> {request_type}<br>'
else:
request_type_str = ''
Dict = {
'logo': f'{request.scheme}://{sets["domain"]}/static/img/svg/LogoMobile.svg',
'project_name': sets['project_name'],
'message_title': subject,
'message_text': f'<p><b>{_("ДАННЫЕ ЗАПРОСА")}</b></p>'
f'<p style="padding-left: 20px; line-height: 30px;">'
f'{request_type_str}'
f'<b>{_("Имя")}:</b> {data["name"]}<br>'
f'<b>{_("Телефон")}:</b> {data["phone"]}'
f'</p>'
}
html = render_to_string('mail/m_request_offer.html', Dict, request)
from BaseModels.mailSender import admin_send_mail_by_SMTPlib
mail_sets = get_mail_send_options()
to = [mail_sets['sender_email'], 'web@syncsystems.net']
res = admin_send_mail_by_SMTPlib(
mail_sets,
subject=subject,
from_email=mail_sets['sender_email'], to=to,
html_content=html
)
return JsonResponse({'status': 'sended'})
@login_required(login_url='/profile/login/')
def chats_ajax(request):
if request.method != 'POST':

View File

@@ -37,14 +37,14 @@ def get_base_fieldsets():
)
}],
(u'Описание и текст', {
(_('Описание и текст'), {
'classes': ['wide', 'collapse'],
'fields': (
'description', 'text',
)
}),
(u'Промо ФОН', {
(_('Промо ФОН'), {
'classes': ['wide', 'collapse'],
'fields': (
'background_promo_show', 'background_promo_inherits',
@@ -64,7 +64,7 @@ def get_base_fieldsets():
)
}),
(u'Партнерские ссылки', {
(_('Партнерские ссылки'), {
'classes': ['wide', 'collapse'],
'fields': (
'link_left_promo_show',

View File

@@ -91,7 +91,7 @@ def admin_send_mail_by_SMTPlib(sets, subject, from_email, to, html_content, atta
smtp_port = sets['mail_server_smtp_port']
smtp_password = sets['sender_mail_password']
smtp_login = sets['sender_mail_login']
res = send_mail_by_SMTPlib(subject, from_email, to, html_content, smtp_server, smtp_port, smtp_login,
res = send_mail_by_SMTPlib(sets, subject, from_email, to, html_content, smtp_server, smtp_port, smtp_login,
smtp_password, attachments)
@@ -106,14 +106,14 @@ def admin_send_mail_by_SMTPlib(sets, subject, from_email, to, html_content, atta
def send_mail_by_SMTPlib(sets, subject, from_email, to_init, html_content, smtp_server, smtp_port, smtp_login, smtp_password,
attachments=None):
to = to_init
if not settings.prod_server:
to = 'web@syncsystems.net'
else:
to = to_init
try:
from settings_local import DEBUG
except:
print('get settings_local fail')
# if not settings.prod_server:
# to = 'web@syncsystems.net'
# else:
# to = to_init
# try:
# from settings_local import DEBUG
# except:
# print('get settings_local fail')
res = None
mail_lib = None
@@ -153,8 +153,8 @@ def send_mail_by_SMTPlib(sets, subject, from_email, to_init, html_content, smtp_
else:
to_str = to[0]
else:
if to == sets['sender_email']:
return None
# if to == sets['sender_email']:
# return None
to_str = to
to = []
to.append(to_str)

View File

@@ -1,6 +1,7 @@
from sets.admin import *
from .models import *
from django.contrib import admin
from django.utils.translation import gettext as _
class Admin_StaticPage(Admin_Trans_BaseModelViewPage):
@@ -14,7 +15,7 @@ class Admin_StaticPage(Admin_Trans_BaseModelViewPage):
'order',
)
}),
('Настройки', {
(_('Настройки'), {
'classes': ['wide', 'collapse'],
'fields': (
'FAQ_title',
@@ -51,34 +52,35 @@ class Admin_StaticPage(Admin_Trans_BaseModelViewPage):
admin.site.register(StaticPage,Admin_StaticPage)
class Admin_Block(Admin_BaseBlock):
class Admin_Block(Admin_Trans_BaseModel):
pass
def get_fieldsets(self, request, obj=None):
fieldsets = super(type(self), self).get_fieldsets(request, obj)
if not request.user.is_superuser and obj.name and obj.name in ('About US', 'machines', 'works'):
fieldsets[0][1]['fields'].pop(0)
fieldsets.insert(
1, ('Контент', {
'classes': ['wide'],
'fields': (
'title', 'description', 'text',
'picture',
)
})
)
return fieldsets
def has_delete_permission(self, request, obj=None):
if request.user.is_superuser:
return True
if obj.name in ('About US', 'machines', 'works'):
return False
# def get_fieldsets(self, request, obj=None):
# fieldsets = super(type(self), self).get_fieldsets(request, obj)
# if not request.user.is_superuser and obj.name and obj.name in ('About US', 'machines', 'works'):
# fieldsets[0][1]['fields'].pop(0)
# fieldsets.insert(
# 1, (_('Контент'), {
# 'classes': ['wide'],
# 'fields': (
# 'title', 'description', 'text',
# 'picture',
# )
#
# })
# )
# return fieldsets
#
# def has_delete_permission(self, request, obj=None):
# if request.user.is_superuser:
# return True
#
# if obj.name in ('About US', 'machines', 'works'):
# return False
admin.site.register(Block,Admin_Block)
class Admin_Option(Admin_BaseModel):
class Admin_Option(Admin_Trans_BaseModel):
# def get_fieldsets(self, request, obj=None):
# fieldsets = super(type(self), self).get_fieldsets(request, obj)
@@ -95,7 +97,7 @@ class Admin_Option(Admin_BaseModel):
fieldsets = [
('Контент', {
(_('Контент'), {
'classes': ['wide'],
'fields': (
'name', 'opt_type', 'prefix', 'value', 'picture'

View File

@@ -10,8 +10,8 @@ def get_options_by_opt_types(opt_types, only_vals=False):
opts = Option.objects.filter(**kwargs)
if opts and only_vals:
opts = opts.values('name', 'value')
opts = {item['name']: item['value'] for item in opts}
opts = opts.values('opt_type', 'value')
opts = {item['opt_type']: item['value'] for item in opts}
return opts
def get_first_option_value_by_opt_type(opt_type):

View File

@@ -1,49 +1,50 @@
from .models import *
from django.utils.translation import gettext as _
required_options_Dict = {
'Адрес почтового сервера': {
'name': 'Адрес почтового сервера',
'name_ru': 'Адрес почтового сервера',
'opt_type': 'mail_server_url',
'value': '213.142.147.40',
},
'SMTP порт почтового сервера': {
'name': 'SMTP порт почтового сервера',
'name_ru': 'SMTP порт почтового сервера',
'opt_type': 'mail_server_smtp_port',
'value': 587,
},
'login для отправки писем с сайта': {
'name': 'email для отправки писем с сайта',
'name_ru': 'email для отправки писем с сайта',
'opt_type': 'sender_mail_login',
'value': 'admin@tripwb.com',
},
'email для отправки': {
'name': 'email для отправки',
'name_ru': 'email для отправки',
'opt_type': 'sender_email',
'value': 'admin@tripwb.com',
},
'Пароль для отправки писем с сайта': {
'name': 'пароль для отправки писем с сайта',
'name_ru': 'пароль для отправки писем с сайта',
'opt_type': 'sender_mail_password',
'value': 't5Fdcah^gdajY',
},
'Название проекта': {
'name': 'Название проекта',
'name_ru': 'Название проекта',
'opt_type': 'project_name',
'value': 'TWB',
},
'Адрес сайта': {
'name': 'Адрес сайта',
'name_ru': 'Адрес сайта',
'opt_type': 'domain',
'value': 'tripwb.com',
},
'email техподдержки': {
'name': 'email техподдержки',
'name_ru': 'email техподдержки',
'opt_type': 'support_email',
'value': 'admin@tripwb.com',
},
'корпоративный email': {
'name': 'корпоративный email',
'name_ru': 'корпоративный email',
'opt_type': 'corp_email',
'value': 'admin@tripwb.com',
},

View File

@@ -0,0 +1,43 @@
# Generated by Django 4.2.2 on 2023-11-30 13:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('GeneralApp', '0004_alter_block_description_alter_block_description_en_and_more'),
]
operations = [
migrations.AddField(
model_name='option',
name='name_en',
field=models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название'),
),
migrations.AddField(
model_name='option',
name='name_ru',
field=models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название'),
),
migrations.AddField(
model_name='option',
name='prefix_en',
field=models.CharField(blank=True, max_length=250, null=True, verbose_name='Префикс'),
),
migrations.AddField(
model_name='option',
name='prefix_ru',
field=models.CharField(blank=True, max_length=250, null=True, verbose_name='Префикс'),
),
migrations.AddField(
model_name='option',
name='value_en',
field=models.CharField(max_length=250, null=True, verbose_name='Значение'),
),
migrations.AddField(
model_name='option',
name='value_ru',
field=models.CharField(max_length=250, null=True, verbose_name='Значение'),
),
]

View File

@@ -14,6 +14,12 @@ class Block_TranslationOptions(TranslationOptions):
)
translator.register(Block, Block_TranslationOptions)
class Option_TranslationOptions(TranslationOptions):
fields = (
'name', 'value', 'prefix'
)
translator.register(Option, Option_TranslationOptions)
class FAQitem_TranslationOptions(TranslationOptions):
fields = (

View File

@@ -143,8 +143,10 @@ def find_routes_ajax(request):
if 'errors' in routes_Dict:
return JsonResponse(routes_Dict, status=400)
html = render_to_string('blocks/b_search_routes.html', routes_Dict, request=request)
if routes_Dict['routes']:
html = render_to_string('blocks/b_search_routes.html', routes_Dict, request=request)
else:
html = render_to_string('templates_js_translate/not_found_find_routes.html', routes_Dict, request=request)
res_Dict = {
'html': html,
@@ -240,6 +242,8 @@ def create_or_change_route_ajax(request, route_id=None):
obj.owner = request.user
obj.save()
route_id = obj.id
routes_Dict = get_routes_Dict(request.user)
if 'errors' in routes_Dict:

View File

@@ -75,14 +75,14 @@ class Route(BaseModel):
ordering = ('name',)
def from_country_n_city_str(self):
res = 'Неизвестно'
res = _('Неизвестно')
if self.from_city:
res = self.from_city.get_country_n_city_str()
return res
def to_country_n_city_str(self):
res = 'Неизвестно'
res = _('Неизвестно')
if self.to_city:
res = self.to_city.get_country_n_city_str()

View File

@@ -0,0 +1,24 @@
# Generated by Django 4.2.2 on 2023-11-30 13:42
import colorfield.fields
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('SubscribesApp', '0002_alter_subscribeoption_options_subscribe_bg_color_and_more'),
]
operations = [
migrations.AlterField(
model_name='subscribe',
name='bg_color',
field=colorfield.fields.ColorField(default='#FFFFFF', image_field=None, max_length=25, samples=None, verbose_name='Цвет фона'),
),
migrations.AlterField(
model_name='subscribe',
name='text_color',
field=colorfield.fields.ColorField(default='#000000', image_field=None, max_length=25, samples=None, verbose_name='Цвет текста'),
),
]

View File

@@ -2817,4 +2817,31 @@
text-align: left;
top: 0;
left: 19px;
}
.btn_a_anchor{
border-radius: 10px;
background: #E6E6E6;
width: 20%;
height: 60px;
font-size: 18px;
font-style: normal;
font-weight: 600;
line-height: 26px;
color: rgba(39, 36, 36, 0.60);
margin-left: 5px;
display: block;
}
.btn_a_anchor.partners{
background: #FF613A;
color: #FFF;
}
.text_in_btn_a_anchor{
padding-top: 20px;
}
.anchor{
scroll-margin-top: 60px;
}

View File

@@ -1964,8 +1964,8 @@ button#more_button{
border-radius: 10px;
text-align: center;
box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.12);
margin: 0 auto;
margin-left: 0;
margin-right: 0;
}
@@ -2203,23 +2203,26 @@ figure{
text-align: -moz-center;
width: 100%;
margin-top: 40px;
display: flex;
justify-content: center;
flex-wrap: wrap;
}
#how_it_work_b{
border-radius: 10px;
background: #E6E6E6;
width: 20%;
height: 60px;
font-size: 18px;
font-style: normal;
font-weight: 600;
line-height: 26px;
color: rgba(39, 36, 36, 0.60);
margin-left: 5px;
/*#how_it_work_b{*/
/* border-radius: 10px;*/
/* background: #E6E6E6;*/
/* width: 20%;*/
/* height: 60px;*/
/* font-size: 18px;*/
/* font-style: normal;*/
/* font-weight: 600;*/
/* line-height: 26px;*/
/* color: rgba(39, 36, 36, 0.60);*/
/* margin-left: 5px;*/
}
/*}*/
.benefit_img_item{
width: 30%;

View File

@@ -114,17 +114,9 @@ function ajax_for_filter (data_d,get_url){
}
}
}
if (data.html === "\n\n\n\n\n"){
if (data.html.includes("not_found_routes")){
// document.querySelector(".block-finded-routes").innerHTML = "<span style='color: #ff0000;font-weight: 800;font-size: 18px;padding: 10px;'>Нечего не найдено!</span>"
document.querySelector(".block-finded-routes").innerHTML = "<div class=\"not_found_routes show\">\n" +
" <div class=\"text-align-center fw-700 font-large c-txt-b2 m-a w-80 m-t-8p\">\n" +
" Упс... <span class=\"orange-text\">Ничего не найдено</span>, попробуйте\n" +
" изменить параметры поиска или оставьте заявку\n" +
" на перевозку посылки\n" +
" </div>\n" +
" <img class=\"boxes_not_fond_routes left\" src=\"/static/img/boxes_for_not_found_routes/b_1.svg\"\">\n" +
" <img class=\"boxes_not_fond_routes right\" src=\"/static/img/boxes_for_not_found_routes/b_2.svg\"\">\n" +
" </div>"
document.querySelector(".block-finded-routes").innerHTML = data.html
} else {

View File

@@ -5,31 +5,6 @@
// window.onfocus = function () {
// getSocketState()
// }
let map_of_words_en = new Map([
['закрыть'],['Close']
])
let map_of_words_ru = new Map([
['close'],['Закрыть']
])
function translate_words (word,lang){
let corr_word = word.toLowersCase()
let trans_word = null
if (lang === 'ru'){
trans_word = map_of_words_ru.get(`${corr_word}`)
} else if (lang === 'en') {
trans_word = map_of_words_en.get(`${corr_word}`)
}
}
function check_return_trans_word (str) {
if (!str === undefined && str === '' && str){
return str
} else {
console.log(`error! str = ${str}`)
}
}
window.onload = function (){
middleWareJS()

View File

@@ -332,7 +332,9 @@ function selectItemAddrPoint(id, name, ctrl_name,){
tap_txt_cont.setAttribute('title',name)
let tap_cont = document.querySelector("#id_" + ctrl_name.slice(0, -4));
tap_cont.value = id;
changeWidthEL(tap_txt_cont)
if (!window.location.href.includes("profile")){
changeWidthEL(tap_txt_cont)
}
input_list.classList.remove('show');
if (document.querySelector(".container_form_search_carrier")){
document.querySelector(".container_form_search_carrier").style.zIndex = 'unset'
@@ -522,15 +524,21 @@ function sendRoute(el, routeID = null){
data: JSON.stringify(obj_w_el_form),
success: function(data){
let data_route_id = data.route_id
// location.href = '/profile'
document.querySelector(".info_profile").innerHTML = data.html
let el_route = document.querySelector(`[data-number-of-route="${routeID}"]`);
el_route.scrollIntoView(true);
let el_route = document.querySelector(`[data-number-of-route="${data_route_id}"]`);
if (routeID){
el_route = document.querySelector(`[data-number-of-route="${routeID}"]`);
}
el_route.scrollIntoView({
behavior:"smooth",
block:'start',
inline:'start'
});

View File

@@ -40,7 +40,7 @@
{% if profileForm.errors.tel %}<div class="error_form_profile">{{ profileForm.errors.tel }}</div>{% endif %}
</div>
<div class="container_el_form_profile">
<label class="label_f_profile" for="id_email">{% if profileForm.fields.email.required %}<span class="orange-text">*</span>{% endif %} Е-mail</label>
<label class="label_f_profile" for="id_email">{% if profileForm.fields.email.required %}<span class="orange-text">*</span>{% endif %} E-mail</label>
<input class="input_f_profile" type="text" id="id_email" name="email" {% if profileForm.initial.email %}value="{{ profileForm.initial.email }}" {% endif %} {% if profileForm.initial.email %}data-initial-value="{{ profileForm.initial.email }}"{% else %}data-initial-value=""{% endif %}>
{% if profileForm.errors.email %}<div class="error_form_profile">{{ profileForm.errors.email }}</div>{% endif %}
</div>

View File

@@ -8,7 +8,9 @@
<div>
<div class="state_subscribe">
{% translate "У вас" %} <a>{% translate "не оформлена подписка" %}</a>
{% blocktranslate %}
У вас <a>не оформлена подписка</a>
{% endblocktranslate %}
</div>
<div class="state_subscribe">

View File

@@ -8,9 +8,9 @@
<h2 id=title_static>{{ page.title }}</h2>
<span id="sub_title_static">{{ page.description }}</span>
<div class="button_container">
<button
onclick="document.location='#scroll_to_form'"
id="more_button">{% translate "Узнать подробнее" %}</button>
<a class="btn_a_anchor partners" href="#scroll_to_form" id="how_it_work_b">
<div class="text_in_btn_a_anchor">{% translate "Узнать подробнее" %}</div>
</a>
</div>
</div>
</div>
@@ -42,7 +42,7 @@
</div>
<div class="bottom_block_static" id="scroll_to_form">
<div class="bottom_block_static anchor" id="scroll_to_form">
<h2 id=title_static>{% translate "Стоимость" %}</h2>
<span id="sub_title_static">{% translate "Оставьте заявку и получите персональное коммерческое предложение" %}</span>

View File

@@ -26,10 +26,9 @@
id="more_button">{% translate "Перевезти посылку" %}</button>
{% endif %}
<button
onclick= "document.location='#anchor_how_it_work'"
id="how_it_work_b">{% translate "Как это работает?" %}
</button>
<a class="btn_a_anchor" href="#anchor_how_it_work" id="how_it_work_b">
<div class="text_in_btn_a_anchor">{% translate "Как это работает?" %}</div>
</a>
</div>
</div>
</div>
@@ -55,7 +54,7 @@
{% include "blocks/static_pages_blocks/b_benefit_img_about_service.html" %}
<div id="anchor_how_it_work"></div>
<div id="anchor_how_it_work" class="anchor"></div>
<div id="title_static"
@@ -151,7 +150,7 @@
</div>
<div class="options_subscribe">
<div class="options_subscribe_title light" style="color: {{ subscribe.text_color }}">
Опции:
{% trans "Опции" %}:
</div>
<div class="list_options_subscribe">
<ul class="option_list">

View File

@@ -6,9 +6,9 @@
<span id="sub_title_static">{{ page.description }}</span>
<div class="button_container">
<button
onclick="document.location= '#scroll_to_div'"
id="more_button">{% translate "Узнать подробнее" %}</button>
<a class="btn_a_anchor partners" href="#scroll_to_div" id="how_it_work_b">
<div class="text_in_btn_a_anchor">{% translate "Узнать подробнее" %}</div>
</a>
</div>
</div>
</div>
@@ -30,7 +30,7 @@
</div>
<div id="scroll_to_div" class="bottom_block_static">
<div id="scroll_to_div" class="bottom_block_static anchor">
<div id=title_static >{% translate "Стань нашим партнером" %}</div>
<span id="sub_title_static">{% translate "Оставь заявку и получи пресональное предложение о партнерстве" %}</span>
<form data-name="msg_from_partners">

View File

@@ -0,0 +1,65 @@
<div style="font-family:Calibri,Candara,Segoe,'Segoe UI',Optima,Arial,sans-serif; padding:10px; background-color: #F8F8F8;">
<div style="line-height:1.0em;width: 660px">
<div style="padding:5px; text-align: center;">
<img src="{{ logo }}" alt="{{ project_name }}" style="margin:0;padding:0;">
</div>
<p style="font-weight:700;font-size:25px;text-align:center;padding:0;line-height:1em; text-transform: uppercase; color: #ff613a;">
{{ message_title|safe }}
</p>
<div style="line-height:1.0em;font-size:18px;margin-top: 5px; margin-left: 30px; box-shadow: -1px 4px 10px 0 rgba(198, 199, 203, 0.20), 0 -1px 10px 0 rgba(198, 199, 203, 0.20); padding: 30px; border-radius: 10px; background-color: #FFF;">
{# <p style="line-height:1.0em;font-size:18px;margin-top: 5px; margin-left: 80px">#}
{{ message_text|safe }}
{# </p>#}
</div>
{% for button in message_buttons %}
<div style="text-align:center;font-weight: 700;">
<a href="{{ button.url }}">
<div style="display:inline-block;text-align:center;font-size:18px;padding:5px 10px;margin:5px;border-radius:2px;background-color:#61aeb6;color:#fff;text-decoration:none;line-height:1.0em;cursor:pointer">
{{ button.caption }}
</div>
</a>
</div>
{% endfor %}
<div style="text-align:center;width: 660px;line-height:1.1em">
<div style="margin: 40px 10px 10px;">
<hr>
{# <nobr><b>Адрес кафе:</b> Минск, ул. Будславская, 2</nobr>#}
{# <br>#}
{# <nobr><b>График работы:</b> пн-вс 12:00 - 24:00</nobr>#}
{# <br>#}
{# <nobr><b>Телефоны кафе:</b> +375 44 77 321 77</nobr>#}
</div>
</div>
<div style="text-align: center;margin-top:5px">
{# <a href="https://baldenini.by/event/dostavka-edy" style="text-decoration: none;">#}
{# <div style="color: #311A12;#}
{# padding: 10px;#}
{# margin: 5px 10px 0 10px;#}
{# border: 2px solid #311A12;#}
{# border-radius: 5px;#}
{# font-size: 20px;#}
{# display: inline-block;#}
{# font-weight: 700;#}
{# text-transform: uppercase;">О ДОСТАВКЕ#}
{# </div>#}
{# </a>#}
{# <a href="https://baldenini.by/page/baldenini-cafe-o-nas" style="text-decoration: none;">#}
{# <div style="color: #311A12;#}
{# padding: 10px;#}
{# margin: 5px 10px 0 10px;#}
{# border: 2px solid #311A12;#}
{# border-radius: 5px;#}
{# font-size: 20px;#}
{# display: inline-block;#}
{# font-weight: 700;#}
{# text-transform: uppercase;">О BALDENINI CAFE#}
{# </div>#}
{# </a>#}
</div>
</div>
</div>

View File

@@ -44,7 +44,7 @@
<div class="news_item_static">
<div class="news_img"><img src="{{ MEDIA_URL }} {{ page.picture }}" /></div>
<div class="news_img"><img src="{{ MEDIA_URL }}{{ page.picture }}" /></div>
<div class="news_header">{{ page.name }}</div>
<div class="news_description">
{{ page.description|truncatechars:100 }}

View File

@@ -0,0 +1,9 @@
{% load static %}
<div class="not_found_routes show">
<div class="text-align-center fw-700 font-large c-txt-b2 m-a w-80 m-t-8p">
Упс... <span class="orange-text">Ничего не найдено</span>, попробуйте
изменить параметры поиска
</div>
<img class="boxes_not_fond_routes left" src="{% static "img/boxes_for_not_found_routes/b_1.svg" %}">
<img class="boxes_not_fond_routes right" src="{% static "img/boxes_for_not_found_routes/b_2.svg" %}">
</div>