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