Я использую 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)



Вернуться на верх