예제 #1
0
def send_email(query_id, email_address_list):
    logger.info("Sending email for query %s..." % query_id)
    q = Query.objects.get(pk=query_id)
    exporter = get_exporter_class('csv')(q)

    try:
        subj = 'Report "%s" is ready' % q.title
        if app_settings.EMAIL_SAVE_TO_S3:
            url = s3_upload('%s.csv' % random_part, exporter.get_file_output())
            msg = 'Download results:\n%s' % url
            attachment_data = None
        else:
            msg = 'Results in attachment:\n'
            attachment_data = exporter.get_output()

    except DatabaseError as e:
        subj = 'Error running report %s' % q.title
        msg = 'Error: %s\nPlease contact an administrator' % e
        logger.warning('%s: %s' % (subj, e))

    email = EmailMessage(subj, msg, app_settings.FROM_EMAIL,
                         email_address_list)
    if attachment_data:
        email.attach(
            '%s.%s.csv' % (datetime.now().strftime("%Y-%d-%m.%H-%M"), q.title),
            attachment_data, 'text/csv')

    email.send()
예제 #2
0
def execute_query(query_id, email_address):
    q = Query.objects.get(pk=query_id)

    if app_settings.EMAIL_BASE_TEMPLATE:
        email_content = get_template(app_settings.EMAIL_BASE_TEMPLATE).render({
            'title':
            '[SQL Explorer] Sua consulta está rodando...',
            'main_content':
            '%s está rodando e estará em sua caixa de entrada em breve!' %
            q.title
        })
    else:
        email_content = '%s está rodando e estará em sua caixa de entrada em breve!' % q.title

    email = EmailMessage('[SQL Explorer] Sua consulta está rodando...',
                         email_content, app_settings.FROM_EMAIL,
                         [email_address])
    email.content_subtype = "html"  # O conteúdo principal agora está em text/html
    email.send()
    exporter = get_exporter_class('csv')(q)
    try:
        output_file = exporter.get_file_output()
        output_file.seek(0)
        url = s3_upload('%s.csv' % q.title.replace(' ', '_'),
                        BytesIO(output_file.read().encode('utf-8')))

        if app_settings.EMAIL_BASE_TEMPLATE:
            email_content = get_template(
                app_settings.EMAIL_BASE_TEMPLATE).render({
                    'title':
                    '[SQL Explorer] Relatório "%s" está pronto' % q.title,
                    'main_content':
                    'Baixe os resultados:\n\r%s' % url
                })
        else:
            email_content = 'Baixe os resultados:\n\r%s' % url
        subj = '[SQL Explorer] Relatório "%s" está pronto' % q.title

    except DatabaseError as e:
        if app_settings.EMAIL_BASE_TEMPLATE:
            email_content = get_template(
                app_settings.EMAIL_BASE_TEMPLATE).render({
                    'title':
                    '[SQL Explorer] Erro ao gerar relatorio %s' % q.title,
                    'main_content':
                    'Erro: %s\n Entre em contato com um administrator' % e
                })
        else:
            email_content = 'Erro: %s\n Entre em contato com um administrator' % e
        subj = '[SQL Explorer] Erro ao gerar relatorio %s' % q.title

        logger.warning('%s: %s' % (subj, e))
    email = EmailMessage(subj, email_content, app_settings.FROM_EMAIL,
                         [email_address])
    email.content_subtype = "html"  # O conteúdo principal agora está em text/html
    email.send()
예제 #3
0
def execute_query(query_id, email_address):
    q = Query.objects.get(pk=query_id)
    exporter = get_exporter_class('csv')(q)
    random_part = ''.join(
        random.choice(string.ascii_uppercase + string.digits)
        for _ in range(20))
    url = s3_upload('%s.csv' % random_part, exporter.get_file_output())

    subj = '[SQL Explorer] Report "%s" is ready' % q.title
    msg = 'Download results:\n\r%s' % url

    send_mail(subj, msg, app_settings.FROM_EMAIL, [email_address])
예제 #4
0
def snapshot_query(query_id):
    try:
        logger.info("Starting snapshot for query %s..." % query_id)
        q = Query.objects.get(pk=query_id)
        exporter = get_exporter_class('csv')(q)
        k = 'query-%s/snap-%s.csv' % (q.id, date.today().strftime('%Y%m%d-%H:%M:%S'))
        logger.info("Uploading snapshot for query %s as %s..." % (query_id, k))
        url = s3_upload(k, exporter.get_file_output())
        logger.info("Done uploading snapshot for query %s. URL: %s" % (query_id, url))
    except Exception as e:
        logger.warning("Failed to snapshot query %s (%s). Retrying..." % (query_id, e))
        snapshot_query.retry()
