Я использую python apscheduler в django для напоминания пользователям о созданных уведомлениях. Я застрял на попытке сделать дату, когда они хотят получить напоминание, динамической.
Моя задача - создать напоминания для уведомлений. При жестком кодировании я получаю напоминание на cli из API, но я хочу сделать его динамическим, чтобы пользователи могли выбирать дату или время, когда они хотят получить напоминание о своем уведомлении.
Помогите, пожалуйста!
Это файл updater.py
from datetime import datetime
from apscheduler.schedulers.background import BackgroundScheduler
from .jobs import notice_reminder
def notice_me():
notice_remind = notice_reminder.newly_created_notice_reminder
if notice_remind:
print(notice_remind)
else:
print("No recent notice reminders!")
"""
The dummy data
"""
dynamic_data = [
{
"title": "Notice Reminder",
"schedule_time": "00:50:00",
"schedule_date": "10-2-2021"
}
]
print(dynamic_data[0].get("schedule_date"))
# Get Date and Time Dynamically
dynamic_data = notice_reminder.newly_created_notice_reminder if any(notice_reminder.newly_created_notice_reminder) else "dynamic_data"
dynamic_date_time = f"{dynamic_data[0].get('schedule_date')} {dynamic_data[0].get('schedule_time')}"
print(f"Date Time: {dynamic_date_time}")
dynamic_date = datetime.strptime(dynamic_date_time, '%m-%d-%Y %H:%M:%S')
print(f"Dynamic Date Time: {dynamic_date}")
def start():
scheduler = BackgroundScheduler()
scheduler.add_job(
notice_me,
"date",
run_date = f"{dynamic_date}"
)
scheduler.start()
Это мой файл сериализатора для опции view notices
from rest_framework import serializers
from django.utils import timezone
from datetime import date
# Time Zone
time = timezone.now()
# Get Current Time
current_time = f"{time.hour + 1}:{time.minute}:{time.second}"
# Get Current Date
current_date = f"{time.month}-{time.day}-{time.year}"
class NoticeReminderSerializer(serializers.Serializer):
title = serializers.CharField(max_length=255)
time_created = serializers.TimeField(default=current_date)
date_created = serializers.DateField(default=current_time)
schedule_time = serializers.TimeField()
schedule_date = serializers.DateField()
Это файл views.py для уведомлений о напоминаниях.
class NoticeReminder(views.APIView):
'''
For creating reminders.
'''
newly_created_notice_reminder = [] # stores newly created notice reminder to a list
def post(self, request, org_id):
org_id=request.GET.get('org')
serializer = NoticeReminderSerializer(data=request.data)
if serializer.is_valid():
db.save(
"noticeboard",
org_id,
notice_data=serializer.data
)
# Appends serializer data to newly_created_notice_reminder list
created_notice_reminder = serializer.data
self.newly_created_notice_reminder.append(created_notice_reminder)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)