def room_assistance_emails(): inner = (Request.query.filter( Request.type == 'room-assistance', Request.state == RequestState.accepted).add_columns( func.jsonb_array_elements_text( Request.data['occurrences']).label('requested_at')).subquery()) aliased_event = aliased(Event, name='event') requests = (db.session.query(inner, aliased_event).join( aliased_event, aliased_event.id == inner.c.event_id).filter( aliased_event.own_room_id.isnot(None)).filter( db.cast(inner.c.requested_at, db.Date) == db.cast( now_utc(), db.Date)).all()) requests = [req._asdict() for req in requests] template = get_plugin_template_module('emails/room_assistance_emails.html', requests=requests, parse_dt=dateutil.parser.parse) recipients = RoomAssistancePlugin.settings.get( 'room_assistance_recipients') if recipients: email = make_email(from_address=config.NO_REPLY_EMAIL, to_list=recipients, template=template, html=True) send_email(email)
def conference_room_emails(): start_date, end_date = _get_start_end_date() date_filter = db.and_( db.cast(Reservation.start_dt, db.Date) >= start_date, db.cast(Reservation.start_dt, db.Date) <= end_date) start_dt = as_utc(datetime.combine(start_date, time())) end_dt = as_utc(datetime.combine(end_date, time())) events_by_room = {} for room in CERNCronjobsPlugin.settings.get('rooms'): query = (Event.query.filter(~Event.is_deleted, Event.happens_between(start_dt, end_dt), Event.own_room_id == room.id).order_by( Event.start_dt)) events_by_room[room] = _group_by_date(query) res_events_by_room = {} for room in CERNCronjobsPlugin.settings.get('reservation_rooms'): res_events_by_room[room] = _group_by_date( _get_reservations_query(date_filter, room_id=room.id)) category_ids = [ int(category['id']) for category in CERNCronjobsPlugin.settings.get('categories') ] committees = _get_category_events_query(start_dt, end_dt, category_ids) template = get_plugin_template_module( 'conference_room_email.html', events_by_room=events_by_room, res_events_by_room=res_events_by_room, committees_by_date=_group_by_date(committees)) recipients = CERNCronjobsPlugin.settings.get('conf_room_recipients') if recipients: _send_email(recipients, template)
def _make_json_response(self, data, is_event): mod = get_plugin_template_module("_results.html") return { "html": "\n".join(mod.render_result(r, is_event) for r in data["results"]), "has_more": data["has_more"], "offset": data["offset"], }
def notify_attached(room, event, user): """Notifies about an existing chatroom being attached to an event. :param room: the chatroom :param event: the event :param user: the user performing the action """ tpl = get_plugin_template_module('emails/attached.txt', chatroom=room, event=event, user=user) _send(event, tpl)
def notify_modified(room, event, user): """Notifies about the modification of a chatroom. :param room: the chatroom :param event: the event :param user: the user performing the action """ tpl = get_plugin_template_module('emails/modified.txt', chatroom=room, event=event, user=user) _send(event, tpl)
def notify_owner(plugin, vc_room): """Notifies about the deletion of a Vidyo room from the Vidyo server.""" user = vc_room.vidyo_extension.owned_by_user tpl = get_plugin_template_module('emails/remote_deleted.html', plugin=plugin, vc_room=vc_room, event=None, vc_room_event=None, user=user) _send('delete', user, plugin, None, vc_room, tpl)
def _make_json_response(self, data, is_event): mod = get_plugin_template_module('_results.html') return { 'html': '\n'.join(mod.render_result(r, is_event) for r in data['results']), 'has_more': data['has_more'], 'offset': data['offset'] }
def notify_deleted(plugin, room, room_assoc, event, user): """Notifies about the deletion of a vc_room from the system. :param room: the vc_room :param event: the event :param user: the user performing the action """ with plugin.plugin_context(): tpl = get_plugin_template_module('emails/deleted.html', plugin=plugin, vc_room=room, event=event, vc_room_event=room_assoc, user=user) _send('delete', user, plugin, event, room, tpl.get_subject(), tpl.get_body())
def notify_deleted(room, event, user, room_deleted): """Notifies about the deletion of a chatroom. :param room: the chatroom :param event: the event :param user: the user performing the action; `None` if due to event deletion :param room_deleted: if the room has been deleted from the jabber server """ tpl = get_plugin_template_module('emails/deleted.txt', chatroom=room, event=event, user=user, room_deleted=room_deleted) _send(event, tpl)
def send_email_to_assistance(request, template_name, **template_params): from indico_room_assistance.plugin import RoomAssistancePlugin to_list = RoomAssistancePlugin.settings.get('room_assistance_recipients') if not to_list: return request_start_dt = request.data['start_dt'] request_data = dict(request.data, start_dt=dateutil.parser.parse(request_start_dt)) template = get_plugin_template_module('emails/{}.html'.format(template_name), event=request.event, requested_by=request.created_by_user, request_data=request_data, **template_params) send_email(make_email(from_address=config.NO_REPLY_EMAIL, to_list=to_list, template=template, html=True))
def notify_created(plugin, room, room_assoc, event, user): """Notifies about the creation of a vc_room. :param room: the vc_room :param event: the event :param user: the user performing the action """ with plugin.plugin_context(): tpl = get_plugin_template_module('emails/created.html', plugin=plugin, vc_room=room, event=event, vc_room_event=room_assoc, user=user, linked_to_title=get_linked_to_description(room_assoc)) _send('create', user, plugin, event, room, tpl.get_subject(), tpl.get_body())
def seminar_emails(): start_date, end_date = _get_start_end_date() start_dt = as_utc(datetime.combine(start_date, time())) end_dt = as_utc(datetime.combine(end_date, time())) seminar_categories = CERNCronjobsPlugin.settings.get('seminar_categories') if not seminar_categories: return category_ids = [int(category['id']) for category in seminar_categories] query = _get_category_events_query(start_dt, end_dt, category_ids) template = get_plugin_template_module('seminar_emails.html', events_by_date=_group_by_date(query)) recipients = CERNCronjobsPlugin.settings.get('seminar_recipients') if recipients: _send_email(recipients, template)
def send_email_to_assistance(request, template_name, **template_params): from indico_room_assistance.plugin import RoomAssistancePlugin to_list = RoomAssistancePlugin.settings.get('room_assistance_recipients') if not to_list: return occurrences = [dateutil.parser.parse(occ) for occ in request.data['occurrences']] request_data = dict(request.data, occurrences=occurrences) template = get_plugin_template_module(f'emails/{template_name}.html', event=request.event, requested_by=request.created_by_user, request_data=request_data, **template_params) send_email(make_email(from_address=config.NO_REPLY_EMAIL, to_list=to_list, template=template, html=True))
def startup_assistance_emails(): reservations = _get_reservations_query( db.cast(Reservation.start_dt, db.Date) == date.today()) reservations_by_room = OrderedDict() for reservation in reservations: if reservation.room in reservations_by_room: reservations_by_room[reservation.room].append(reservation) else: reservations_by_room[reservation.room] = [reservation] template = get_plugin_template_module( 'startup_assistance_emails.html', reservations_by_room=reservations_by_room) recipients = CERNCronjobsPlugin.settings.get( 'startup_assistance_recipients') if recipients: _send_email(recipients, template)
def room_assistance_emails(): requests = (Request.query.filter( Request.type == 'room-assistance', Request.state == RequestState.accepted, Event.own_room_id.isnot(None), db.cast(Request.data['start_dt'].astext, db.Date) == db.cast(now_utc(), db.Date)).join(Event)) template = get_plugin_template_module('emails/room_assistance_emails.html', requests=requests, parse_dt=dateutil.parser.parse) recipients = RoomAssistancePlugin.settings.get( 'room_assistance_recipients') if recipients: email = make_email(from_address=config.NO_REPLY_EMAIL, to_list=recipients, template=template, html=True) send_email(email)