From b5652acad64dabbbcd9df949e92856579ab81ede Mon Sep 17 00:00:00 2001 From: borissedw Date: Tue, 29 Aug 2023 15:52:07 +0300 Subject: [PATCH 1/3] 0.0.191 --- static/js/dynamic_loading_routes.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/js/dynamic_loading_routes.js b/static/js/dynamic_loading_routes.js index 61cba90..973a87e 100644 --- a/static/js/dynamic_loading_routes.js +++ b/static/js/dynamic_loading_routes.js @@ -40,7 +40,7 @@ function load_routes (el) { }, error: function (data){ - document.querySelector(".info_profile").innerHTML = data.responseJSON.html; + document.querySelector(".block-finded-routes").innerHTML = data.responseJSON.html; } }); From 58f42c4651a8c3e6000f7cf23b32af603fe247cb Mon Sep 17 00:00:00 2001 From: borissedw Date: Tue, 29 Aug 2023 16:22:49 +0300 Subject: [PATCH 2/3] 0.0.192 --- static/css/styles(boris).css | 17 ++++++++++++++++- static/js/dynamic_loading_routes.js | 16 ++++++++++++++-- templates/pages/p_results_find_route.html | 1 + 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/static/css/styles(boris).css b/static/css/styles(boris).css index 93d2a21..bb00b91 100644 --- a/static/css/styles(boris).css +++ b/static/css/styles(boris).css @@ -11,7 +11,7 @@ } .text-align-center{ - text-align: center; + text-align: -webkit-center; width: 100%; } @@ -552,6 +552,8 @@ padding: 20px; font-size: 16px; display: block; + overflow: hidden; + text-overflow: ellipsis; } .insert_users{ @@ -1460,4 +1462,17 @@ font-size: 18px; font-weight: 600; border-radius: 10px; +} + +.button-find-more-routes.hide{ + display: none; +} + +.loader_f_loading_routes{ + width: 25px; + height: 25px; + display: none; +} +.loader_f_loading_routes.show{ + display: block; } \ No newline at end of file diff --git a/static/js/dynamic_loading_routes.js b/static/js/dynamic_loading_routes.js index 973a87e..82488c0 100644 --- a/static/js/dynamic_loading_routes.js +++ b/static/js/dynamic_loading_routes.js @@ -2,6 +2,9 @@ let page_iterator = 2 function load_routes (el) { + let loader = document.querySelector(".loader_f_loading_routes") + loader.classList.toggle("show") + el.classList.toggle("hide") event.preventDefault() // let el_parent = el.parentNode // let new_el = el_parent.previousSibling.previousSibling @@ -25,12 +28,21 @@ function load_routes (el) { // enctype: 'json', data: JSON.stringify(data), success: function(data){ + // new_el.parentNode.insertBefore(data.html, new_el.nextSibling); let url_insert = ".page_routes_" + page_iterator - document.querySelector(url_insert).innerHTML = data.html + let place_ins = document.querySelector(url_insert) + place_ins.innerHTML = data.html let old_page_iterator = page_iterator page_iterator++ - + loader.classList.toggle("show") + el.classList.toggle("hide") + let el_scroll = place_ins.firstElementChild + el_scroll.scrollIntoView( + { + behavior:"smooth" + } + ) let new_page_routes = document.createElement("div") new_page_routes.classList.add("page_routes_" + page_iterator) $(new_page_routes).insertAfter(".page_routes_" + old_page_iterator); diff --git a/templates/pages/p_results_find_route.html b/templates/pages/p_results_find_route.html index 76c496b..b02c830 100644 --- a/templates/pages/p_results_find_route.html +++ b/templates/pages/p_results_find_route.html @@ -219,6 +219,7 @@
+
From 26e923ab5898d3349071750107cb0505d2233991 Mon Sep 17 00:00:00 2001 From: SDE Date: Tue, 29 Aug 2023 16:30:31 +0300 Subject: [PATCH 3/3] 0.5.5 find route limit slice --- RoutesApp/js_views.py | 4 ++ SubscribesApp/__init__.py | 0 SubscribesApp/admin.py | 3 + SubscribesApp/apps.py | 6 ++ SubscribesApp/migrations/0001_initial.py | 89 ++++++++++++++++++++++++ SubscribesApp/migrations/__init__.py | 0 SubscribesApp/models.py | 47 +++++++++++++ SubscribesApp/tests.py | 3 + SubscribesApp/translation.py | 21 ++++++ SubscribesApp/views.py | 3 + TWB/settings.py | 2 +- 11 files changed, 177 insertions(+), 1 deletion(-) create mode 100644 SubscribesApp/__init__.py create mode 100644 SubscribesApp/admin.py create mode 100644 SubscribesApp/apps.py create mode 100644 SubscribesApp/migrations/0001_initial.py create mode 100644 SubscribesApp/migrations/__init__.py create mode 100644 SubscribesApp/models.py create mode 100644 SubscribesApp/tests.py create mode 100644 SubscribesApp/translation.py create mode 100644 SubscribesApp/views.py diff --git a/RoutesApp/js_views.py b/RoutesApp/js_views.py index c6cd87e..53cda2f 100644 --- a/RoutesApp/js_views.py +++ b/RoutesApp/js_views.py @@ -154,7 +154,11 @@ def find_routes_ajax(request): try: + data = request.POST.dict() + if not data and request.body: + data = json.loads(request.body) + data['owner_type'] = 'mover' routes_Dict = get_routes_Dict(data=data) if 'errors' in routes_Dict: diff --git a/SubscribesApp/__init__.py b/SubscribesApp/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/SubscribesApp/admin.py b/SubscribesApp/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/SubscribesApp/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/SubscribesApp/apps.py b/SubscribesApp/apps.py new file mode 100644 index 0000000..0201678 --- /dev/null +++ b/SubscribesApp/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class SubscribesappConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'SubscribesApp' diff --git a/SubscribesApp/migrations/0001_initial.py b/SubscribesApp/migrations/0001_initial.py new file mode 100644 index 0000000..e5293f8 --- /dev/null +++ b/SubscribesApp/migrations/0001_initial.py @@ -0,0 +1,89 @@ +# Generated by Django 4.2.2 on 2023-08-29 16:04 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Subscribe', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')), + ('name_ru', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')), + ('name_en', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')), + ('name_plural', models.TextField(blank=True, null=True, verbose_name='Название (множественное число)')), + ('order', models.IntegerField(blank=True, null=True, verbose_name='Очередность отображения')), + ('createDT', models.DateTimeField(auto_now_add=True, verbose_name='Дата и время создания')), + ('modifiedDT', models.DateTimeField(blank=True, null=True, verbose_name='Дата и время последнего изменения')), + ('enable', models.BooleanField(db_index=True, default=True, verbose_name='Включено')), + ('json_data', models.JSONField(blank=True, default=dict, verbose_name='Дополнительные данные')), + ('price', models.FloatField(default=0, verbose_name='Стоимость')), + ('period_name', models.CharField(max_length=250, verbose_name='Название периода')), + ('period_name_ru', models.CharField(max_length=250, null=True, verbose_name='Название периода')), + ('period_name_en', models.CharField(max_length=250, null=True, verbose_name='Название периода')), + ('period', models.IntegerField(default=0, verbose_name='Длительность подписки в часах')), + ], + options={ + 'verbose_name': 'Подписка', + 'verbose_name_plural': 'Подписки', + }, + ), + migrations.CreateModel( + name='SubscribeOption', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')), + ('name_ru', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')), + ('name_en', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')), + ('name_plural', models.TextField(blank=True, null=True, verbose_name='Название (множественное число)')), + ('order', models.IntegerField(blank=True, null=True, verbose_name='Очередность отображения')), + ('createDT', models.DateTimeField(auto_now_add=True, verbose_name='Дата и время создания')), + ('modifiedDT', models.DateTimeField(blank=True, null=True, verbose_name='Дата и время последнего изменения')), + ('enable', models.BooleanField(db_index=True, default=True, verbose_name='Включено')), + ('json_data', models.JSONField(blank=True, default=dict, verbose_name='Дополнительные данные')), + ], + options={ + 'verbose_name': 'Опция подписки', + 'verbose_name_plural': 'Опции подписки', + }, + ), + migrations.CreateModel( + name='SubscribeForUser', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')), + ('name_plural', models.TextField(blank=True, null=True, verbose_name='Название (множественное число)')), + ('order', models.IntegerField(blank=True, null=True, verbose_name='Очередность отображения')), + ('createDT', models.DateTimeField(auto_now_add=True, verbose_name='Дата и время создания')), + ('modifiedDT', models.DateTimeField(blank=True, null=True, verbose_name='Дата и время последнего изменения')), + ('enable', models.BooleanField(db_index=True, default=True, verbose_name='Включено')), + ('json_data', models.JSONField(blank=True, default=dict, verbose_name='Дополнительные данные')), + ('last_paid_DT', models.DateTimeField(blank=True, null=True, verbose_name='Последняя дата оплаты')), + ('paid_period_from_DT', models.DateTimeField(blank=True, null=True, verbose_name='Оплаченный период с')), + ('paid_period_to_DT', models.DateTimeField(blank=True, null=True, verbose_name='Оплаченный период до')), + ('auto_continue', models.BooleanField(default=False, verbose_name='Автопродление')), + ('receive_finish_subscribe_msg', models.BooleanField(default=False, verbose_name='Получать сообщения о окончании периода')), + ('subscribe', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rel_userSubscribes_for_subscribe', to='SubscribesApp.subscribe', verbose_name='Подписка')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rel_userSubscribes_for_user', to=settings.AUTH_USER_MODEL, verbose_name='Пользователь')), + ], + options={ + 'verbose_name': 'Пользовательская подписка', + 'verbose_name_plural': 'Пользовательские подписки', + }, + ), + migrations.AddField( + model_name='subscribe', + name='options', + field=models.ManyToManyField(blank=True, related_name='rel_subscribes_for_option', to='SubscribesApp.subscribeoption', verbose_name='Подключенные опции'), + ), + ] diff --git a/SubscribesApp/migrations/__init__.py b/SubscribesApp/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/SubscribesApp/models.py b/SubscribesApp/models.py new file mode 100644 index 0000000..28ad7d6 --- /dev/null +++ b/SubscribesApp/models.py @@ -0,0 +1,47 @@ +from django.db import models +from BaseModels.base_models import BaseModel +from django.utils.translation import gettext_lazy as _ + +class SubscribeOption(BaseModel): + + class Meta: + verbose_name = _('Опция подписки') + verbose_name_plural = _('Опции подписки') + + + +class Subscribe(BaseModel): + + price = models.FloatField(verbose_name='Стоимость', default=0) + options = models.ManyToManyField( + SubscribeOption, verbose_name=_('Подключенные опции'), blank=True, related_name='rel_subscribes_for_option' + ) + period_name = models.CharField(max_length=250, verbose_name=_('Название периода')) + period = models.IntegerField(default=0, verbose_name=_('Длительность подписки в часах')) + + class Meta: + verbose_name = _('Подписка') + verbose_name_plural = _('Подписки') + + +class SubscribeForUser(BaseModel): + from AuthApp.models import User + + user = models.ForeignKey( + User, verbose_name=_('Пользователь'), related_name='rel_userSubscribes_for_user', on_delete=models.CASCADE) + subscribe = models.ForeignKey( + Subscribe, verbose_name=_('Подписка'), null=True, blank=True, related_name='rel_userSubscribes_for_subscribe', + on_delete=models.SET_NULL + ) + last_paid_DT = models.DateTimeField(verbose_name=_('Последняя дата оплаты'), blank=True, null=True) + paid_period_from_DT = models.DateTimeField(verbose_name=_('Оплаченный период с'), blank=True, null=True) + paid_period_to_DT = models.DateTimeField(verbose_name=_('Оплаченный период до'), blank=True, null=True) + + auto_continue = models.BooleanField(default=False, verbose_name=_('Автопродление')) + + receive_finish_subscribe_msg = models.BooleanField( + default=False, verbose_name=_('Получать сообщения о окончании периода')) + + class Meta: + verbose_name = _('Пользовательская подписка') + verbose_name_plural = _('Пользовательские подписки') \ No newline at end of file diff --git a/SubscribesApp/tests.py b/SubscribesApp/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/SubscribesApp/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/SubscribesApp/translation.py b/SubscribesApp/translation.py new file mode 100644 index 0000000..dcd9fe2 --- /dev/null +++ b/SubscribesApp/translation.py @@ -0,0 +1,21 @@ +from modeltranslation.translator import translator, TranslationOptions +from .models import * + + +class Subscribe_TranslationOptions(TranslationOptions): + fields = ( + 'name', 'period_name' + ) +translator.register(Subscribe, Subscribe_TranslationOptions) + +class SubscribeOption_TranslationOptions(TranslationOptions): + fields = ( + 'name', + ) +translator.register(SubscribeOption, SubscribeOption_TranslationOptions) + + +class SubscribeForUser_TranslationOptions(TranslationOptions): + fields = ( + ) +translator.register(SubscribeForUser, SubscribeForUser_TranslationOptions) \ No newline at end of file diff --git a/SubscribesApp/views.py b/SubscribesApp/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/SubscribesApp/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/TWB/settings.py b/TWB/settings.py index 22ad2f6..51dd820 100644 --- a/TWB/settings.py +++ b/TWB/settings.py @@ -54,7 +54,7 @@ INSTALLED_APPS = [ 'RoutesApp', 'ReferenceDataApp', 'ArticlesApp', - + 'SubscribesApp', ] MIDDLEWARE = [