Skip to content

Commit 5168992

Browse files
hotfix: CSV Export Error (#6482)
hotfix: CSV Export Error
2 parents 43ac5c6 + f8cdfdd commit 5168992

File tree

7 files changed

+46
-28
lines changed

7 files changed

+46
-28
lines changed

app/__init__.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@
66
import sys
77
from flask import Flask, json, make_response
88
from flask_celeryext import FlaskCeleryExt
9+
import sentry_sdk
10+
from sentry_sdk.integrations.flask import FlaskIntegration
11+
from sentry_sdk.integrations.celery import CeleryIntegration
12+
from sentry_sdk.integrations.redis import RedisIntegration
13+
from sentry_sdk.integrations.sqlalchemy import SqlalchemyIntegration
14+
915
from app.settings import get_settings, get_setts
1016
from flask_migrate import Migrate, MigrateCommand
1117
from flask_script import Manager
@@ -42,8 +48,6 @@
4248
from app.views.redis_store import redis_store
4349
from app.views.celery_ import celery
4450
from app.templates.flask_ext.jinja.filters import init_filters
45-
import sentry_sdk
46-
from sentry_sdk.integrations.flask import FlaskIntegration
4751

4852

4953
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
@@ -173,7 +177,8 @@ def create_app():
173177

174178
# sentry
175179
if not app_created and 'SENTRY_DSN' in app.config:
176-
sentry_sdk.init(app.config['SENTRY_DSN'], integrations=[FlaskIntegration()])
180+
sentry_sdk.init(app.config['SENTRY_DSN'], integrations=[FlaskIntegration(), RedisIntegration(),
181+
CeleryIntegration(), SqlalchemyIntegration()])
177182

178183
# redis
179184
redis_store.init_app(app)

app/api/helpers/csv_jobs_util.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def export_sessions_csv(sessions):
6868
column.append(session.level)
6969
column.append(session.state)
7070
column.append(session.session_type if session.session_type else '')
71-
column.append(len(session.long_abstract))
71+
column.append(len(session.long_abstract) if session.long_abstract else None)
7272
rows.append(column)
7373

7474
return rows

app/api/helpers/db.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,7 @@ def save_to_db(item, msg="Saved to db", print_error=True):
2424
db.session.commit()
2525
return True
2626
except Exception as e:
27-
if print_error:
28-
print(e)
29-
traceback.print_exc()
30-
logging.error('DB Exception! %s' % e)
27+
logging.exception('DB Exception!')
3128
db.session.rollback()
3229
return False
3330

app/api/helpers/order.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def delete_related_attendees_for_order(order):
2727
try:
2828
db.session.commit()
2929
except Exception as e:
30-
logging.error('DB Exception! %s' % e)
30+
logging.exception('DB Exception!')
3131
db.session.rollback()
3232

3333

@@ -114,7 +114,7 @@ def create_onsite_attendees_for_order(data):
114114
try:
115115
db.session.commit()
116116
except Exception as e:
117-
logging.error('DB Exception! %s' % e)
117+
logging.exception('DB Exception!')
118118
db.session.rollback()
119119

120120
raise ConflictException(

app/api/helpers/tasks.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import urllib.error
5050
import base64
5151

52+
logger = logging.getLogger(__name__)
5253
celery = make_celery()
5354

5455

@@ -269,7 +270,7 @@ def export_ical_task(self, event_id, temp=True):
269270

270271
except Exception as e:
271272
result = {'__error': True, 'result': str(e)}
272-
logging.error('Error in ical download')
273+
logger.exception('Error in ical download')
273274

274275
return result
275276

@@ -304,7 +305,7 @@ def export_xcal_task(self, event_id, temp=True):
304305

305306
except Exception as e:
306307
result = {'__error': True, 'result': str(e)}
307-
logging.error('Error in xcal download')
308+
logger.exception('Error in xcal download')
308309

309310
return result
310311

@@ -339,7 +340,7 @@ def export_pentabarf_task(self, event_id, temp=True):
339340

340341
except Exception as e:
341342
result = {'__error': True, 'result': str(e)}
342-
logging.error('Error in pentabarf download')
343+
logger.exception('Error in pentabarf download')
343344

344345
return result
345346

@@ -369,7 +370,7 @@ def export_order_csv_task(self, event_id):
369370
}
370371
except Exception as e:
371372
result = {'__error': True, 'result': str(e)}
372-
logging.error('Error in exporting as CSV')
373+
logger.exception('Error in exporting as CSV')
373374

374375
return result
375376

@@ -389,7 +390,7 @@ def export_order_pdf_task(self, event_id):
389390
}
390391
except Exception as e:
391392
result = {'__error': True, 'result': str(e)}
392-
logging.error('Error in exporting order as pdf')
393+
logger.exception('Error in exporting order as pdf')
393394

