def send_after_event_mail():
    from app import current_app as app
    with app.app_context():
        events = Event.query.all()
        upcoming_events = get_upcoming_events()
        upcoming_event_links = "<ul>"
        for upcoming_event in upcoming_events:
            frontend_url = get_settings()['frontend_url']
            upcoming_event_links += "<li><a href='{}/events/{}'>{}</a></li>" \
                .format(frontend_url, upcoming_event.id, upcoming_event.name)
        upcoming_event_links += "</ul>"
        for event in events:
            organizers = get_user_event_roles_by_role_name(
                event.id, 'organizer')
            speakers = Speaker.query.filter_by(event_id=event.id,
                                               deleted_at=None).all()
            current_time = datetime.datetime.now(pytz.timezone(event.timezone))
            time_difference = current_time - event.ends_at
            time_difference_minutes = (time_difference.days * 24 * 60) + \
                (time_difference.seconds / 60)
            if current_time > event.ends_at and time_difference_minutes < 1440:
                for speaker in speakers:
                    send_email_after_event(speaker.user.email, event.name,
                                           upcoming_event_links)
                    send_notif_after_event(speaker.user, event.name)
                for organizer in organizers:
                    send_email_after_event(organizer.user.email, event.name,
                                           upcoming_event_links)
                    send_notif_after_event(organizer.user, event.name)
def send_after_event_mail():
    from app import current_app as app
    with app.app_context():
        events = Event.query.all()
        upcoming_events = get_upcoming_events()
        upcoming_event_links = "<ul>"
        for upcoming_event in upcoming_events:
            frontend_url = get_settings()['frontend_url']
            upcoming_event_links += "<li><a href='{}/events/{}'>{}</a></li>" \
                .format(frontend_url, upcoming_event.id, upcoming_event.name)
        upcoming_event_links += "</ul>"
        for event in events:
            organizers = get_user_event_roles_by_role_name(event.id, 'organizer')
            speakers = get_user_event_roles_by_role_name(event.id, 'speaker')
            current_time = datetime.datetime.now(pytz.timezone(event.timezone))
            time_difference = current_time - event.ends_at
            time_difference_minutes = (time_difference.days * 24 * 60) + \
                (time_difference.seconds / 60)
            if current_time > event.ends_at and time_difference_minutes < 1440:
                for speaker in speakers:
                    send_email_after_event(speaker.user.email, event.name, upcoming_event_links)
                    send_notif_after_event(speaker.user, event.name)
                for organizer in organizers:
                    send_email_after_event(organizer.user.email, event.name, upcoming_event_links)
                    send_notif_after_event(organizer.user.email, event.name)
Exemple #3
0
def send_after_event_mail():
    from app.instance import current_app as app

    with app.app_context():
        events = Event.query.filter_by(state='published', deleted_at=None).all()
        for event in events:
            organizers = get_user_event_roles_by_role_name(event.id, 'organizer')
            speakers = Speaker.query.filter_by(event_id=event.id, deleted_at=None).all()
            owner = get_user_event_roles_by_role_name(event.id, 'owner').first()
            current_time = datetime.datetime.now(pytz.timezone(event.timezone))
            time_difference = current_time - event.ends_at
            time_difference_minutes = (time_difference.days * 24 * 60) + (
                time_difference.seconds / 60
            )
            frontend_url = get_settings()['frontend_url']
            if current_time > event.ends_at and time_difference_minutes < 1440:
                unique_emails = set()
                user_objects = []
                for speaker in speakers:
                    if not speaker.is_email_overridden:
                        unique_emails.add(speaker.user.email)
                        user_objects.append(speaker.user)
                for organizer in organizers:
                    unique_emails.add(organizer.user.email)
                    user_objects.append(organizer.user)
                if owner:
                    unique_emails.add(owner.user.email)
                    user_objects.append(owner.user)
                for email in unique_emails:
                    send_email_after_event(email, event.name, frontend_url)
                # Unique user's dict based on their id.
                unique_users_dict = make_dict(user_objects, "id")
                for user in unique_users_dict.values():
                    send_notif_after_event(user, event.name)
def send_after_event_mail():
    current_time = datetime.datetime.now()
    events = (
        Event.query.filter_by(state='published', deleted_at=None)
        .filter(
            Event.ends_at < current_time,
            current_time - Event.ends_at < datetime.timedelta(days=1),
        )
        .all()
    )
    for event in events:
        organizers = get_user_event_roles_by_role_name(event.id, 'organizer')
        speakers = Speaker.query.filter_by(event_id=event.id, deleted_at=None).all()
        owner = get_user_event_roles_by_role_name(event.id, 'owner').first()
        frontend_url = get_settings()['frontend_url']
        unique_emails = set()
        user_objects = []
        for speaker in speakers:
            if not speaker.is_email_overridden:
                unique_emails.add(speaker.user.email)
                user_objects.append(speaker.user)
        for organizer in organizers:
            unique_emails.add(organizer.user.email)
            user_objects.append(organizer.user)
        if owner:
            unique_emails.add(owner.user.email)
            user_objects.append(owner.user)
        for email in unique_emails:
            send_email_after_event(email, event.name, frontend_url)
        # Unique user's dict based on their id.
        unique_users_dict = make_dict(user_objects, "id")
        for user in unique_users_dict.values():
            send_notif_after_event(user, event.name)
def test_send_notif_after_event(user):
    """Method to test notification after conclusion"""
    send_notif_after_event(user, 'Apocalypse')
    notification = Notification.query.first()
    assert notification.title == 'Event Apocalypse completed'
    assert (
        notification.message ==
        'The event <strong>Apocalypse</strong> has been completed.<br><br>')
Exemple #6
0
def send_after_event_mail():
    from app.instance import current_app as app
    with app.app_context():
        events = Event.query.filter_by(state='published',
                                       deleted_at=None).all()
        for event in events:
            organizers = get_user_event_roles_by_role_name(
                event.id, 'organizer')
            speakers = Speaker.query.filter_by(event_id=event.id,
                                               deleted_at=None).all()
            owner = get_user_event_roles_by_role_name(event.id,
                                                      'owner').first()
            current_time = datetime.datetime.now(pytz.timezone(event.timezone))
            time_difference = current_time - event.ends_at
            time_difference_minutes = (time_difference.days * 24 * 60) + \
                (time_difference.seconds / 60)
            frontend_url = get_settings()['frontend_url']
            if current_time > event.ends_at and time_difference_minutes < 1440:
                for speaker in speakers:
                    if not speaker.is_email_overridden:
                        send_email_after_event(speaker.user.email, event.name,
                                               frontend_url)
                        send_notif_after_event(speaker.user, event.name)
                for organizer in organizers:
                    send_email_after_event(organizer.user.email, event.name,
                                           frontend_url)
                    send_notif_after_event(organizer.user, event.name)
                if owner:
                    send_email_after_event(owner.user.email, event.name,
                                           frontend_url)
                    send_notif_after_event(owner.user, event.name)