def export_speakers_csv_task(self, event_id): speakers = db.session.query(Speaker).filter_by(event_id=event_id) try: filedir = os.path.join(current_app.config.get('BASE_DIR'), 'static/uploads/temp/') if not os.path.isdir(filedir): os.makedirs(filedir) filename = "speakers-{}.csv".format(uuid.uuid1().hex) file_path = os.path.join(filedir, filename) with open(file_path, "w") as temp_file: writer = csv.writer(temp_file) from app.api.helpers.csv_jobs_util import export_speakers_csv content = export_speakers_csv(speakers) for row in content: writer.writerow(row) speakers_csv_file = UploadedFile(file_path=file_path, filename=filename) speakers_csv_url = upload( speakers_csv_file, UPLOAD_PATHS['exports-temp']['csv'].format(event_id=event_id, identifier='')) result = {'download_url': speakers_csv_url} except Exception as e: result = {'__error': True, 'result': str(e)} logging.error('Error in exporting speakers list as CSV') return result
def export_speakers_csv_task(self, event_id): speakers = db.session.query(Speaker).filter_by(event_id=event_id) try: filedir = os.path.join(current_app.config.get('BASE_DIR'), 'static/uploads/temp/') if not os.path.isdir(filedir): os.makedirs(filedir) filename = "speakers-{}.csv".format(uuid.uuid1().hex) file_path = os.path.join(filedir, filename) with open(file_path, "w") as temp_file: writer = csv.writer(temp_file) from app.api.helpers.csv_jobs_util import export_speakers_csv content = export_speakers_csv(speakers) for row in content: writer.writerow(row) speakers_csv_file = UploadedFile(file_path=file_path, filename=filename) speakers_csv_url = upload(speakers_csv_file, UPLOAD_PATHS['exports-temp']['csv'].format(event_id=event_id, identifier='')) result = { 'download_url': speakers_csv_url } except Exception as e: print(traceback.format_exc()) result = {'__error': True, 'result': str(e)} return result
def export_speakers_csv_task(self, event_id, status='all'): if status not in [ 'all', 'pending', 'accepted', 'confirmed', 'rejected', 'withdrawn', 'canceled', 'without_session', ]: status = 'all' if status == 'without_session': speakers = Speaker.query.filter( Speaker.sessions.is_(None), Speaker.event_id == event_id, Speaker.deleted_at.is_(None), ).all() elif status == 'all': speakers = Speaker.query.filter( Speaker.event_id == event_id, Speaker.deleted_at.is_(None) ).all() else: speakers = Speaker.query.filter( Speaker.sessions.any(state=status), Speaker.event_id == event_id, Speaker.deleted_at.is_(None), ).all() try: filedir = os.path.join(current_app.config.get('BASE_DIR'), 'static/uploads/temp/') if not os.path.isdir(filedir): os.makedirs(filedir) filename = f"speakers-{uuid.uuid1().hex}.csv" file_path = os.path.join(filedir, filename) with open(file_path, "w") as temp_file: writer = csv.writer(temp_file) from app.api.helpers.csv_jobs_util import export_speakers_csv content = export_speakers_csv(speakers) for row in content: writer.writerow(row) speakers_csv_file = UploadedFile(file_path=file_path, filename=filename) speakers_csv_url = upload( speakers_csv_file, UPLOAD_PATHS['exports-temp']['csv'].format(event_id=event_id, identifier=''), ) result = {'download_url': speakers_csv_url} except Exception as e: result = {'__error': True, 'result': str(e)} logger.exception('Error in exporting speakers list as CSV') return result