find route limit slice
This commit is contained in:
SDE
2023-08-29 16:30:31 +03:00
parent 58f42c4651
commit 26e923ab58
11 changed files with 177 additions and 1 deletions

View File

@@ -154,7 +154,11 @@ def find_routes_ajax(request):
try: try:
data = request.POST.dict() data = request.POST.dict()
if not data and request.body:
data = json.loads(request.body)
data['owner_type'] = 'mover' data['owner_type'] = 'mover'
routes_Dict = get_routes_Dict(data=data) routes_Dict = get_routes_Dict(data=data)
if 'errors' in routes_Dict: if 'errors' in routes_Dict:

View File

3
SubscribesApp/admin.py Normal file
View File

@@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

6
SubscribesApp/apps.py Normal file
View File

@@ -0,0 +1,6 @@
from django.apps import AppConfig
class SubscribesappConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'SubscribesApp'

View File

@@ -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='Подключенные опции'),
),
]

View File

47
SubscribesApp/models.py Normal file
View File

@@ -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 = _('Пользовательские подписки')

3
SubscribesApp/tests.py Normal file
View File

@@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

View File

@@ -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)

3
SubscribesApp/views.py Normal file
View File

@@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.

View File

@@ -54,7 +54,7 @@ INSTALLED_APPS = [
'RoutesApp', 'RoutesApp',
'ReferenceDataApp', 'ReferenceDataApp',
'ArticlesApp', 'ArticlesApp',
'SubscribesApp',
] ]
MIDDLEWARE = [ MIDDLEWARE = [