1.1.4 rising and select for routes by subscribe
This commit is contained in:
@@ -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