(index_name, sketch_id=None)
return 'Sent email to {0:s}'.format(to_username)
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.
Create email Celery task.
Create email Celery task .
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:
            logger.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 ) : # 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 : logger . 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 )