Ejemplo n.º 1
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)
Ejemplo n.º 2
0
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()
        unique_emails = set()
        unique_emails_speakers = set()
        for speaker in speakers:
            if not speaker.is_email_overridden:
                unique_emails_speakers.add(speaker.user.email)

        for organizer in organizers:
            unique_emails.add(organizer.user.email)

        if owner:
            unique_emails.add(owner.user.email)

        for email in unique_emails:
            send_email_after_event(email, event.name)

        for email in unique_emails_speakers:
            send_email_after_event_speaker(email, event.name)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
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)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
def get_emails_for_sales_end_email(event):
    organizers = get_user_event_roles_by_role_name(event.id, 'organizer')
    owner = get_user_event_roles_by_role_name(event.id, 'owner').first()
    unique_emails = set()
    for organizer in organizers:
        unique_emails.add(organizer.user.email)
    if owner:
        unique_emails.add(owner.user.email)

    emails = list(unique_emails)

    return emails
Ejemplo n.º 8
0
def send_event_fee_notification():
    from app.instance import current_app as app
    with app.app_context():
        events = Event.query.filter_by(deleted_at=None,
                                       state='published').all()
        for event in events:
            latest_invoice = EventInvoice.query.filter_by(
                event_id=event.id).order_by(
                    EventInvoice.created_at.desc()).first()

            if latest_invoice:
                orders = Order.query \
                    .filter_by(event_id=event.id) \
                    .filter_by(status='completed') \
                    .filter(Order.completed_at > latest_invoice.created_at).all()
            else:
                orders = Order.query.filter_by(event_id=event.id).filter_by(
                    status='completed').all()

            fee_total = 0
            for order in orders:
                for ticket in order.tickets:
                    if order.paid_via != 'free' and order.amount > 0 and ticket.price > 0:
                        fee = ticket.price * (
                            get_fee(event.payment_country,
                                    order.event.payment_currency) / 100.0)
                        fee_total += fee

            if fee_total > 0:
                owner = get_user_event_roles_by_role_name(event.id,
                                                          'owner').first()
                new_invoice = EventInvoice(amount=fee_total,
                                           event_id=event.id,
                                           user_id=owner.user.id)

                if event.discount_code_id and event.discount_code:
                    r = relativedelta(datetime.datetime.utcnow(),
                                      event.created_at)
                    if r <= event.discount_code.valid_till:
                        new_invoice.amount = fee_total - \
                            (fee_total * (event.discount_code.value / 100.0))
                        new_invoice.discount_code_id = event.discount_code_id

                save_to_db(new_invoice)
                prev_month = monthdelta(new_invoice.created_at, 1).strftime(
                    "%b %Y")  # Displayed as Aug 2016
                app_name = get_settings()['app_name']
                frontend_url = get_settings()['frontend_url']
                link = '{}/invoices/{}'.format(frontend_url,
                                               new_invoice.identifier)
                send_email_for_monthly_fee_payment(new_invoice.user.email,
                                                   event.name, prev_month,
                                                   new_invoice.amount,
                                                   app_name, link)
                send_notif_monthly_fee_payment(new_invoice.user, event.name,
                                               prev_month, new_invoice.amount,
                                               app_name, link,
                                               new_invoice.event_id)
def send_event_fee_notification():
    from app import current_app as app
    with app.app_context():
        events = Event.query.all()
        for event in events:
            latest_invoice = EventInvoice.query.filter_by(
                event_id=event.id).order_by(EventInvoice.created_at.desc()).first()

            if latest_invoice:
                orders = Order.query \
                    .filter_by(event_id=event.id) \
                    .filter_by(status='completed') \
                    .filter(Order.completed_at > latest_invoice.created_at).all()
            else:
                orders = Order.query.filter_by(
                    event_id=event.id).filter_by(status='completed').all()

            fee_total = 0
            for order in orders:
                for order_ticket in order.tickets:
                    ticket = safe_query(db, Ticket, 'id', order_ticket.ticket_id, 'ticket_id')
                    if order.paid_via != 'free' and order.amount > 0 and ticket.price > 0:
                        fee = ticket.price * (get_fee(order.event.payment_currency) / 100.0)
                        fee_total += fee

            if fee_total > 0:
                organizer = get_user_event_roles_by_role_name(event.id, 'organizer').first()
                new_invoice = EventInvoice(
                    amount=fee_total, event_id=event.id, user_id=organizer.user.id)

                if event.discount_code_id and event.discount_code:
                    r = relativedelta(datetime.utcnow(), event.created_at)
                    if r <= event.discount_code.valid_till:
                        new_invoice.amount = fee_total - \
                            (fee_total * (event.discount_code.value / 100.0))
                        new_invoice.discount_code_id = event.discount_code_id

                save_to_db(new_invoice)
                prev_month = monthdelta(new_invoice.created_at, 1).strftime(
                    "%b %Y")  # Displayed as Aug 2016
                app_name = get_settings()['app_name']
                frontend_url = get_settings()['frontend_url']
                link = '{}/invoices/{}'.format(frontend_url, new_invoice.identifier)
                send_email_for_monthly_fee_payment(new_invoice.user.email,
                                                   event.name,
                                                   prev_month,
                                                   new_invoice.amount,
                                                   app_name,
                                                   link)
                send_notif_monthly_fee_payment(new_invoice.user,
                                               event.name,
                                               prev_month,
                                               new_invoice.amount,
                                               app_name,
                                               link,
                                               new_invoice.event_id)