1.1.3 autoextension and autofinish subscribes

This commit is contained in:
SDE
2024-05-31 15:03:15 +03:00
parent 11bbfd0e73
commit dbfc39639b
6 changed files with 89 additions and 4 deletions

View File

@@ -4,6 +4,38 @@ from django.utils.translation import get_language, activate
from datetime import datetime, timedelta
import json
def extension_free_subscribes():
subscribe = get_null_price_subscribe()
if not subscribe:
return None
user_subscribes = SubscribeForUser.objects.filter(
enable=True,
subscribe=subscribe
)
for user_subscribe in user_subscribes:
user_subscribe.extension()
msg = f'{str(user_subscribe)} free subscribe extended'
print(msg)
return True
def finish_user_subscribes():
finished_user_subscribes = SubscribeForUser.objects.filter(
enable=True, paid_period_to_DT__lt=datetime.now()
)
finished_user_subscribes.update(enable=False)
for finished_user_subscribe in finished_user_subscribes:
msg = f'{str(finished_user_subscribe)} subscribe finished and switch to free'
print(msg)
subscribe_user_to_null_price_subscribe(finished_user_subscribe.user)
return True
def create_subscribe_by_data(create_kwargs):
subscribe = create_kwargs['subscribe']
create_kwargs.update({

View File

@@ -2,7 +2,7 @@ from django.db import models
from BaseModels.base_models import BaseModel
from django.utils.translation import gettext_lazy as _
from colorfield.fields import ColorField
from datetime import datetime, timedelta
# options_list 29.05.2024
# СМС уведомления
@@ -80,9 +80,28 @@ class SubscribeForUser(BaseModel):
res += f' {str(self.id)}'
return res
def activate(self):
def get_days_to_finish(self):
days = (self.paid_period_to_DT - datetime.now()).days
return days
def extension(self, order=None):
if not order and self.subscribe.price > 0:
return {'error': 'not paid'}
if self.subscribe.price == 0:
self.activate(
paid_period_from_DT=datetime.now(),
paid_period_to_DT=datetime.now() + timedelta(hours=self.subscribe.period)
)
def activate(self, paid_period_from_DT=None, paid_period_to_DT=None):
self.enable = True
self.save(update_fields=['enable'])
if paid_period_from_DT:
self.paid_period_from_DT = paid_period_from_DT
if paid_period_to_DT:
self.paid_period_to_DT = paid_period_to_DT
self.save()
subscribes_for_user = SubscribeForUser.objects.filter(
user=self.user