1.1.4 rising and select for routes by subscribe

This commit is contained in:
SDE
2024-06-02 17:07:53 +03:00
parent dbfc39639b
commit 69373925cd
4 changed files with 36 additions and 1 deletions

View File

@@ -16,7 +16,6 @@ from datetime import datetime
def user_name_str(self):
return f'{self.last_name} {self.first_name}'
User.add_to_class("__str__", user_name_str)

View File

@@ -134,6 +134,11 @@ def get_profile_my_routes_page_content_html(request):
print(msg)
return msg
from SubscribesApp.funcs import get_cur_user_subscribe
user_subscribe = get_cur_user_subscribe(request.user)
if user_subscribe:
routes_Dict.update(user_subscribe.remains_route_adding_options())
html = render_to_string('blocks/profile/b_my_routes.html', routes_Dict, request=request)
return html

View File

@@ -42,6 +42,12 @@ class Admin_SubscribeOption(Admin_Trans_BaseModel):
'enable'
)
}),
(None, {
'classes': ['wide'],
'fields': (
'allow_route_rising_count', 'allow_route_select_count'
)
}),
)
list_display = [
@@ -76,6 +82,7 @@ class Admin_SubscribeForUser(Admin_Trans_BaseModel):
list_display = [
'id', 'enable',
'name', 'user', 'subscribe',
'used_route_rising_count', 'used_route_select_count',
'last_paid_DT', 'paid_period_from_DT', 'paid_period_to_DT',
'auto_continue', 'receive_finish_subscribe_msg',
'order', 'modifiedDT', 'createDT'

View File

@@ -1,4 +1,6 @@
from django.db import models
from django.db.models import Count, Sum, F
from django.db.models.functions import Coalesce
from BaseModels.base_models import BaseModel
from django.utils.translation import gettext_lazy as _
from colorfield.fields import ColorField
@@ -15,6 +17,9 @@ from datetime import datetime, timedelta
class SubscribeOption(BaseModel):
allow_route_rising_count = models.IntegerField(verbose_name=_('Количество поднятий объявлений') ,default=0)
allow_route_select_count = models.IntegerField(verbose_name=_('Количество выделений объявлений'), default=0)
class Meta:
verbose_name = _('Опция подписки')
verbose_name_plural = _('Опции подписки')
@@ -65,6 +70,9 @@ class SubscribeForUser(BaseModel):
receive_finish_subscribe_msg = models.BooleanField(
default=False, verbose_name=_('Получать сообщения о окончании периода'))
used_route_rising_count = models.IntegerField(verbose_name=_('Использовано поднятий объявлений'), default=0)
used_route_select_count = models.IntegerField(verbose_name=_('Использовано выделений объявлений'), default=0)
class Meta:
verbose_name = _('Пользовательская подписка')
verbose_name_plural = _('Пользовательские подписки')
@@ -80,6 +88,22 @@ class SubscribeForUser(BaseModel):
res += f' {str(self.id)}'
return res
def remains_route_adding_options(self):
total_data = SubscribeOption.objects.filter(
enable=True, rel_subscribes_for_option=self.subscribe
).aggregate(
total_route_rising_count = Coalesce(Sum('allow_route_rising_count'), 0),
total_route_select_count = Coalesce(Sum('allow_route_select_count'), 0),
)
total_data.update({
'used_route_rising_count': self.used_route_rising_count,
'used_route_select_count': self.used_route_select_count,
'remains_route_rising_count': total_data['total_route_rising_count'] - self.used_route_rising_count,
'remains_route_select_count': total_data['total_route_select_count'] - self.used_route_select_count,
})
return total_data
def get_days_to_finish(self):
days = (self.paid_period_to_DT - datetime.now()).days
return days