def run_email_result_task(index_name, sketch_id=None): """Create email Celery task. This task is run after all sketch analyzers are done and emails the result of all analyzers to the user who imported the data. Args: index_name: An index name. sketch_id: A sketch ID (optional). Returns: Email sent status. """ # We need to get a fake request context so that url_for() will work. with current_app.test_request_context(): searchindex = SearchIndex.query.filter_by( index_name=index_name).first() sketch = None try: to_username = searchindex.user.username except AttributeError: logging.warning('No user to send email to.') return '' if sketch_id: sketch = Sketch.query.get(sketch_id) subject = 'Timesketch: [{0:s}] is ready'.format(searchindex.name) # TODO: Use jinja templates. body = 'Your timeline [{0:s}] has been imported and is ready.'.format( searchindex.name) if sketch: view_urls = sketch.get_view_urls() view_links = [] for view_url, view_name in iter(view_urls.items()): view_links.append('<a href="{0:s}">{1:s}</a>'.format( view_url, view_name)) body = body + '<br><br><b>Sketch</b><br>{0:s}'.format( sketch.external_url) analysis_results = searchindex.description.replace('\n', '<br>') body = body + '<br><br><b>Analysis</b>{0:s}'.format( analysis_results) if view_links: body = body + '<br><br><b>Views</b><br>' + '<br>'.join( view_links) try: send_email(subject, body, to_username, use_html=True) except RuntimeError as e: return repr(e) return 'Sent email to {0:s}'.format(to_username)
def run_email_result_task(index_name, sketch_id=None): """Create email Celery task. This task is run after all sketch analyzers are done and emails the result of all analyzers to the user who imported the data. Args: index_name: An index name. sketch_id: A sketch ID (optional). Returns: Email sent status. """ # We need to get a fake request context so that url_for() will work. with current_app.test_request_context(): searchindex = SearchIndex.query.filter_by(index_name=index_name).first() sketch = None try: to_username = searchindex.user.username except AttributeError: logging.warning('No user to send email to.') return '' if sketch_id: sketch = Sketch.query.get(sketch_id) subject = 'Timesketch: [{0:s}] is ready'.format(searchindex.name) # TODO: Use jinja templates. body = 'Your timeline [{0:s}] has been imported and is ready.'.format( searchindex.name) if sketch: view_urls = sketch.get_view_urls() view_links = [] for view_url, view_name in iter(view_urls.items()): view_links.append('<a href="{0:s}">{1:s}</a>'.format( view_url, view_name)) body = body + '<br><br><b>Sketch</b><br>{0:s}'.format( sketch.external_url) analysis_results = searchindex.description.replace('\n', '<br>') body = body + '<br><br><b>Analysis</b>{0:s}'.format( analysis_results) if view_links: body = body + '<br><br><b>Views</b><br>' + '<br>'.join( view_links) try: send_email(subject, body, to_username, use_html=True) except RuntimeError as e: return repr(e) return 'Sent email to {0:s}'.format(to_username)