394395
return result
395396

@@ -418,7 +419,7 @@ def export_attendees_csv_task(self, event_id):
418419
}
419420
except Exception as e:
420421
result = {'__error': True, 'result': str(e)}
421-
logging.error('Error in exporting attendees list as CSV')
422+
logger.exception('Error in exporting attendees list as CSV')
422423

423424

424425
return result
@@ -436,7 +437,7 @@ def export_attendees_pdf_task(self, event_id):
436437
}
437438
except Exception as e:
438439
result = {'__error': True, 'result': str(e)}
439-
logging.error('Error in exporting attendees list as PDF')
440+
logger.exception('Error in exporting attendees list as PDF')
440441

441442

442443

@@ -467,7 +468,7 @@ def export_sessions_csv_task(self, event_id):
467468
}
468469
except Exception as e:
469470
result = {'__error': True, 'result': str(e)}
470-
logging.error('Error in exporting sessions as CSV')
471+
logging.exception('Error in exporting sessions as CSV')
471472

472473
return result
473474

@@ -496,7 +497,7 @@ def export_speakers_csv_task(self, event_id):
496497
}
497498
except Exception as e:
498499
result = {'__error': True, 'result': str(e)}
499-
logging.error('Error in exporting speakers list as CSV')
500+
logger.exception('Error in exporting speakers list as CSV')
500501

501502
return result
502503

@@ -513,7 +514,7 @@ def export_sessions_pdf_task(self, event_id):
513514
}
514515
except Exception as e:
515516
result = {'__error': True, 'result': str(e)}
516-
logging.error('Error in exporting sessions as PDF')
517+
logger.exception('Error in exporting sessions as PDF')
517518

518519
return result
519520

@@ -530,7 +531,7 @@ def export_speakers_pdf_task(self, event_id):
530531
}
531532
except Exception as e:
532533
result = {'__error': True, 'result': str(e)}
533-
logging.error('Error in exporting speakers as PDF')
534+
logger.exception('Error in exporting speakers as PDF')
534535

535536
return result
536537

@@ -540,4 +541,4 @@ def delete_translations(self, zip_file_path):
540541
try:
541542
os.remove(zip_file_path)
542543
except:
543-
logging.exception('Error while deleting translations zip file')
544+
logger.exception('Error while deleting translations zip file')

app/api/orders.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -614,12 +614,11 @@ def omise_checkout(order_identifier):
614614
save_to_db(order)
615615
try:
616616
charge = OmisePaymentsManager.charge_payment(order_identifier, token)
617-
print(charge.status)
618617
except omise.errors.BaseError as e:
619-
logging.error(f"""OmiseError: {repr(e)}. See https://www.omise.co/api-errors""")
618+
logging.exception(f"""OmiseError: {repr(e)}. See https://www.omise.co/api-errors""")
620619
return jsonify(status=False, error="Omise Failure Message: {}".format(str(e)))
621620
except Exception as e:
622-
logging.error(repr(e))
621+
logging.exception('Error while charging omise')
623622
if charge.failure_code is not None:
624623
logging.warning("Omise Failure Message: {} ({})".format(charge.failure_message, charge.failure_code))
625624
return jsonify(status=False, error="Omise Failure Message: {} ({})".

tests/all/integration/api/helpers/test_csv_jobs_util.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,30 @@ def test_export_attendees_csv(self):
3737
self.assertEqual(field_data[1][3], common.string_)
3838
self.assertEqual(field_data[1][5], 'user0@example.com')
3939

40+
def _test_export_session_csv(self, test_session=None):
41+
with app.test_request_context():
42+
if not test_session:
43+
test_session = SessionFactory()
44+
field_data = export_sessions_csv([test_session])
45+
session_row = field_data[1]
46+
47+
self.assertEqual(session_row[0], 'example (accepted)')
48+
self.assertEqual(session_row[7], 'accepted')
49+
4050
def test_export_sessions_csv(self):
4151
"""Method to check sessions data export"""
4252

53+
with app.test_request_context():
54+
self._test_export_session_csv()
55+
56+
def test_export_sessions_none_csv(self):
57+
"""Method to check sessions data export with no abstract"""
58+
4359
with app.test_request_context():
4460
test_session = SessionFactory()
45-
field_data = export_sessions_csv([test_session])
46-
self.assertEqual(field_data[1][6], common.int_)
47-
self.assertEqual(field_data[1][7], 'accepted')
61+
test_session.long_abstract = None
62+
test_session.level = None
63+
self._test_export_session_csv(test_session)
4864

4965
def test_export_speakers_csv(self):
5066
"""Method to check speakers data export"""

0 commit comments

Comments
 (0)