Files
edx-platform/openedx/features/calendar_sync/signals.py
Awais Qureshi 7ee49390bb BOM-2334
Apply pylint-amnesty.
2021-02-08 20:12:45 +05:00

36 lines
1.4 KiB
Python

"""
Signal handler for calendar sync models
"""
from django.db.models.signals import post_save
from django.dispatch.dispatcher import receiver
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
from openedx.features.course_experience import CALENDAR_SYNC_FLAG, RELATIVE_DATES_FLAG
from .ics import generate_ics_files_for_user_course
from .models import UserCalendarSyncConfig
from .utils import send_email_with_attachment
@receiver(post_save, sender=UserCalendarSyncConfig)
def handle_calendar_sync_email(sender, instance, created, **kwargs): # lint-amnesty, pylint: disable=missing-function-docstring, unused-argument
if (
CALENDAR_SYNC_FLAG.is_enabled(instance.course_key) and
RELATIVE_DATES_FLAG.is_enabled(instance.course_key) and
created
):
user = instance.user
email = user.email
course_overview = CourseOverview.objects.get(id=instance.course_key)
ics_files = generate_ics_files_for_user_course(course_overview, user, instance)
send_email_with_attachment(
[email],
ics_files,
course_overview.display_name,
created
)
post_save.disconnect(handle_calendar_sync_email, sender=UserCalendarSyncConfig)
instance.ics_sequence = instance.ics_sequence + 1
instance.save()
post_save.connect(handle_calendar_sync_email, sender=UserCalendarSyncConfig)