diff --git a/RoutesApp/admin.py b/RoutesApp/admin.py index ba2b3dc..9b82b64 100644 --- a/RoutesApp/admin.py +++ b/RoutesApp/admin.py @@ -3,6 +3,7 @@ from .models import * from django.contrib import admin class Admin_Route(Admin_Trans_BaseModel): + readonly_fields = ['highlight_end_DT', 'rising_DT'] list_display = [ 'id', 'owner_type', 'receive_msg_by_email', 'type_transport', 'cargo_type', 'departure_DT', 'from_city', 'from_place', diff --git a/RoutesApp/funcs.py b/RoutesApp/funcs.py index 4138d0b..4d450b9 100644 --- a/RoutesApp/funcs.py +++ b/RoutesApp/funcs.py @@ -118,10 +118,10 @@ def get_city_by_type_transport_and_address_point(type_transport, address_point): from ReferenceDataApp.models import Airport, City try: - # if type_transport == 'avia': - # return Airport.objects.get(id=address_point).city - # else: - return City.objects.get(id=address_point) + if type_transport == 'avia': + return Airport.objects.get(id=address_point).city + else: + return City.objects.get(id=address_point) except Exception as e: msg = f'get_city_by_type_transport_and_address_point Error = {str(e)}, type_transport = {type_transport}, address_point = {address_point}' print(msg) diff --git a/RoutesApp/js_views.py b/RoutesApp/js_views.py index 9125c1e..dc81849 100644 --- a/RoutesApp/js_views.py +++ b/RoutesApp/js_views.py @@ -10,7 +10,7 @@ from django.template import loader, RequestContext from django.contrib.auth.decorators import login_required from BaseModels.mailSender import techSendMail from django.utils.translation import gettext as _ -from datetime import datetime +from datetime import datetime, timedelta from django.template.loader import render_to_string from django.urls import reverse from .forms import * @@ -41,14 +41,20 @@ def highlight_route_ajax(request): msg = _('Нет доступа к выделению') return JsonResponse({'errors': msg}) - route.highlight_color = '#FF0000' - route.save(update_fields=['highlight_color']) from SubscribesApp.funcs import get_cur_user_subscribe user_subscribe = get_cur_user_subscribe(request.user) user_subscribe.used_route_highlight_count += 1 user_subscribe.save(update_fields=['used_route_highlight_count']) + + route.highlight_color = '#FF0000' + highlight_hours = user_subscribe.get_highlight_hours() + route.highlight_end_DT = datetime.now() + timedelta(hours=highlight_hours) + route.save(update_fields=['highlight_color', 'highlight_end_DT']) + + + Dict = { 'route': route, } diff --git a/RoutesApp/migrations/0008_route_highlight_end_dt.py b/RoutesApp/migrations/0008_route_highlight_end_dt.py new file mode 100644 index 0000000..2a28d62 --- /dev/null +++ b/RoutesApp/migrations/0008_route_highlight_end_dt.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.2 on 2024-08-13 13:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('RoutesApp', '0007_rename_select_color_route_highlight_color'), + ] + + operations = [ + migrations.AddField( + model_name='route', + name='highlight_end_DT', + field=models.DateTimeField(blank=True, null=True, verbose_name='Дата и время окончания выделения'), + ), + ] diff --git a/RoutesApp/models.py b/RoutesApp/models.py index 9b4d3ac..f9d2051 100644 --- a/RoutesApp/models.py +++ b/RoutesApp/models.py @@ -71,6 +71,10 @@ class Route(BaseModel): verbose_name=_('Цвет выделения'), blank=True, null=True ) + highlight_end_DT = models.DateTimeField( + verbose_name=_('Дата и время окончания выделения'), + blank=True, null=True + ) def __str__(self): if self.name: diff --git a/SubscribesApp/admin.py b/SubscribesApp/admin.py index 5414d28..f078343 100644 --- a/SubscribesApp/admin.py +++ b/SubscribesApp/admin.py @@ -45,7 +45,8 @@ class Admin_SubscribeOption(Admin_Trans_BaseModel): (None, { 'classes': ['wide'], 'fields': ( - 'allow_route_rising_count', 'allow_route_highlight_count' + ('allow_route_rising_count',), + ('allow_route_highlight_count', 'route_highlight_hours'), ) }), ) @@ -53,6 +54,8 @@ class Admin_SubscribeOption(Admin_Trans_BaseModel): list_display = [ 'id', 'enable', 'name', + 'allow_route_rising_count', + 'allow_route_highlight_count', 'route_highlight_hours', 'order', 'modifiedDT', 'createDT' ] list_editable = ['enable'] diff --git a/SubscribesApp/migrations/0007_subscribeoption_route_highlight_hours.py b/SubscribesApp/migrations/0007_subscribeoption_route_highlight_hours.py new file mode 100644 index 0000000..c934d86 --- /dev/null +++ b/SubscribesApp/migrations/0007_subscribeoption_route_highlight_hours.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.2 on 2024-08-13 13:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('SubscribesApp', '0006_rename_allow_route_select_count_subscribeoption_allow_route_highlight_count'), + ] + + operations = [ + migrations.AddField( + model_name='subscribeoption', + name='route_highlight_hours', + field=models.IntegerField(default=24, verbose_name='Количество часов выделения цветом объявлений'), + ), + ] diff --git a/SubscribesApp/models.py b/SubscribesApp/models.py index 36c945e..476310b 100644 --- a/SubscribesApp/models.py +++ b/SubscribesApp/models.py @@ -17,8 +17,12 @@ from datetime import datetime, timedelta class SubscribeOption(BaseModel): - allow_route_rising_count = models.IntegerField(verbose_name=_('Количество поднятий объявлений') ,default=0) - allow_route_highlight_count = models.IntegerField(verbose_name=_('Количество выделений объявлений'), default=0) + allow_route_rising_count = models.IntegerField( + verbose_name=_('Количество поднятий объявлений') ,default=0) + allow_route_highlight_count = models.IntegerField( + verbose_name=_('Количество выделений объявлений'), default=0) + route_highlight_hours = models.IntegerField( + verbose_name=_('Количество часов выделения цветом объявлений'), default=24) class Meta: verbose_name = _('Опция подписки') @@ -88,6 +92,14 @@ class SubscribeForUser(BaseModel): res += f' {str(self.id)}' return res + def get_highlight_hours(self): + options = self.subscribe.options.filter( + allow_route_highlight_count__gt=0, + ) + if options: + return options[0].route_highlight_hours + return 0 + def remains_route_adding_options(self): total_data = SubscribeOption.objects.filter(