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)
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)
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)
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)
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 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
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)