#python #django
#python #django
Вопрос:
Я пытаюсь создать сервис для отправки электронной почты, если expiration_datetime составляет менее недели. То, что я хочу сделать, это отправить только один раз и не повторять. я не уверен, что мне делать
Модели:
class License(models.Model):
PACKAGE_CHOISES = (
('Production', 'Production'),
('Evaluation', 'Evaluation'),
)
LICENSE_CHOISES = (
('js', 'Javascript_sdk'),
('ios', 'Ios_sdk'),
('android', 'Android_sdk'),
)
client = models.ForeignKey('Client', on_delete=models.CASCADE)
package = models.CharField(max_length=15, choices=PACKAGE_CHOISES, blank=True, null=True)
license_type = models.CharField(max_length=15, choices=LICENSE_CHOISES, blank=True, null=True)
created_datetime = models.DateTimeField(auto_now=True)
expiration_datetime = models.DateTimeField(default=get_default_license_expiration)
И вот сервис, который я пытаюсь создать:
def process_licenses():
client = Client.objects.all()
licesens = License.objects.all()
clients_name = []
hoje = datetime.today() - timedelta(days=7)
for date in licesens:
if hoje >= date.expiration_datetime:
clients_name.append(date.client)
for name in clients_name:
if name in client:
email = EmailMessage(
'Test',
'hi',
settings.EMAIL_HOST_USER,
[name.admin_poc],
)
email.fail_silently=False
email.send()
time.sleep(30)
Ответ №1:
Добавьте этот столбец в модель лицензии
is_send = models.BooleanField(default=False, blank=True, null=True)
for date in licesens:
if hoje >= date.expiration_datetime and is_send is False:
clients_name.append(date.client)
license_instance = License.objects.get(pk=date.pk)
license_instance.is_send = True
license_instance.save()