Skip to content

Commit 5822b1a

Browse files
abhinavk96iamareebjamal
authored andcommitted
fix: Ticket downloads for multi-attendee orders (#6095)
* Introduce can_download_tickets property in user model * Specify separate storage path for all ticket pdf * fix: make it possible to download all attendee tickets
1 parent 6d0f957 commit 5822b1a

File tree

4 files changed

+11
-6
lines changed

4 files changed

+11
-6
lines changed

app/api/auth.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -304,12 +304,10 @@ def ticket_attendee_authorized(order_identifier):
304304
if current_user:
305305
try:
306306
order = Order.query.filter_by(identifier=order_identifier).first()
307-
user_id = order.user.id
308-
event_id = order.event.id
309307
except NoResultFound:
310308
return NotFoundError({'source': ''}, 'This ticket is not associated with any order').respond()
311-
if current_user.id == user_id or current_user.is_organizer(event_id):
312-
key = UPLOAD_PATHS['pdf']['ticket_attendee'].format(identifier=order_identifier)
309+
if current_user.can_download_tickets(order):
310+
key = UPLOAD_PATHS['pdf']['tickets_all'].format(identifier=order_identifier)
313311
file_path = '../generated/tickets/{}/{}/'.format(key, generate_hash(key)) + order_identifier + '.pdf'
314312
try:
315313
return return_tickets(file_path, order_identifier)

app/api/helpers/order.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def create_pdf_tickets_for_holder(order):
5353
"""
5454
if order.status == 'completed' or order.status == 'placed':
5555
pdf = create_save_pdf(render_template('pdf/ticket_purchaser.html', order=order),
56-
UPLOAD_PATHS['pdf']['ticket_attendee'],
56+
UPLOAD_PATHS['pdf']['tickets_all'],
5757
dir_path='/static/uploads/pdf/tickets/', identifier=order.identifier, upload_dir='generated/tickets/')
5858

5959
order.tickets_pdf_url = pdf

app/api/helpers/storage.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@
8080
},
8181
'pdf': {
8282
'ticket_attendee': 'attendees/tickets/pdf/{identifier}',
83-
'order': 'orders/invoices/pdf/{identifier}'
83+
'order': 'orders/invoices/pdf/{identifier}',
84+
'tickets_all': 'orders/tickets/pdf/{identifier}'
8485
}
8586
}
8687

app/models/user.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,12 @@ def first_access_panel(self):
360360
return False
361361
return perm.panel_name
362362

363+
def can_download_tickets(self, order):
364+
permissible_users = [holder.id for holder in order.ticket_holders] + [order.user.id]
365+
if self.is_staff or self.is_organizer(order.event.id) or self.id in permissible_users:
366+
return True
367+
return False
368+
363369
def can_access_panel(self, panel_name):
364370
"""
365371
Check if user can access an Admin Panel

0 commit comments

Comments
 (0)