예제 #5
0
def snapshot_query(query_id):
    try:
        logger.info("Starting snapshot for query %s..." % query_id)
        q = Query.objects.get(pk=query_id)
        exporter = get_exporter_class('csv')(q)
        k = 'query-%s/snap-%s.csv' % (q.id, date.today().strftime('%Y%m%d-%H:%M:%S'))
        logger.info("Uploading snapshot for query %s as %s..." % (query_id, k))
        url = s3_upload(k, exporter.get_file_output())
        logger.info("Done uploading snapshot for query %s. URL: %s" % (query_id, url))
    except Exception as e:
        logger.warning("Failed to snapshot query %s (%s). Retrying..." % (query_id, e.message))
        snapshot_query.retry()
예제 #6
0
def snapshot_query(query_id):
    try:
        logger.info(f"Starting snapshot for query {query_id}...")
        q = Query.objects.get(pk=query_id)
        exporter = get_exporter_class('csv')(q)
        k = 'query-{}/snap-{}.csv'.format(
            q.id,
            date.today().strftime('%Y%m%d-%H:%M:%S'))
        logger.info(f"Uploading snapshot for query {query_id} as {k}...")
        url = s3_upload(k, exporter.get_file_output())
        logger.info(
            f"Done uploading snapshot for query {query_id}. URL: {url}")
    except Exception as e:
        logger.warning(
            f"Failed to snapshot query {query_id} ({e}). Retrying...")
        snapshot_query.retry()
예제 #7
0
def execute_query(query_id, email_address):
    q = Query.objects.get(pk=query_id)
    send_mail('[SQL Explorer] Your query is running...',
              '%s is running and should be in your inbox soon!' % q.title,
              app_settings.FROM_EMAIL,
              [email_address])

    exporter = get_exporter_class('csv')(q)
    random_part = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(20))
    try:
        url = s3_upload('%s.csv' % random_part, exporter.get_file_output())
        subj = '[SQL Explorer] Report "%s" is ready' % q.title
        msg = 'Download results:\n\r%s' % url
    except DatabaseError as e:
        subj = '[SQL Explorer] Error running report %s' % q.title
        msg = 'Error: %s\nPlease contact an administrator' %  e
        logger.warning('%s: %s' % (subj, e))
    send_mail(subj, msg, app_settings.FROM_EMAIL, [email_address])
예제 #8
0
def execute_query(query_id, email_address):
    q = Query.objects.get(pk=query_id)
    send_mail('[SQL Explorer] Your query is running...',
              '%s is running and should be in your inbox soon!' % q.title,
              app_settings.FROM_EMAIL,
              [email_address])

    exporter = get_exporter_class('csv')(q)
    random_part = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(20))
    try:
        url = s3_upload('%s.csv' % random_part, exporter.get_file_output())
        subj = '[SQL Explorer] Report "%s" is ready' % q.title
        msg = 'Download results:\n\r%s' % url
    except DatabaseError as e:
        subj = '[SQL Explorer] Error running report %s' % q.title
        msg = 'Error: %s\nPlease contact an administrator' %  e
        logger.warning('%s: %s' % (subj, e))
    send_mail(subj, msg, app_settings.FROM_EMAIL, [email_address])
예제 #9
0
def execute_query(query_id, email_address):
    q = Query.objects.get(pk=query_id)
    send_mail('[SQL Explorer] Your query is running...',
              f'{q.title} is running and should be in your inbox soon!',
              app_settings.FROM_EMAIL, [email_address])

    exporter = get_exporter_class('csv')(q)
    random_part = ''.join(
        random.choice(string.ascii_uppercase + string.digits)
        for _ in range(20))
    try:
        url = s3_upload(f'{random_part}.csv', exporter.get_file_output())
        subj = f'[SQL Explorer] Report "{q.title}" is ready'
        msg = f'Download results:\n\r{url}'
    except DatabaseError as e:
        subj = f'[SQL Explorer] Error running report {q.title}'
        msg = f'Error: {e}\nPlease contact an administrator'
        logger.warning(f'{subj}: {e}')
    send_mail(subj, msg, app_settings.FROM_EMAIL, [email_address])