dev #7
@@ -97,12 +97,14 @@ class Admin_User(UserAdmin):
|
||||
save_on_top = True
|
||||
|
||||
list_display = ['id', 'last_name', 'first_name', 'mailing_on', 'email', 'is_staff',
|
||||
'is_active']
|
||||
'is_active', 'date_joined', 'last_login']
|
||||
list_editable = ['is_staff', 'is_active']
|
||||
list_display_links = ['first_name', 'last_name', 'email']
|
||||
search_fields = ['first_name', 'last_name', 'email']
|
||||
|
||||
list_filter = ['user_profile__mailing_on', 'is_staff', 'is_active']
|
||||
readonly_fields = ['date_joined', 'last_login']
|
||||
|
||||
list_filter = ['user_profile__mailing_on', 'is_staff', 'is_active', 'date_joined', 'last_login']
|
||||
|
||||
inlines = (Admin_ProfileInline,)
|
||||
# actions = ['del_all_temp_users', ]
|
||||
|
||||
@@ -22,8 +22,11 @@ def test_code(request):
|
||||
|
||||
res = None
|
||||
|
||||
from SubscribesApp.reports import send_mail_for_user_subscribes_that_is_going_to_finish
|
||||
send_mail_for_user_subscribes_that_is_going_to_finish()
|
||||
from ReferenceDataApp.funcs import parse_data
|
||||
parse_data()
|
||||
|
||||
# from SubscribesApp.reports import send_mail_for_user_subscribes_that_is_going_to_finish
|
||||
# send_mail_for_user_subscribes_that_is_going_to_finish()
|
||||
|
||||
if res:
|
||||
if type(res) == str:
|
||||
|
||||
@@ -2,6 +2,7 @@ from django.contrib import admin
|
||||
from sets.admin import Admin_Trans_BaseModel
|
||||
from .models import *
|
||||
from modeltranslation.admin import TranslationAdmin
|
||||
from django.utils.translation import gettext as _
|
||||
|
||||
class Admin_Country(Admin_Trans_BaseModel):
|
||||
fieldsets = [
|
||||
@@ -10,11 +11,20 @@ class Admin_Country(Admin_Trans_BaseModel):
|
||||
'fields': [
|
||||
'name', 'enable', 'short_code', 'code',
|
||||
]
|
||||
}]
|
||||
}],
|
||||
[_('Дополнительно'), {
|
||||
'classes': ['wide', 'collapse'],
|
||||
'fields': (
|
||||
'timezone',
|
||||
'geo_lat', 'geo_lon',
|
||||
'json_data',
|
||||
)
|
||||
}],
|
||||
]
|
||||
|
||||
list_display = [
|
||||
'id', 'name', 'name_en', 'name_ru',
|
||||
'timezone',
|
||||
'short_code', 'code',
|
||||
'enable', 'area_id', 'parsing_finished_DT',
|
||||
'order', 'modifiedDT', 'createDT']
|
||||
@@ -22,18 +32,35 @@ class Admin_Country(Admin_Trans_BaseModel):
|
||||
admin.site.register(Country, Admin_Country)
|
||||
|
||||
class Admin_City(Admin_Trans_BaseModel):
|
||||
|
||||
def cur_dt(self, obj):
|
||||
if obj.timezone:
|
||||
return obj.get_current_datetime()
|
||||
else:
|
||||
return '-'
|
||||
cur_dt.short_description = 'текущее время'
|
||||
|
||||
fieldsets = [
|
||||
[None, {
|
||||
'classes': ['wide'],
|
||||
'fields': [
|
||||
'name', 'enable', 'country',
|
||||
]
|
||||
}]
|
||||
}],
|
||||
[_('Дополнительно'), {
|
||||
'classes': ['wide', 'collapse'],
|
||||
'fields': (
|
||||
'timezone',
|
||||
'geo_lat', 'geo_lon',
|
||||
'json_data',
|
||||
)
|
||||
}],
|
||||
]
|
||||
|
||||
list_display = [
|
||||
'id', 'name', 'name_en', 'name_ru',
|
||||
'country',
|
||||
'timezone', 'cur_dt',
|
||||
'enable', 'area_id', 'parsing_finished_DT',
|
||||
'order', 'modifiedDT', 'createDT']
|
||||
search_fields = ['id', 'name_en', 'name_ru', 'country__name']
|
||||
@@ -50,12 +77,21 @@ class Admin_Airport(Admin_Trans_BaseModel):
|
||||
'international_name',
|
||||
# 'area_id'
|
||||
]
|
||||
}]
|
||||
}],
|
||||
[_('Дополнительно'), {
|
||||
'classes': ['wide', 'collapse'],
|
||||
'fields': (
|
||||
'timezone',
|
||||
'geo_lat', 'geo_lon',
|
||||
'json_data',
|
||||
)
|
||||
}],
|
||||
]
|
||||
|
||||
list_display = [
|
||||
'id', 'name', 'name_en', 'name_ru',
|
||||
'city', 'iata_code', 'icao_code',
|
||||
'timezone',
|
||||
'international_name',
|
||||
'enable', 'area_id', 'parsing_finished_DT',
|
||||
'order', 'modifiedDT', 'createDT']
|
||||
|
||||
@@ -3,15 +3,15 @@ from .models import *
|
||||
import hashlib, json
|
||||
from datetime import datetime, timedelta
|
||||
from django.db.models import Q
|
||||
from timezonefinder import TimezoneFinder
|
||||
|
||||
tzf = TimezoneFinder()
|
||||
|
||||
def search_cities_in_db(search_str):
|
||||
|
||||
|
||||
|
||||
Q_obj = Q(name_en__icontains=search_str) | Q(name_ru__icontains=search_str) | \
|
||||
Q(country__name_en__icontains=search_str) | Q(country__name_ru__icontains=search_str)
|
||||
res_data = City.objects.filter(Q_obj).values('id', 'name', 'country__name')
|
||||
res_data = City.objects.filter(Q_obj).values('id', 'name', 'country__name', 'timezone')
|
||||
return list(res_data)
|
||||
|
||||
def search_airports_in_db(search_str):
|
||||
@@ -20,7 +20,10 @@ def search_airports_in_db(search_str):
|
||||
Q(city__name_en__icontains=search_str) | Q(city__name_ru__icontains=search_str) | \
|
||||
Q(city__country__name_en__icontains=search_str) | \
|
||||
Q(city__country__name_ru__icontains=search_str)
|
||||
res_data = Airport.objects.filter(Q_obj).values('id', 'name', 'iata_code', 'city__name', 'city__country__name')
|
||||
res_data = Airport.objects.filter(Q_obj).values(
|
||||
'id', 'name', 'iata_code',
|
||||
'city__name', 'city__country__name', 'city__timezone'
|
||||
)
|
||||
return list(res_data)
|
||||
|
||||
|
||||
@@ -57,25 +60,39 @@ def create_airports_by_airportsList(airportsList, city=None):
|
||||
if airport_Dict['iata']:
|
||||
kwargs.update({'iata_code': airport_Dict['iata']})
|
||||
airport = Airport.objects.get(**kwargs)
|
||||
if airport.geo_lat and airport.geo_lon and not airport.timezone:
|
||||
airport.timezone = tzf.timezone_at(
|
||||
lng=float(airport.geo_lon), lat=float(airport.geo_lat))
|
||||
airport.modifiedDT = datetime.now()
|
||||
airport.save()
|
||||
print(f'airport {airport.international_name} - {airport.timezone}')
|
||||
except Airport.DoesNotExist:
|
||||
print(f' - - {airport_Dict["iata"]} не найден в БД > добавляем')
|
||||
except Exception as e:
|
||||
print(f'error = {str(e)}')
|
||||
|
||||
if not airport:
|
||||
geo_lat = float(airport_Dict['@lat'])
|
||||
geo_lon = float(airport_Dict['@lon'])
|
||||
tz = tzf.timezone_at(lng=geo_lon, lat=geo_lat)
|
||||
print(f'airport {airport_Dict["int_name"]} - {tz}')
|
||||
|
||||
airport_kwargs = {
|
||||
'city': city,
|
||||
|
||||
# 'name_ru': airport_Dict['name:ru'],
|
||||
# 'name_en': airport_Dict['name:en'],
|
||||
'timezone': tz,
|
||||
|
||||
'geo_lat': str(airport_Dict['@lat']),
|
||||
'geo_lon': str(airport_Dict['@lon']),
|
||||
'geo_lat': str(geo_lat),
|
||||
'geo_lon': str(geo_lon),
|
||||
|
||||
'international_name': airport_Dict['int_name'],
|
||||
|
||||
'iata_code': airport_Dict['iata'],
|
||||
'icao_code': airport_Dict['icao'],
|
||||
|
||||
'modifiedDT': datetime.now(),
|
||||
}
|
||||
|
||||
if airport_Dict['name:ru']:
|
||||
@@ -119,7 +136,10 @@ def parse_data():
|
||||
|
||||
country = Country.objects.get(**kwargs)
|
||||
|
||||
if country.parsing_finished_DT and (datetime.now() - country.parsing_finished_DT).days < 30:
|
||||
if (country.parsing_finished_DT
|
||||
and (datetime.now() - country.parsing_finished_DT).days < 30
|
||||
and country.timezone
|
||||
):
|
||||
print(f' + {country.name} - существует в БД, не требует парсинга')
|
||||
continue
|
||||
|
||||
@@ -194,6 +214,12 @@ def parse_data():
|
||||
else:
|
||||
print(f'error = {str(e)}')
|
||||
|
||||
geo_lat = float(city_Dict['@lat'])
|
||||
geo_lon = float(city_Dict['@lon'])
|
||||
tz = tzf.timezone_at(lng=geo_lon, lat=geo_lat)
|
||||
if not city or not city.timezone:
|
||||
print(f'city {city_Dict["name:en"]} - {tz}')
|
||||
|
||||
# собираем данные
|
||||
city_kwargs = {
|
||||
'country': country,
|
||||
@@ -201,8 +227,11 @@ def parse_data():
|
||||
# 'name_ru': city_Dict['name:ru'],
|
||||
# 'name_en': city_Dict['name:en'],
|
||||
|
||||
'geo_lat': str(city_Dict['@lat']),
|
||||
'geo_lon': str(city_Dict['@lon']),
|
||||
'timezone': tz,
|
||||
|
||||
'geo_lat': str(geo_lat),
|
||||
'geo_lon': str(geo_lon),
|
||||
|
||||
}
|
||||
|
||||
if city_Dict['name:ru']:
|
||||
@@ -232,8 +261,12 @@ def parse_data():
|
||||
hash_data = hashlib.md5(json.dumps(country_Dict, sort_keys=True, ensure_ascii=True).encode('utf-8')).hexdigest()
|
||||
country.add_node_to_json_data({'hash': hash_data})
|
||||
|
||||
if not country.timezone:
|
||||
country.timezone = tzf.timezone_at(lng=float(country.geo_lon), lat=float(country.geo_lat))
|
||||
print(f'country {country.name} - {country.timezone}')
|
||||
|
||||
if 'parsing_status' in country_Dict and country_Dict['parsing_status'] == 'finished':
|
||||
country.parsing_finished_DT = datetime.now()
|
||||
country.save(update_fields=['parsing_finished_DT'])
|
||||
country.save()
|
||||
|
||||
return True
|
||||
@@ -56,10 +56,12 @@ def get_address_point_ajax(request):
|
||||
item['fullname'] = f'{item["iata_code"]} - {item["name"]}'
|
||||
item['city_name'] = item['city__name']
|
||||
item['country_name'] = item['city__country__name']
|
||||
item['city_DT'] = datetime.now(tz=pytz.timezone(item['city__timezone']))
|
||||
else:
|
||||
item['city_name'] = item['name']
|
||||
item['country_name'] = item['country__name']
|
||||
item['fullname'] = f'{item["city_name"]} / {item["country_name"]}'
|
||||
item['city_DT'] = datetime.now(tz=pytz.timezone(item['timezone']))
|
||||
html = f"{html}{render_to_string('widgets/w_ac_input_address_point.html', item)}"
|
||||
i += 1
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
# Generated by Django 4.2.2 on 2024-07-12 17:23
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('ReferenceDataApp', '0005_remove_airport_parsing_finished_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='airport',
|
||||
name='timezone',
|
||||
field=models.CharField(blank=True, max_length=250, null=True, verbose_name='Часовая зона'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='city',
|
||||
name='timezone',
|
||||
field=models.CharField(blank=True, max_length=250, null=True, verbose_name='Часовая зона'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='country',
|
||||
name='timezone',
|
||||
field=models.CharField(blank=True, max_length=250, null=True, verbose_name='Часовая зона'),
|
||||
),
|
||||
]
|
||||
@@ -1,6 +1,8 @@
|
||||
import pytz
|
||||
from django.db import models
|
||||
from BaseModels.base_models import BaseModel
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from datetime import datetime
|
||||
|
||||
class Country(BaseModel):
|
||||
international_name = models.CharField(max_length=250, verbose_name=_('Международное название'), blank=True, null=True)
|
||||
@@ -15,6 +17,8 @@ class Country(BaseModel):
|
||||
geo_lat = models.CharField(max_length=20, verbose_name=_('GPS широта'), blank=True, null=True)
|
||||
geo_lon = models.CharField(max_length=20, verbose_name=_('GPS долгота'), blank=True, null=True)
|
||||
|
||||
timezone = models.CharField(max_length=250, verbose_name=_('Часовая зона'), blank=True, null=True)
|
||||
|
||||
area_id = models.BigIntegerField(blank=True, null=True)
|
||||
|
||||
parsing_finished_DT = models.DateTimeField(verbose_name=_('Дата и время завершения парсинга'), blank=True, null=True)
|
||||
@@ -46,6 +50,8 @@ class City(BaseModel):
|
||||
|
||||
area_id = models.BigIntegerField(blank=True, null=True)
|
||||
|
||||
timezone = models.CharField(max_length=250, verbose_name=_('Часовая зона'), blank=True, null=True)
|
||||
|
||||
parsing_finished_DT = models.DateTimeField(verbose_name=_('Дата и время завершения парсинга'), blank=True, null=True)
|
||||
|
||||
def __str__(self):
|
||||
@@ -54,6 +60,17 @@ class City(BaseModel):
|
||||
else:
|
||||
return f'{self.id}'
|
||||
|
||||
def get_n_save_timezone(self):
|
||||
from ReferenceDataApp.funcs import tzf
|
||||
self.timezone = tzf.timezone_at(lng=float(self.geo_lon), lat=float(self.geo_lat))
|
||||
self.save(update_fields=['timezone'])
|
||||
return self.timezone
|
||||
|
||||
def get_current_datetime(self):
|
||||
if not self.timezone:
|
||||
self.timezone = self.get_n_save_timezone()
|
||||
return datetime.now(tz=pytz.timezone(self.timezone))
|
||||
|
||||
def get_country_n_city_str(self):
|
||||
country = _('Неизвестно')
|
||||
city = self.name
|
||||
@@ -83,6 +100,8 @@ class Airport(BaseModel):
|
||||
geo_lat = models.CharField(max_length=20, verbose_name=_('GPS широта'), blank=True, null=True)
|
||||
geo_lon = models.CharField(max_length=20, verbose_name=_('GPS долгота'), blank=True, null=True)
|
||||
|
||||
timezone = models.CharField(max_length=250, verbose_name=_('Часовая зона'), blank=True, null=True)
|
||||
|
||||
area_id = models.BigIntegerField(blank=True, null=True)
|
||||
|
||||
parsing_finished_DT = models.DateTimeField(verbose_name=_('Дата и время завершения парсинга'), blank=True, null=True)
|
||||
|
||||
@@ -13,7 +13,9 @@ class Admin_Route(Admin_Trans_BaseModel):
|
||||
list_display_links = ['id']
|
||||
|
||||
list_filter = ['owner_type', 'type_transport', 'cargo_type', 'from_place', 'arrival_DT', 'modifiedDT', 'createDT']
|
||||
search_fields = ['owner__first_name', 'owner__last_name']
|
||||
search_fields = [
|
||||
'owner__first_name', 'owner__last_name', 'from_city__name', 'to_city__name'
|
||||
]
|
||||
raw_id_fields = ['from_city', 'to_city']
|
||||
|
||||
admin.site.register(Route,Admin_Route)
|
||||
|
||||
@@ -258,6 +258,7 @@ def find_routes_ajax(request):
|
||||
if 'errors' in routes_Dict:
|
||||
return JsonResponse(routes_Dict, status=400)
|
||||
|
||||
|
||||
if routes_Dict['routes']:
|
||||
html = render_to_string('blocks/b_search_routes.html', routes_Dict, request=request)
|
||||
else:
|
||||
|
||||
@@ -59,6 +59,8 @@ def route_search_results_View(request):
|
||||
|
||||
t = loader.get_template('pages/p_results_find_route.html')
|
||||
return get_inter_http_response(t, Dict, request)
|
||||
# return HttpResponse(t.render(Dict, request))
|
||||
|
||||
except Exception as e:
|
||||
msg = f'!!! --- route_search_results_View Exception {str(e)}'
|
||||
print(msg)
|
||||
raise Http404
|
||||
|
||||
@@ -9,14 +9,15 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 12:00+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"PO-Revision-Date: 2024-07-25 00:59+0300\n"
|
||||
"Last-Translator: Саня Шумский <sa@a3-global.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Translated-Using: django-rosetta 0.10.0\n"
|
||||
|
||||
#: ArticlesApp/admin.py:71 ArticlesApp/admin.py:117 ArticlesApp/models.py:37
|
||||
msgid "Статья"
|
||||
@@ -334,11 +335,11 @@ msgstr "FAQ Title"
|
||||
|
||||
#: BaseModels/validators/form_field_validators.py:6
|
||||
msgid ""
|
||||
"Некорректные символы в номере, введите номер в международном формате с кодом "
|
||||
"страны"
|
||||
"Некорректные символы в номере, введите номер в международном формате с кодом"
|
||||
" страны"
|
||||
msgstr ""
|
||||
"Incorrect characters in the number, enter the number in international format "
|
||||
"with the country code"
|
||||
"Incorrect characters in the number, enter the number in international format"
|
||||
" with the country code"
|
||||
|
||||
#: BillingApp/models.py:10 SubscribesApp/models.py:51
|
||||
#: SubscribesApp/models.py:61
|
||||
@@ -882,17 +883,13 @@ msgstr "Show more"
|
||||
#: templates/blocks/b_finded_routes.html:12
|
||||
msgid ""
|
||||
"\n"
|
||||
" Упс... <span class=\"orange-text\">Ничего не "
|
||||
"найдено</span>, попробуйте\n"
|
||||
" изменить параметры поиска <span class=\"orange-text"
|
||||
"\"> или создайте своё собственное объявление </span>\n"
|
||||
" Упс... <span class=\"orange-text\">Ничего не найдено</span>, попробуйте\n"
|
||||
" изменить параметры поиска <span class=\"orange-text\"> или создайте своё собственное объявление </span>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" Oops... <span class=\"orange-text\">Nothing was "
|
||||
"found</span>, try\n"
|
||||
" to change the search parameters <span class=\"orange-"
|
||||
"text\"> or create your own ad </span>\n"
|
||||
" Oops... <span class=\"orange-text\">Nothing was found</span>, try\n"
|
||||
" to change the search parameters <span class=\"orange-text\"> or create your own ad </span>\n"
|
||||
" "
|
||||
|
||||
#: templates/blocks/b_finded_routes.html:29
|
||||
@@ -1317,8 +1314,7 @@ msgid "Мои обращения:"
|
||||
msgstr "My appeals:"
|
||||
|
||||
#: templates/blocks/static_pages_blocks/b_about_service.html:4
|
||||
msgid ""
|
||||
"Отправляй <span class=\"color_title\">посылку</span> в любую точку мира!"
|
||||
msgid "Отправляй <span class=\"color_title\">посылку</span> в любую точку мира!"
|
||||
msgstr ""
|
||||
"Send your <span class=\"color_title\">parcel</span> anywhere in the world!"
|
||||
|
||||
@@ -1359,10 +1355,10 @@ msgid ""
|
||||
"найти перевозчика, который будет готов взять Вашу посылку и доставить в "
|
||||
"указанное место наземным или авиатранспортом."
|
||||
msgstr ""
|
||||
"You can place an ad for the transportation of a parcel and carriers from all "
|
||||
"over the world will respond to your ad or using the search on the website to "
|
||||
"find a carrier who will be ready to take your parcel and deliver it to the "
|
||||
"specified place by land or air transport."
|
||||
"You can place an ad for the transportation of a parcel and carriers from all"
|
||||
" over the world will respond to your ad or using the search on the website "
|
||||
"to find a carrier who will be ready to take your parcel and deliver it to "
|
||||
"the specified place by land or air transport."
|
||||
|
||||
#: templates/blocks/static_pages_blocks/b_about_service.html:27
|
||||
#: templates/blocks/static_pages_blocks/b_mover_search.html:56
|
||||
@@ -1409,8 +1405,8 @@ msgstr "Do you have a question? Send us a message"
|
||||
#: templates/blocks/static_pages_blocks/b_contacts.html:12
|
||||
#: templates/blocks/static_pages_blocks/b_customer_service.html:11
|
||||
msgid ""
|
||||
"Пожалуйста опишите Ваш вопрос максимально подробно, а также укажите Ваш e-"
|
||||
"mail для обратной связи."
|
||||
"Пожалуйста опишите Ваш вопрос максимально подробно, а также укажите Ваш "
|
||||
"e-mail для обратной связи."
|
||||
msgstr ""
|
||||
"Please describe your question in details and specify your e-mail for "
|
||||
"feedback."
|
||||
@@ -1425,8 +1421,8 @@ msgstr "Name"
|
||||
|
||||
#: templates/blocks/static_pages_blocks/b_advertisement.html:9
|
||||
msgid ""
|
||||
"Услуги по рекламе и сотрудничеству с <span class=\"color_title\">TripWB</"
|
||||
"span>"
|
||||
"Услуги по рекламе и сотрудничеству с <span "
|
||||
"class=\"color_title\">TripWB</span>"
|
||||
msgstr ""
|
||||
|
||||
#: templates/blocks/static_pages_blocks/b_advertisement.html:13
|
||||
@@ -1506,14 +1502,14 @@ msgstr "We are always <span class=\"color_title\">on site</span>!"
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Отправляй <span class=\"color_title\">посылку</span> в любую точку мира!"
|
||||
msgid ""
|
||||
"Отправить <span class=\"color_title\">посылку</span> TripWB по всему миру"
|
||||
msgid "Отправить <span class=\"color_title\">посылку</span> TripWB по всему миру"
|
||||
msgstr ""
|
||||
"Send your <span class=\"color_title\">parcel</span> anywhere in the world!"
|
||||
|
||||
#: templates/blocks/static_pages_blocks/b_mover_search.html:14
|
||||
#, fuzzy
|
||||
#| msgid "Станьте <span class=\"color_title\">партнером</span> Trip With Bonus"
|
||||
#| msgid ""
|
||||
#| "Станьте <span class=\"color_title\">партнером</span> Trip With Bonus"
|
||||
msgid "Перевезти <span class=\"color_title\">посылку</span> TripWB"
|
||||
msgstr "Become a <span class=\"color_title\">partner</span> Trip With Bonus"
|
||||
|
||||
@@ -1666,8 +1662,8 @@ msgstr ""
|
||||
|
||||
#: templates/blocks/static_pages_blocks/b_send_parcel.html:27
|
||||
msgid ""
|
||||
"В отобразившемся списке выберите подходящего отправителя и посылку, откройте "
|
||||
"контакты и свяжитесь удобным способом. Если не нашли подходящего "
|
||||
"В отобразившемся списке выберите подходящего отправителя и посылку, откройте"
|
||||
" контакты и свяжитесь удобным способом. Если не нашли подходящего "
|
||||
"отправителя с посылкой, разместите объявление о возможности перевезти "
|
||||
"посылку и отправители Вас сами найдут"
|
||||
msgstr ""
|
||||
@@ -1679,7 +1675,8 @@ msgstr ""
|
||||
#: templates/blocks/static_pages_blocks/b_send_parcel.html:33
|
||||
msgid ""
|
||||
"Обсудите с отправителем все условия: время, место и прочие детали. Готово! "
|
||||
"Доставьте посылку из пункта А в пункт Б и получите благодарность отправителя!"
|
||||
"Доставьте посылку из пункта А в пункт Б и получите благодарность "
|
||||
"отправителя!"
|
||||
msgstr ""
|
||||
"Discuss all the conditions with the sender: time, place and other details. "
|
||||
"Ready! Deliver the parcel from point A to point B and receive the sender's "
|
||||
@@ -1821,14 +1818,16 @@ msgstr ""
|
||||
|
||||
#: templates/mail/m_confirm_email.html:24
|
||||
msgid ""
|
||||
"Если это сделали Вы, нажмите на ссылку ниже и пройдите процедуру верификации."
|
||||
"Если это сделали Вы, нажмите на ссылку ниже и пройдите процедуру "
|
||||
"верификации."
|
||||
msgstr ""
|
||||
|
||||
#: templates/mail/m_confirm_email.html:26
|
||||
msgid "Если это письмо ошибочно попало к Вам, просто проигнорируйте его."
|
||||
msgstr ""
|
||||
|
||||
#: templates/mail/m_confirm_email.html:29 templates/mail/m_registration.html:55
|
||||
#: templates/mail/m_confirm_email.html:29
|
||||
#: templates/mail/m_registration.html:55
|
||||
msgid ""
|
||||
"\n"
|
||||
" С уважением,<br>\n"
|
||||
@@ -1881,18 +1880,14 @@ msgstr "to this link and use your login credentials"
|
||||
#: templates/mail/m_found_matched_routes.html:21
|
||||
#| msgid ""
|
||||
#| "\n"
|
||||
#| " Если у вас возникнут вопросы или вам потребуется "
|
||||
#| "помощь, наша служба поддержки всегда готова помочь. Свяжитесь с нами по "
|
||||
#| "адресу <a href=\"mailto:support@tripwb.com\">support@tripwb.com</a>\n"
|
||||
#| " Если у вас возникнут вопросы или вам потребуется помощь, наша служба поддержки всегда готова помочь. Свяжитесь с нами по адресу <a href=\"mailto:support@tripwb.com\">support@tripwb.com</a>\n"
|
||||
#| " "
|
||||
msgid ""
|
||||
"Если у вас возникнут вопросы или вам потребуется помощь, наша служба "
|
||||
"поддержки всегда готова помочь. Свяжитесь с нами по адресу"
|
||||
msgstr ""
|
||||
"\n"
|
||||
" If you have any questions or need help, our support team "
|
||||
"is always ready to help. Contact us at <a href=\"mailto:support@tripwb.com"
|
||||
"\">support@tripwb.com</a>\n"
|
||||
" If you have any questions or need help, our support team is always ready to help. Contact us at <a href=\"mailto:support@tripwb.com\">support@tripwb.com</a>\n"
|
||||
" "
|
||||
|
||||
#: templates/mail/m_found_matched_routes.html:22
|
||||
@@ -1951,8 +1946,8 @@ msgid ""
|
||||
"На главной странице нашего сайта Вы можете указать критерии поиска "
|
||||
"перевозчика посылки или отправителя и напрямую связаться с исполнителем."
|
||||
msgstr ""
|
||||
"On the main page of our website, you can specify the search criteria for the "
|
||||
"parcel carrier or sender and contact the contractor directly."
|
||||
"On the main page of our website, you can specify the search criteria for the"
|
||||
" parcel carrier or sender and contact the contractor directly."
|
||||
|
||||
#: templates/mail/m_registration.html:34
|
||||
msgid ""
|
||||
@@ -1967,27 +1962,21 @@ msgstr ""
|
||||
#: templates/mail/m_registration.html:40
|
||||
msgid ""
|
||||
"\n"
|
||||
" Чтобы начать, просто перейдите на <a href=\"https://"
|
||||
"tripwb.com\">сайт</a> и используйте свои учетные данные для входа.\n"
|
||||
" Чтобы начать, просто перейдите на <a href=\"https://tripwb.com\">сайт</a> и используйте свои учетные данные для входа.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" To get started, just go to <a href=\"https://tripwb.com"
|
||||
"\">website</a> and use your login credentials.\n"
|
||||
" To get started, just go to <a href=\"https://tripwb.com\">website</a> and use your login credentials.\n"
|
||||
" "
|
||||
|
||||
#: templates/mail/m_registration.html:46
|
||||
msgid ""
|
||||
"\n"
|
||||
" Если у вас возникнут вопросы или вам потребуется помощь, "
|
||||
"наша служба поддержки всегда готова помочь. Свяжитесь с нами по адресу <a "
|
||||
"href=\"mailto:support@tripwb.com\">support@tripwb.com</a>\n"
|
||||
" Если у вас возникнут вопросы или вам потребуется помощь, наша служба поддержки всегда готова помочь. Свяжитесь с нами по адресу <a href=\"mailto:support@tripwb.com\">support@tripwb.com</a>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" If you have any questions or need help, our support team "
|
||||
"is always ready to help. Contact us at <a href=\"mailto:support@tripwb.com"
|
||||
"\">support@tripwb.com</a>\n"
|
||||
" If you have any questions or need help, our support team is always ready to help. Contact us at <a href=\"mailto:support@tripwb.com\">support@tripwb.com</a>\n"
|
||||
" "
|
||||
|
||||
#: templates/mail/m_user_subscribes_that_is_going_to_finish.html:14
|
||||
@@ -2007,8 +1996,9 @@ msgstr "expires"
|
||||
msgid ""
|
||||
"Вы можете продлить подписку через свой личный кабинет. Пройдите по ссылке "
|
||||
"ниже для входа на сайт."
|
||||
msgstr "You can renew your subscription through your personal cabinet. Follow the link "
|
||||
" link below to access the site."
|
||||
msgstr ""
|
||||
"You can renew your subscription through your personal cabinet. Follow the "
|
||||
"link link below to access the site."
|
||||
|
||||
#: templates/mail/m_user_subscribes_that_is_going_to_finish.html:21
|
||||
#| msgid "Моя подписка"
|
||||
@@ -2026,9 +2016,11 @@ msgstr "TripWB News"
|
||||
|
||||
#: templates/pages/p_main.html:18
|
||||
msgid ""
|
||||
"Сервис по доставке и перевозке посылок <span class=\"color_title\">TripWB</"
|
||||
"span>"
|
||||
msgstr "Service for delivery and transportation of parcels <span class=\"color_title\">TripWB</span>."
|
||||
"Сервис по доставке и перевозке посылок <span "
|
||||
"class=\"color_title\">TripWB</span>"
|
||||
msgstr ""
|
||||
"Service for delivery and transportation of parcels <span "
|
||||
"class=\"color_title\">TripWB</span>."
|
||||
|
||||
#: templates/pages/p_main.html:23
|
||||
msgid "Сервис, который позволяет передавать посылки с путешественниками"
|
||||
@@ -2180,8 +2172,8 @@ msgid ""
|
||||
"Работает система оповещения ✓ Большой выбор отправителей посылок ➡️ "
|
||||
"Регистрируйтесь"
|
||||
msgstr ""
|
||||
"Section for parcel carriers to all countries ✓ Convenient personal account ✓ "
|
||||
"Notification system in operation ✓ Wide selection of parcel senders ➡️ "
|
||||
"Section for parcel carriers to all countries ✓ Convenient personal account ✓"
|
||||
" Notification system in operation ✓ Wide selection of parcel senders ➡️ "
|
||||
"Register now"
|
||||
|
||||
#: templates/small_INCLUDES/carrier_card/inf_about_moving.html:6
|
||||
@@ -2279,7 +2271,7 @@ msgstr "sender"
|
||||
#: templates/widgets/routes/w_my_route.html:156
|
||||
#| msgid "Изменить профиль"
|
||||
msgid "Увеличить просмотры"
|
||||
msgstr "Change profile"
|
||||
msgstr "Boost views"
|
||||
|
||||
#: templates/widgets/routes/w_my_route.html:167
|
||||
msgid "Редактировать"
|
||||
@@ -2329,21 +2321,18 @@ msgstr "Unassembled tickets"
|
||||
#~ msgid "Автопродление тарифного плана"
|
||||
#~ msgstr "Auto-renewal of the tariff plan"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Путешествуй по миру и <span class=\"color_title\">перевози</span> посылки!"
|
||||
#~ msgstr ""
|
||||
#~ "Travel the world and <span class=\"color_title\">deliver</span> parcels!"
|
||||
#~ msgid "Путешествуй по миру и <span class=\"color_title\">перевози</span> посылки!"
|
||||
#~ msgstr "Travel the world and <span class=\"color_title\">deliver</span> parcels!"
|
||||
|
||||
#~ msgid "Оформи <span class=\"color_title\">подписку</span> сейчас и получи"
|
||||
#~ msgstr ""
|
||||
#~ "Create a <span class=\"color_title\">subscription</span> now and get it"
|
||||
#~ msgstr "Create a <span class=\"color_title\">subscription</span> now and get it"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "<span class=\"color_title\">1 день </span>пользования сервисом <span "
|
||||
#~ "class=\"color_title\">в подарок!</span>"
|
||||
#~ msgstr ""
|
||||
#~ "<span class=\"color_title\">1 day </span>using the service <span class="
|
||||
#~ "\"color_title\">for free!</span>"
|
||||
#~ "<span class=\"color_title\">1 day </span>using the service <span "
|
||||
#~ "class=\"color_title\">for free!</span>"
|
||||
|
||||
#~ msgid "Получить"
|
||||
#~ msgstr "Receive"
|
||||
|
||||
@@ -16,4 +16,5 @@ pytz==2024.1
|
||||
requests-pkcs12==1.24
|
||||
#django-tz-detect==0.4.0
|
||||
django-rosetta==0.10.0
|
||||
timezonefinder==6.5.2
|
||||
|
||||
|
||||
@@ -1510,6 +1510,10 @@
|
||||
width: 153px;
|
||||
}
|
||||
|
||||
.popup_content{
|
||||
width: 41%;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media (max-width: 950px){
|
||||
@@ -1554,6 +1558,9 @@
|
||||
.pag_news_item_text{
|
||||
width: unset;
|
||||
}
|
||||
.popup_content{
|
||||
width: 52%;
|
||||
}
|
||||
}
|
||||
@media (max-width: 850px){
|
||||
|
||||
@@ -1687,6 +1694,9 @@
|
||||
.marker_messages_mobile.show{
|
||||
display: block;
|
||||
}
|
||||
.popup_content>.confirm_profile_btn{
|
||||
width: 90%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 828px){
|
||||
@@ -1844,6 +1854,9 @@
|
||||
.inf_carrier_icon{
|
||||
/*width: 3%;*/
|
||||
}
|
||||
.popup_content{
|
||||
width: 70%;
|
||||
}
|
||||
}
|
||||
@media (max-width: 687px){
|
||||
/*.to_address_point_txt.find_route {*/
|
||||
|
||||
@@ -3008,6 +3008,8 @@ a.open_inf_carrier{
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.cookie_block.show{
|
||||
display: block;
|
||||
}
|
||||
@@ -3034,4 +3036,64 @@ a.open_inf_carrier{
|
||||
height: 25px;
|
||||
width: 95px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/*popup*/
|
||||
.popup_wrapper{
|
||||
display: none;
|
||||
position: fixed; /* Используйте fixed, чтобы попап оставался на месте при прокрутке */
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(0, 0, 0, 0.5); /* Полупрозрачный фон */
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
.popup_wrapper.show{
|
||||
display: flex;
|
||||
}
|
||||
.popup_content{
|
||||
position: relative;
|
||||
width: 38%;
|
||||
height: fit-content;
|
||||
background: #FFFFFF;
|
||||
border-radius: 15px;
|
||||
text-align: center;
|
||||
padding: 28px;
|
||||
font-family: Inter;
|
||||
|
||||
}
|
||||
.popup_cross{
|
||||
position: absolute;
|
||||
right: 5%;
|
||||
cursor: pointer;
|
||||
}
|
||||
.popup_img>img{
|
||||
background: #E1E1E1;
|
||||
border-radius: 39px;
|
||||
padding: 5px;
|
||||
}
|
||||
.popup_title{
|
||||
font-weight: 700;
|
||||
font-size: 34px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.popup_text{
|
||||
line-height: 30px;
|
||||
font-size: 20px;
|
||||
margin-top: 10px;
|
||||
color: #6F6C90;
|
||||
}
|
||||
.popup_content>.confirm_profile_btn{
|
||||
width: 62%;
|
||||
}
|
||||
#poup_text_bold{
|
||||
font-weight: 700;
|
||||
color: #1d1e20;
|
||||
}
|
||||
#authenticated_img{
|
||||
display: none;
|
||||
}
|
||||
9
static/img/svg/close_gift.svg
Normal file
9
static/img/svg/close_gift.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 228 KiB |
4
static/img/svg/cross_popup.svg
Normal file
4
static/img/svg/cross_popup.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg width="19" height="18" viewBox="0 0 19 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M1.29785 17L17.2979 1" stroke="#170F49" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M17.2979 17L1.29785 1" stroke="#170F49" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 333 B |
9
static/img/svg/open_gift.svg
Normal file
9
static/img/svg/open_gift.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 984 KiB |
@@ -20,6 +20,7 @@ function SendLoginForm(el){
|
||||
data: formData,
|
||||
success: function(data){
|
||||
|
||||
|
||||
location.href = data.redirect_url//`/profile/page/dashboard/`
|
||||
window.sessionStorage.removeItem('mailingSubscribeRequired')
|
||||
window.sessionStorage.removeItem('email')
|
||||
@@ -29,6 +30,8 @@ function SendLoginForm(el){
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
},
|
||||
error: function (data, exception){
|
||||
document.querySelector(".login").innerHTML = data.responseJSON.html
|
||||
|
||||
@@ -1,28 +1,37 @@
|
||||
|
||||
function update_count_unread_messages (data) {
|
||||
let selected_btn = document.querySelector(".selected")
|
||||
let list_unrd = document.querySelectorAll(".unredmessages_value_text")
|
||||
let current_count = parseInt(list_unrd[i].innerHTML);
|
||||
if (selected_btn.dataset['ajaxUrl'] !== 'chats'){
|
||||
let list_unrd_parent = document.querySelectorAll(".icon_unread_messages")
|
||||
let i = 0
|
||||
function update_count_unread_messages(data) {
|
||||
let selected_btn = document.querySelector(".selected");
|
||||
let list_unrd = document.querySelectorAll(".unredmessages_value_text");
|
||||
let list_unrd_parent = document.querySelectorAll(".icon_unread_messages");
|
||||
|
||||
for (i;i < list_unrd.length;i++){
|
||||
|
||||
|
||||
|
||||
if(data.unread_msgs_count){
|
||||
list_unrd[i].innerHTML = (current_count + 1).toString();
|
||||
}
|
||||
|
||||
if(current_count === 0){
|
||||
list_unrd_parent[i].classList.toggle("showed")
|
||||
}
|
||||
if (selected_btn.dataset['ajaxUrl'] !== 'chats') {
|
||||
for (let i = 0; i < list_unrd.length; i++) {
|
||||
let current_count = parseInt(list_unrd[i].innerHTML);
|
||||
if (data.unread_msgs_count) {
|
||||
list_unrd[i].innerHTML = (current_count + 1).toString();
|
||||
}
|
||||
|
||||
if (current_count === 0) {
|
||||
list_unrd_parent[i].classList.toggle("showed");
|
||||
}
|
||||
}
|
||||
} else if (current_count === 0){
|
||||
list_unrd_parent[i].classList.toggle("showed")
|
||||
}
|
||||
} else if(data.unanswered_msgs_count || data.unanswered_msgs_count === 0){
|
||||
for (let i = 0; i < list_unrd.length; i++){
|
||||
list_unrd[i].innerHTML = data.unanswered_msgs_count.toString()
|
||||
if(data.unanswered_msgs_count === 0){
|
||||
list_unrd_parent[i].classList.remove("showed");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// else {
|
||||
// for (let i = 0; i < list_unrd.length; i++) {
|
||||
// let current_count = parseInt(list_unrd[i].innerHTML);
|
||||
// if (current_count === 0 || selected_btn.dataset['ajaxUrl'] !== 'chats') {
|
||||
// list_unrd_parent[i].classList.toggle("showed");
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
function play_required_beep (data,beep) {
|
||||
|
||||
@@ -227,6 +227,14 @@ function checkStateCookie () {
|
||||
if (!window.document.cookie.includes("allow_cookie=true")){
|
||||
document.querySelector(".cookie_block").classList.add("show")
|
||||
}
|
||||
if (!window.document.cookie.includes("popup_show=false")){
|
||||
setTimeout(() => {
|
||||
document.querySelector('.popup_wrapper').classList.add('show');
|
||||
}, 15000);
|
||||
}
|
||||
if(!window.document.cookie.includes("first_authorization=true") && window.document.getElementById('authenticated_img')){
|
||||
document.querySelector(".popup_wrapper").classList.add("show")
|
||||
}
|
||||
if (window.document.cookie.includes("twb_new_messages=true")){
|
||||
if (getInfoAboutUser('screen_width') < 800) {
|
||||
let marker_new_messages = document.querySelector(".marker_messages_mobile");
|
||||
@@ -258,12 +266,22 @@ function getCsrfCookie () {
|
||||
return csrf
|
||||
}
|
||||
|
||||
function setCokie (days,name,val) {
|
||||
function setCokie (days,name,val, url = null) {
|
||||
let date = new Date();
|
||||
// let days = 182;
|
||||
date.setTime(+ date + (days * 86400000));
|
||||
window.document.cookie = `${name}=${val}` + "; expires=" + date.toGMTString() + "; path=/";
|
||||
document.querySelector(".cookie_block").classList.remove("show")
|
||||
|
||||
if(name === 'allow_cookie' ){
|
||||
document.querySelector(".cookie_block").classList.remove("show")
|
||||
} else if(name === 'popup_show'){
|
||||
document.querySelector(".popup_wrapper").classList.remove("show")
|
||||
if(url){
|
||||
window.location.href = url}
|
||||
} else if (name === 'first_authorization'){
|
||||
document.querySelector(".popup_wrapper").classList.remove("show")
|
||||
}
|
||||
|
||||
// return value;
|
||||
}
|
||||
|
||||
|
||||
@@ -143,108 +143,75 @@ function init_arrival_DT (date=null,single=true,hour=true){
|
||||
|
||||
}
|
||||
|
||||
function init_departure_DT() {
|
||||
let place_1 = document.querySelector("#id_departure_DT");
|
||||
if (!place_1) return;
|
||||
|
||||
function init_departure_DT (){
|
||||
let hiddenTime = document.querySelector('.local_city_time').innerText;
|
||||
|
||||
let place_1 = document.querySelector("#id_departure_DT")
|
||||
let onl_param = ""
|
||||
if (window.location.href === "http://localhost:8016/ru/profile/page/create_route_for_mover/" || window.location.href === "http://localhost:8016/ru/profile/page/create_route_for_customer/"){
|
||||
onl_param = "singleDatePicker"
|
||||
}
|
||||
if (place_1) {
|
||||
let startDate = null;
|
||||
if(hiddenTime){
|
||||
if (window.location.href.includes("/ru/")) {
|
||||
|
||||
$(place_1).daterangepicker({
|
||||
"autoapply": true,
|
||||
"linkedCalendars": false,
|
||||
"singleDatePicker":true,
|
||||
"timePicker":true,
|
||||
"timePicker24Hour":true,
|
||||
"locale": changeLangForDateTimePicker(),
|
||||
},
|
||||
function(start, end, label) {
|
||||
// $('#displayRegervation').text('Registration date is: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD'));
|
||||
// $('#regervation')[0].dataset['departure_DT'] = start.format('YYYY-MM-DD');
|
||||
// $('#regervation')[0].dataset['arrival_DT'] = end.format('YYYY-MM-DD');
|
||||
$('#id_departure_DT').val(start.format('DD.MM.YYYY HH:mm'))
|
||||
startDate = moment(hiddenTime, "D MMMM YYYY г. HH:mm", 'ru');
|
||||
} else {
|
||||
|
||||
});
|
||||
|
||||
$(`${place_1.id} .drp-calendar.right`).hide();
|
||||
$(`${place_1.id} .drp-calendar.left`).addClass('single');
|
||||
|
||||
$(`${place_1.id} .calendar-table`).on('DOMSubtreeModified', function() {
|
||||
var el = $(`${place_1.id} .prev.available`).parent().children().last();
|
||||
if (el.hasClass('next available')) {
|
||||
return;
|
||||
}
|
||||
el.addClass('next available');
|
||||
el.append('<span></span>');
|
||||
});
|
||||
startDate = moment(hiddenTime, "MMMM D, YYYY, h:mm a", 'en');
|
||||
}
|
||||
} else {
|
||||
startDate = moment()
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$(place_1).daterangepicker({
|
||||
"autoapply": true,
|
||||
"linkedCalendars": false,
|
||||
"singleDatePicker": true,
|
||||
"timePicker": true,
|
||||
"timePicker24Hour": true,
|
||||
"minDate": startDate,
|
||||
"locale": changeLangForDateTimePicker(),
|
||||
}, function (start, end, label) {
|
||||
$('#id_departure_DT').val(start.format('DD.MM.YYYY HH:mm'));
|
||||
});
|
||||
|
||||
$(`${place_1.id} .drp-calendar.right`).hide();
|
||||
$(`${place_1.id} .drp-calendar.left`).addClass('single');
|
||||
|
||||
$(`${place_1.id} .calendar-table`).on('DOMSubtreeModified', function () {
|
||||
var el = $(`${place_1.id} .prev.available`).parent().children().last();
|
||||
if (el.hasClass('next available')) {
|
||||
return;
|
||||
}
|
||||
el.addClass('next available');
|
||||
el.append('<span></span>');
|
||||
});
|
||||
}
|
||||
|
||||
$(function () {
|
||||
let onl_param = ""
|
||||
if (window.location.href === "http://localhost:8016/ru/profile/page/create_route_for_mover/" || window.location.href === "http://localhost:8016/ru/profile/page/create_route_for_customer/"){
|
||||
onl_param = "singleDatePicker: true"
|
||||
}
|
||||
let place_1 = document.querySelector("#id_arrival_DT")
|
||||
if (place_1) {
|
||||
$(place_1).daterangepicker({
|
||||
"autoapply": true,
|
||||
"linkedCalendars": false,
|
||||
"locale": changeLangForDateTimePicker(),
|
||||
|
||||
},
|
||||
function (start, end, label) {
|
||||
|
||||
// $('#displayRegervation').text('Registration date is: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD'));
|
||||
$('#id_arrival_DT').val(start.format('DD.MM.YYYY') + " - " + end.format('DD.MM.YYYY'))
|
||||
});
|
||||
|
||||
$(`${place_1.id} .drp-calendar.right`).hide();
|
||||
$(`${place_1.id} .drp-calendar.left`).addClass('single');
|
||||
|
||||
$(`${place_1.id} .calendar-table`).on('DOMSubtreeModified', function () {
|
||||
var el = $(`${place_1.id} .prev.available`).parent().children().last();
|
||||
if (el.hasClass('next available')) {
|
||||
return;
|
||||
}
|
||||
el.addClass('next available');
|
||||
el.append('<span></span>');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$(function() {
|
||||
let place_1 = document.querySelector("#id_departure_DT")
|
||||
let onl_param = ""
|
||||
if (window.location.href === "http://localhost:8016/ru/profile/page/create_route_for_mover/" || window.location.href === "http://localhost:8016/ru/profile/page/create_route_for_customer/"){
|
||||
onl_param = "singleDatePicker: true"
|
||||
let onl_param = {};
|
||||
if (window.location.href.includes("/ru/profile/page/create_route_for_mover/") || window.location.href.includes("/ru/profile/page/create_route_for_customer/")) {
|
||||
onl_param = { singleDatePicker: true };
|
||||
}
|
||||
|
||||
let place_1 = document.querySelector("#id_arrival_DT");
|
||||
if (place_1) {
|
||||
$(place_1).daterangepicker({
|
||||
"autoapply": true,
|
||||
"linkedCalendars": false,
|
||||
"locale": changeLangForDateTimePicker(),
|
||||
onl_param
|
||||
},
|
||||
function(start, end, label) {
|
||||
// $('#displayRegervation').text('Registration date is: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD'));
|
||||
// $('#regervation')[0].dataset['departure_DT'] = start.format('YYYY-MM-DD');
|
||||
// $('#regervation')[0].dataset['arrival_DT'] = end.format('YYYY-MM-DD');
|
||||
$('#id_departure_DT').val(start.format('DD.MM.YYYY') + " - " + end.format('DD.MM.YYYY'))
|
||||
// init_arrival_DT(start.format('DD.MM.YYYY'),false,false)
|
||||
$('#id_arrival_DT').val('')
|
||||
init_arrival_DT(start.format('DD.MM.YYYY'),false,false)
|
||||
|
||||
...onl_param
|
||||
}, function (start, end, label) {
|
||||
$('#id_arrival_DT').val(start.format('DD.MM.YYYY') + " - " + end.format('DD.MM.YYYY'));
|
||||
});
|
||||
|
||||
$(`${place_1.id} .drp-calendar.right`).hide();
|
||||
$(`${place_1.id} .drp-calendar.left`).addClass('single');
|
||||
|
||||
$(`${place_1.id} .calendar-table`).on('DOMSubtreeModified', function() {
|
||||
$(`${place_1.id} .calendar-table`).on('DOMSubtreeModified', function () {
|
||||
var el = $(`${place_1.id} .prev.available`).parent().children().last();
|
||||
if (el.hasClass('next available')) {
|
||||
return;
|
||||
@@ -253,4 +220,37 @@ $(function() {
|
||||
el.append('<span></span>');
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(function() {
|
||||
let place_1 = document.querySelector("#id_departure_DT");
|
||||
let onl_param = {};
|
||||
if (window.location.href.includes("/ru/profile/page/create_route_for_mover/") || window.location.href.includes("/ru/profile/page/create_route_for_customer/")) {
|
||||
onl_param = { singleDatePicker: true };
|
||||
}
|
||||
|
||||
if (place_1) {
|
||||
$(place_1).daterangepicker({
|
||||
"autoapply": true,
|
||||
"linkedCalendars": false,
|
||||
"locale": changeLangForDateTimePicker(),
|
||||
...onl_param
|
||||
}, function (start, end, label) {
|
||||
$('#id_departure_DT').val(start.format('DD.MM.YYYY') + " - " + end.format('DD.MM.YYYY'));
|
||||
$('#id_arrival_DT').val('');
|
||||
init_arrival_DT(start.format('DD.MM.YYYY'), false, false);
|
||||
});
|
||||
|
||||
$(`${place_1.id} .drp-calendar.right`).hide();
|
||||
$(`${place_1.id} .drp-calendar.left`).addClass('single');
|
||||
|
||||
$(`${place_1.id} .calendar-table`).on('DOMSubtreeModified', function () {
|
||||
var el = $(`${place_1.id} .prev.available`).parent().children().last();
|
||||
if (el.hasClass('next available')) {
|
||||
return;
|
||||
}
|
||||
el.addClass('next available');
|
||||
el.append('<span></span>');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -346,13 +346,27 @@ function searchTown(el){
|
||||
|
||||
|
||||
|
||||
function selectItemAddrPoint(id, name, ctrl_name,){
|
||||
function selectItemAddrPoint(id, name, ctrl_name, city_DT){
|
||||
let input_list = document.getElementsByName(ctrl_name + '_list')[0];
|
||||
let tap_txt_cont = document.querySelector("#id_" + ctrl_name);
|
||||
let local_city_time = document.querySelector(".local_city_time");
|
||||
|
||||
if(ctrl_name === "from_address_point_txt" && local_city_time){
|
||||
local_city_time.innerHTML = city_DT;
|
||||
}
|
||||
|
||||
|
||||
tap_txt_cont.value = name;
|
||||
tap_txt_cont.setAttribute('title',name)
|
||||
let tap_cont = document.querySelector("#id_" + ctrl_name.slice(0, -4));
|
||||
tap_cont.value = id;
|
||||
|
||||
if (local_city_time){
|
||||
init_departure_DT()
|
||||
init_arrival_DT()
|
||||
}
|
||||
|
||||
|
||||
if (tap_txt_cont.classList.contains('red_text')){
|
||||
tap_txt_cont.classList.remove('red_text')
|
||||
}
|
||||
@@ -541,12 +555,16 @@ function sendRoute(el, routeID = null){
|
||||
// if (selected_owner_type[0].classList.contains('selected')){
|
||||
//
|
||||
// }else{}
|
||||
let owner_type_value = document.getElementById('hide_owner_type').value
|
||||
|
||||
let hiddenTime = document.querySelector('.local_city_time').innerText;
|
||||
|
||||
let owner_type_value = document.getElementById('hide_owner_type').value
|
||||
|
||||
let form = el.form
|
||||
let formData = new FormData(form);
|
||||
let owner_type = owner_type_value
|
||||
formData.set('owner_type', owner_type)
|
||||
formData.set('hiddenTime', hiddenTime)
|
||||
|
||||
let url = '/routes/create_or_change_route/'
|
||||
if (routeID !== null){
|
||||
@@ -805,8 +823,8 @@ function OnSelectionChange(el) {
|
||||
// }
|
||||
sliderInit();
|
||||
|
||||
init_arrival_DT()
|
||||
init_departure_DT()
|
||||
// init_arrival_DT()
|
||||
// init_departure_DT()
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -561,7 +561,7 @@ function selectedUserMessenger (ticket_id=null,user_id=null,el){
|
||||
}
|
||||
let user_type = getInfoAboutUser()
|
||||
|
||||
update_count_unread_messages()
|
||||
|
||||
// if (user_type === 'mobile' || user_type === 'laptop') {
|
||||
// open_curtain_w_contacts()
|
||||
// }
|
||||
@@ -581,7 +581,7 @@ function selectedUserMessenger (ticket_id=null,user_id=null,el){
|
||||
if (loader){
|
||||
loader.classList.toggle("show")
|
||||
}
|
||||
update_count_unread_messages()
|
||||
|
||||
// let left_curtain = document.querySelector('.curtain.left')
|
||||
document.querySelector(".info_profile").innerHTML = data.html;
|
||||
document.querySelector(".enter-message-inp").focus()
|
||||
@@ -592,6 +592,9 @@ function selectedUserMessenger (ticket_id=null,user_id=null,el){
|
||||
let top = document.querySelector(".tab_user_messanger.select").offsetTop
|
||||
document.querySelector(".menu_buttons.curtain.left.open").scrollTo({top:top})
|
||||
}
|
||||
|
||||
update_count_unread_messages(data);
|
||||
|
||||
// second time beacause we need to close curtain
|
||||
// if (user_type === 'mobile' || user_type === 'laptop') {
|
||||
// open_curtain_w_contacts()
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
<div>
|
||||
{% load static %}
|
||||
{% load i18n %}
|
||||
|
||||
<div class="page_paging_elements_1">
|
||||
{% include 'blocks/routes/b_my_routes_list.html' %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if last_block == False and next_page_els_count %}
|
||||
<div class="text-align-center">
|
||||
<button class="button-find-more-routes" id="{{ last_el }}" onclick="load_routes(this,null,{{ next_page_els_count }},'{{ owner_type }}')">{% trans "Показать ещё" %}<span class="col_vo_els_f_load"> {{ next_page_els_count }}</span></button>
|
||||
<div class="width-100 text-align-center mb-10">
|
||||
<img class="loader_f_loading_routes" src="{% static "img/svg/loader.svg" %}">
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -74,92 +74,9 @@
|
||||
|
||||
{% if form.initial and form.initial.type_transport and form.initial.type_transport != '' %}
|
||||
<hr>
|
||||
<div class="departure_arrival">
|
||||
<div class="wrap_left">
|
||||
<label for="id_departure_DT">
|
||||
|
||||
{% if form.initial.owner_type == 'mover' and form.initial.type_transport == 'road' or form.data.owner_type == 'mover' and form.initial.type_transport == 'road' %}
|
||||
{% translate "Дата и время выезда" %}
|
||||
{% elif form.initial.owner_type == 'mover' and form.initial.type_transport == 'avia' or form.data.owner_type == 'mover' and form.initial.type_transport == 'avia' %}
|
||||
{% translate "Дата и время вылета" %}
|
||||
{% elif form.initial.owner_type == 'customer' or form.data.owner_type == 'customer' %}
|
||||
{% translate "Дата и время отправки" %}
|
||||
{% endif %}
|
||||
|
||||
</label>
|
||||
|
||||
|
||||
{# <input#}
|
||||
{# type="datetime-local"#}
|
||||
{# min= {% now "Y-m-d" %}T{% now "H:i" %}#}
|
||||
{# name="departure_DT"#}
|
||||
{# onchange="checkDate()"#}
|
||||
{# {% if form.fields.departure_DT.required %} required{% endif %}#}
|
||||
{# id="id_departure_DT"#}
|
||||
{# class="el_form_b_new_route"#}
|
||||
{# placeholder="Выберите дату и время"#}
|
||||
{# {% if form.initial.departure_DT %}value="{{ form.initial.departure_DT.date|date:"Y-m-d" }}T{{ form.initial.departure_DT.time|date:"H:i" }}"{% endif %}#}
|
||||
{# />#}
|
||||
{# boris change input #}
|
||||
<input
|
||||
class="el_form_b_new_route"
|
||||
{# onchange="checkDate()"#}
|
||||
{# onclick="setIcon(this)"#}
|
||||
onmouseup="hideErrors(this)"
|
||||
type="text"
|
||||
id="id_departure_DT"
|
||||
name="departure_DT"
|
||||
placeholder="{% translate "Выберите дату и время" %}" {% if form.initial.departure_DT %}
|
||||
value="{{ form.initial.departure_DT|date:"d.m.Y H:m" }}"{% endif %}/>
|
||||
<div id="displayRegervation"></div>
|
||||
|
||||
{% if not errors_off and form.errors and form.errors.departure_DT %}
|
||||
<span id="error_departure_DT">{{ form.errors.departure_DT }}</span>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
<div id="arrival_div">
|
||||
<label for="id_arrival_DT">
|
||||
|
||||
{% if form.initial.owner_type == 'mover' or form.data.owner_type == 'mover'%}
|
||||
{% translate "Дата и время прибытия" %}
|
||||
{% elif form.initial.owner_type == 'customer' or form.data.owner_type == 'customer' %}
|
||||
{% translate "Дата и время доставки посылки" %}
|
||||
{% endif %}
|
||||
|
||||
</label>
|
||||
{# <input#}
|
||||
{# type="datetime-local"#}
|
||||
{# min= {% now "Y-m-d" %}T{% now "H:i" %}#}
|
||||
{# name="arrival_DT"#}
|
||||
{# onchange="checkDate()"#}
|
||||
{# {% if form.fields.arrival_DT.required %} required{% endif %}#}
|
||||
{# id="id_arrival_DT"#}
|
||||
{# class="el_form_b_new_route"#}
|
||||
{# {% if form.initial.arrival_DT %}value="{{ form.initial.arrival_DT.date|date:"Y-m-d" }}T{{ form.initial.arrival_DT.time|date:"H:i" }}"{% endif %}#}
|
||||
{# />#}
|
||||
{# boris change input #}
|
||||
<input
|
||||
class="el_form_b_new_route"
|
||||
onchange="checkDate()"
|
||||
onmouseup="hideErrors(this)"
|
||||
type="text"
|
||||
id="id_arrival_DT"
|
||||
name="arrival_DT"
|
||||
placeholder="{% translate "Выберите дату и время" %}" {% if form.initial.arrival_DT %}
|
||||
value="{{ form.initial.arrival_DT|date:"d.m.Y H:m" }}"{% endif %}/>
|
||||
|
||||
<div id="displayRegervation"></div>
|
||||
{# end #}
|
||||
{% if not errors_off and form.errors and form.errors.arrival_DT %}
|
||||
<span id="error_arrival_DT">{{ form.errors.arrival_DT }}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="clear_both"></div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="from_to_country">
|
||||
<div class="from_to_country">
|
||||
<div class="from_country_container">
|
||||
<div class="local_city_time" hidden="hidden">{% if route.departure_DT %}{{ route.from_city.get_current_datetime }}{% elif form.initial.departure_DT %}{{ form.initial.departure_DT }}{% endif %}</div>
|
||||
<label for="id_from_address_point_txt">
|
||||
{% if form.initial.owner_type == 'mover' and form.initial.type_transport == 'avia' or form.data.owner_type == 'mover' and form.initial.type_transport == 'avia' %}
|
||||
{% translate "Пункт вылета" %}
|
||||
@@ -247,6 +164,92 @@
|
||||
</div>
|
||||
<div class="clear_both"></div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="departure_arrival">
|
||||
<div class="wrap_left">
|
||||
<label for="id_departure_DT">
|
||||
|
||||
{% if form.initial.owner_type == 'mover' and form.initial.type_transport == 'road' or form.data.owner_type == 'mover' and form.initial.type_transport == 'road' %}
|
||||
{% translate "Дата и время выезда" %}
|
||||
{% elif form.initial.owner_type == 'mover' and form.initial.type_transport == 'avia' or form.data.owner_type == 'mover' and form.initial.type_transport == 'avia' %}
|
||||
{% translate "Дата и время вылета" %}
|
||||
{% elif form.initial.owner_type == 'customer' or form.data.owner_type == 'customer' %}
|
||||
{% translate "Дата и время отправки" %}
|
||||
{% endif %}
|
||||
|
||||
</label>
|
||||
|
||||
|
||||
{# <input#}
|
||||
{# type="datetime-local"#}
|
||||
{# min= {% now "Y-m-d" %}T{% now "H:i" %}#}
|
||||
{# name="departure_DT"#}
|
||||
{# onchange="checkDate()"#}
|
||||
{# {% if form.fields.departure_DT.required %} required{% endif %}#}
|
||||
{# id="id_departure_DT"#}
|
||||
{# class="el_form_b_new_route"#}
|
||||
{# placeholder="Выберите дату и время"#}
|
||||
{# {% if form.initial.departure_DT %}value="{{ form.initial.departure_DT.date|date:"Y-m-d" }}T{{ form.initial.departure_DT.time|date:"H:i" }}"{% endif %}#}
|
||||
{# />#}
|
||||
{# boris change input #}
|
||||
<input
|
||||
class="el_form_b_new_route"
|
||||
{# onchange="checkDate()"#}
|
||||
{# onclick="setIcon(this)"#}
|
||||
onmouseup="hideErrors(this)"
|
||||
readonly
|
||||
type="text"
|
||||
id="id_departure_DT"
|
||||
name="departure_DT"
|
||||
placeholder="{% translate "Выберите дату и время" %}" {% if form.initial.departure_DT %}
|
||||
value="{{ form.initial.departure_DT|date:"d.m.Y H:i" }}"{% endif %}/>
|
||||
<div id="displayRegervation"></div>
|
||||
|
||||
{% if not errors_off and form.errors and form.errors.departure_DT %}
|
||||
<span id="error_departure_DT">{{ form.errors.departure_DT }}</span>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
<div id="arrival_div">
|
||||
<label for="id_arrival_DT">
|
||||
|
||||
{% if form.initial.owner_type == 'mover' or form.data.owner_type == 'mover'%}
|
||||
{% translate "Дата и время прибытия" %}
|
||||
{% elif form.initial.owner_type == 'customer' or form.data.owner_type == 'customer' %}
|
||||
{% translate "Дата и время доставки посылки" %}
|
||||
{% endif %}
|
||||
|
||||
</label>
|
||||
{# <input#}
|
||||
{# type="datetime-local"#}
|
||||
{# min= {% now "Y-m-d" %}T{% now "H:i" %}#}
|
||||
{# name="arrival_DT"#}
|
||||
{# onchange="checkDate()"#}
|
||||
{# {% if form.fields.arrival_DT.required %} required{% endif %}#}
|
||||
{# id="id_arrival_DT"#}
|
||||
{# class="el_form_b_new_route"#}
|
||||
{# {% if form.initial.arrival_DT %}value="{{ form.initial.arrival_DT.date|date:"Y-m-d" }}T{{ form.initial.arrival_DT.time|date:"H:i" }}"{% endif %}#}
|
||||
{# />#}
|
||||
{# boris change input #}
|
||||
<input
|
||||
class="el_form_b_new_route"
|
||||
onchange="checkDate()"
|
||||
onmouseup="hideErrors(this)"
|
||||
type="text"
|
||||
readonly
|
||||
id="id_arrival_DT"
|
||||
name="arrival_DT"
|
||||
placeholder="{% translate "Выберите дату и время" %}" {% if form.initial.arrival_DT %}
|
||||
value="{{ form.initial.arrival_DT|date:"d.m.Y H:i" }}"{% endif %}/>
|
||||
|
||||
<div id="displayRegervation"></div>
|
||||
{# end #}
|
||||
{% if not errors_off and form.errors and form.errors.arrival_DT %}
|
||||
<span id="error_arrival_DT">{{ form.errors.arrival_DT }}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="clear_both"></div>
|
||||
</div>
|
||||
|
||||
{# <div>#}
|
||||
{# <label for="id_from_city">{{ form.fields.from_city.label }}</label>#}
|
||||
|
||||
@@ -169,7 +169,7 @@
|
||||
</div>
|
||||
<div class="price_subscribe">
|
||||
{% if subscribe.price %}
|
||||
{{ subscribe.price|floatformat }}$
|
||||
{{ subscribe.price|floatformat }}₸
|
||||
{% else %}
|
||||
{% translate "Бесплатно" %}
|
||||
{% endif %}
|
||||
|
||||
42
templates/inter/meta_OpenGraph.html
Normal file
42
templates/inter/meta_OpenGraph.html
Normal file
@@ -0,0 +1,42 @@
|
||||
|
||||
{% if page.url == 'main' %}
|
||||
|
||||
|
||||
|
||||
{% endif %}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{% if page.url == 'about_service' and page.url == 'ru' %}
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:title" content="Express parcel delivery | TWB">
|
||||
<meta property="og:description" content="You can order fast delivery of parcels and letters to all CIS cities with us ✓ Competitive rates on the website ✓ Express parcel dispatch ➡️ Contact us">
|
||||
<meta property="og:url" content="https://tripwb.com/en/page/about_service/">
|
||||
<meta property="og:image" content="https://tripwb.com/static/img/png/finlogo.png">
|
||||
<meta property="og:site_name" content="TWB">
|
||||
<meta property="og:locale" content="en_EN">
|
||||
<meta property="fb:app_id" content="tripwithbonus">
|
||||
|
||||
<meta name="twitter:title" content="Express parcel delivery | TWB">
|
||||
<meta name="twitter:description" content="You can order fast delivery of parcels and letters to all CIS cities with us ✓ Competitive rates on the website ✓ Express parcel dispatch ➡️ Contact us">
|
||||
<meta name="twitter:card" content="summary">
|
||||
{% endif %}
|
||||
|
||||
{% if page.url == 'about_service' and page.url == 'en' %}
|
||||
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:title" content="Express parcel delivery | TWB">
|
||||
<meta property="og:description" content="You can order fast delivery of parcels and letters to all CIS cities with us ✓ Competitive rates on the website ✓ Express parcel dispatch ➡️ Contact us">
|
||||
<meta property="og:url" content="https://tripwb.com/en/page/about_service/">
|
||||
<meta property="og:image" content="https://tripwb.com/static/img/png/finlogo.png">
|
||||
<meta property="og:site_name" content="TWB">
|
||||
<meta property="og:locale" content="en_EN">
|
||||
<meta property="fb:app_id" content="tripwithbonus">
|
||||
|
||||
<meta name="twitter:title" content="Express parcel delivery | TWB">
|
||||
<meta name="twitter:description" content="You can order fast delivery of parcels and letters to all CIS cities with us ✓ Competitive rates on the website ✓ Express parcel dispatch ➡️ Contact us">
|
||||
<meta name="twitter:card" content="summary">
|
||||
|
||||
{% endif %}
|
||||
@@ -24,7 +24,7 @@
|
||||
<p>
|
||||
{% translate "Ваш аккаунт успешно создан." %}<br>
|
||||
{% translate "Ваш логин" %}: <b>{{ user.email }}</b><br>
|
||||
{% translate "Ваш пароль" %}: <b>{{ pass }}</b><br>
|
||||
{% translate "Ваш пароль" %}: <b>Пароль, который Вы вводили при регистрации</b><br>
|
||||
</p>
|
||||
|
||||
<div>
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
<meta name="google-site-verification" content="4V4upJSK2_4MBrr5ZXjcCLw3bBwXc4_gsnKudJAaWqI" />
|
||||
<meta name="yandex-verification" content="b8a976575e41fbbc" />
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Yandex.Metrika counter -->
|
||||
<script type="text/javascript" >
|
||||
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
|
||||
@@ -48,8 +51,70 @@
|
||||
gtag('config', 'G-2WW2PTG5BM');
|
||||
</script>
|
||||
|
||||
{# </header>#}
|
||||
{#<div class="line_f_header"></div>#}
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-16654215692">
|
||||
</script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'AW-16654215692');
|
||||
</script>
|
||||
|
||||
<!-- Event snippet for Sign-up conversion page
|
||||
In your html page, add the snippet and call gtag_report_conversion when someone clicks on the chosen link or button. -->
|
||||
<script>
|
||||
function gtag_report_conversion(url) {
|
||||
var callback = function () {
|
||||
if (typeof(url) != 'undefined') {
|
||||
window.location = url;
|
||||
}
|
||||
};
|
||||
gtag('event', 'conversion', {
|
||||
'send_to': 'AW-16654215692/tPyZCPyJgcYZEIzUrIU-',
|
||||
'event_callback': callback
|
||||
});
|
||||
return false;
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<!-- TikTok Pixel Code Start -->
|
||||
<script>
|
||||
!function (w, d, t) {
|
||||
w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie","holdConsent","revokeConsent","grantConsent"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.instance=function(t){for(
|
||||
var e=ttq._i[t]||[],n=0;n<ttq.methods.length;n++)ttq.setAndDefer(e,ttq.methods[n]);return e},ttq.load=function(e,n){var r="https://analytics.tiktok.com/i18n/pixel/events.js",o=n&&n.partner;ttq._i=ttq._i||{},ttq._i[e]=[],ttq._i[e]._u=r,ttq._t=ttq._t||{},ttq._t[e]=+new Date,ttq._o=ttq._o||{},ttq._o[e]=n||{};n=document.createElement("script")
|
||||
;n.type="text/javascript",n.async=!0,n.src=r+"?sdkid="+e+"&lib="+t;e=document.getElementsByTagName("script")[0];e.parentNode.insertBefore(n,e)};
|
||||
|
||||
|
||||
ttq.load('CQLLM8BC77UEI2I3MU5G');
|
||||
ttq.page();
|
||||
}(window, document, 'ttq');
|
||||
</script>
|
||||
<!-- TikTok Pixel Code End -->
|
||||
|
||||
<!-- Meta Pixel Code -->
|
||||
<script>
|
||||
!function(f,b,e,v,n,t,s)
|
||||
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
|
||||
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
|
||||
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
|
||||
n.queue=[];t=b.createElement(e);t.async=!0;
|
||||
t.src=v;s=b.getElementsByTagName(e)[0];
|
||||
s.parentNode.insertBefore(t,s)}(window, document,'script',
|
||||
'https://connect.facebook.net/en_US/fbevents.js');
|
||||
fbq('init', '370775942506737');
|
||||
fbq('track', 'PageView');
|
||||
</script>
|
||||
<noscript><img height="1" width="1" style="display:none"
|
||||
src="https://www.facebook.com/tr?id=370775942506737&ev=PageView&noscript=1"
|
||||
/></noscript>
|
||||
<!-- End Meta Pixel Code -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<title>
|
||||
@@ -88,7 +153,7 @@
|
||||
init_ws()
|
||||
const beep = new Audio('/static/sounds/beep_2.mp3')
|
||||
</script>
|
||||
|
||||
|
||||
{% endif %}
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,17 @@
|
||||
{% load i18n %}
|
||||
|
||||
|
||||
<div class="carrier-card {% if route.highlight_color %} highlight-color {% endif %}" data-number-of-route="{{ route.id }}">
|
||||
{% if route.departure_DT %}
|
||||
{% with current_datetime=route.from_city.get_current_datetime %}
|
||||
{% with departure_datetime=route.departure_DT %}
|
||||
{% if current_datetime|date:"Y-m-d H:i:s" > departure_datetime|date:"Y-m-d H:i:s" %}
|
||||
<div class="carrier-card out_of_date" data-number-of-route="{{ route.id }}">
|
||||
{% else %}
|
||||
<div class="carrier-card {% if route.highlight_color %} highlight-color {% endif %}" data-number-of-route="{{ route.id }}">
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
{% endwith %}
|
||||
{% endif %}
|
||||
{#<div class="carrier-card"{% if route.highlight_color %} style="border: 5px solid {{ route.highlight_color }};"{% endif %} data-number-of-route="{{ route.id }}">#}
|
||||
<div class="left-part-carrier-card">
|
||||
{# <div class="first-line-card-carrier">#}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div onmousedown='selectItemAddrPoint({{ id }}, "{{ fullname }}", "{{ ctrl_name }}")' class="autocomplete-result" data-index="{{ index }}">
|
||||
<div onmousedown='selectItemAddrPoint({{ id }}, "{{ fullname }}", "{{ ctrl_name }}", "{{ city_DT }}")' class="autocomplete-result" data-index="{{ index }}">
|
||||
{% if airport_fullname %}<div>{{ airport_fullname|safe }}</div>{% endif %}
|
||||
<div class="autocomplete-location">{{ city_name }} / {{ country_name }}</div>
|
||||
</div>
|
||||
@@ -2,17 +2,21 @@
|
||||
{% load i18n %}
|
||||
{% load subscribes_tags_extra %}
|
||||
|
||||
{% if route.departure_DT %}
|
||||
{% now 'Y-m-d H:i:s' as current_date %}
|
||||
{% with departure_date_string=route.departure_DT|date:"Y-m-d H:i:s" %}
|
||||
{% if departure_date_string < current_date %}
|
||||
<div class="carrier-card out_of_date" data-number-of-route="{{ route.id }}">
|
||||
{% else %}
|
||||
<div class="carrier-card {% if route.highlight_color %} highlight-color {% endif %}" data-number-of-route="{{ route.id }}">
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
{#Current Datetime: {{ route.from_city.get_current_datetime }}<br>#}
|
||||
{#Departure DT:{{ route.departure_DT }}<br>#}
|
||||
|
||||
{% if route.departure_DT %}
|
||||
{% with current_datetime=route.from_city.get_current_datetime %}
|
||||
{% with departure_datetime=route.departure_DT %}
|
||||
{% if current_datetime|date:"Y-m-d H:i:s" > departure_datetime|date:"Y-m-d H:i:s" %}
|
||||
<div class="carrier-card out_of_date" data-number-of-route="{{ route.id }}">
|
||||
{% else %}
|
||||
<div class="carrier-card {% if route.highlight_color %} highlight-color {% endif %}" data-number-of-route="{{ route.id }}">
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
{% endwith %}
|
||||
{% endif %}
|
||||
|
||||
<div class="left-part-carrier-card">
|
||||
{% if route.owner_type == 'mover' %}
|
||||
<div class="first-line-card-carrier">
|
||||
@@ -144,7 +148,7 @@
|
||||
<span class="phones_carrier_span{% if route.owner == user %} active{% endif %} el_for_open_el"></span>
|
||||
<div class="clear_both"></div>
|
||||
</a>
|
||||
<a class="email_carrier" data-href="mailto:{{ route.owner.email }}">
|
||||
<a class="email_carrier" data-href="mailto:">
|
||||
<img class="inf_carrier_icon" src="{% static "/img/svg/email.svg" %}">
|
||||
<span class="email_carrier_span{% if route.owner == user %} active{% endif %} el_for_open_el"></span>
|
||||
|
||||
|
||||
@@ -10,9 +10,10 @@
|
||||
<span class="last-message-messenger-user-tab">{{ item.last_msg }}</span>
|
||||
</div>
|
||||
{% if item.unread_msgs_count %}
|
||||
{# {% if unanswered_msgs_count > 0 %}#}
|
||||
<div class="right-part-tab-user">
|
||||
<div class="cost-messages-in-user-tab-messenger">
|
||||
{# <span>{{ item.unread_msgs_count }}</span>#}
|
||||
<span>{{ unanswered_msgs_count }}</span>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
Reference in New Issue
Block a user