from datetime import datetime, timedelta, timezone from SubscribesApp.models import SubscribeForUser from TWB import settings from TWB.celery import app from django.core.mail import send_mail @app.task def check_auto_subscribe(): current_time = datetime.now() subscribes = SubscribeForUser.objects.filter(auto_continue=True) if subscribes: for subscribe in subscribes: if subscribe.paid_period_to_DT and subscribe.paid_period_to_DT <= current_time + timedelta(hours=1): user_email = subscribe.user.email subject = 'Подписка продлена!' message = 'Ваша подписка успешно продлена!' send_mail(subject, message, settings.EMAIL_HOST_USER, [user_email], fail_silently=False) else: print('Нету подписок') @app.task def subscription_expiration_check(): current_time = datetime.now() subscribes = SubscribeForUser.objects.filter(paid_period_to_DT__gte=current_time) if subscribes: for subscribe in subscribes: expiration_date = subscribe.paid_period_to_DT remaining_days = (expiration_date - current_time).days if remaining_days <= 7: message = f'Ваша подписка заканчивается через {remaining_days} дня. Пожалуйста, продлите её.' user_email = subscribe.user.email subject = 'Подписка истекает!' send_mail(subject, message, settings.EMAIL_HOST_USER, [user_email], fail_silently=False) else: print('Нету подписок')