1.1.4 rising and select for routes by subscribe
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user