Skip to content

Commit 5563826

Browse files
uds5501iamareebjamal
authored andcommitted
fix: add tax information in event copy action (#6241)
1 parent 7dd5282 commit 5563826

File tree

1 file changed

+32
-63
lines changed

1 file changed

+32
-63
lines changed

app/api/event_copy.py

Lines changed: 32 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from app.models.ticket import Ticket
1616
from app.models.track import Track
1717
from app.models.users_events_role import UsersEventsRoles
18+
from app.models.tax import Tax
1819

1920
event_copy = Blueprint('event_copy', __name__, url_prefix='/v1/events')
2021

@@ -23,6 +24,14 @@ def start_sponsor_logo_generation_task(event_id):
2324
from .helpers.tasks import sponsor_logos_url_task
2425
sponsor_logos_url_task.delay(event_id=event_id)
2526

27+
28+
def copy_to_event(object, event):
29+
db.session.expunge(object) # expunge the object
30+
make_transient(object)
31+
object.event_id = event.id
32+
delattr(object, 'id')
33+
save_to_db(object)
34+
2635
@event_copy.route('/<identifier>/copy', methods=['POST'])
2736
def create_event_copy(identifier):
2837
id = 'identifier'
@@ -36,97 +45,57 @@ def create_event_copy(identifier):
3645
return abort(
3746
make_response(jsonify(error="Access Forbidden"), 403)
3847
)
39-
tickets = Ticket.query.filter_by(event_id=event.id).all()
40-
social_links = SocialLink.query.filter_by(event_id=event.id).all()
41-
sponsors = Sponsor.query.filter_by(event_id=event.id).all()
42-
microlocations = Microlocation.query.filter_by(event_id=event.id).all()
43-
tracks = Track.query.filter_by(event_id=event.id).all()
44-
custom_forms = CustomForms.query.filter_by(event_id=event.id).all()
45-
discount_codes = DiscountCode.query.filter_by(event_id=event.id).all()
46-
speaker_calls = SpeakersCall.query.filter_by(event_id=event.id).all()
47-
user_event_roles = UsersEventsRoles.query.filter_by(event_id=event.id).all()
48+
tickets = Ticket.query.filter_by(event_id=event.id, deleted_at=None).all()
49+
social_links = SocialLink.query.filter_by(event_id=event.id, deleted_at=None).all()
50+
sponsors = Sponsor.query.filter_by(event_id=event.id, deleted_at=None).all()
51+
microlocations = Microlocation.query.filter_by(event_id=event.id, deleted_at=None).all()
52+
tracks = Track.query.filter_by(event_id=event.id, deleted_at=None).all()
53+
custom_forms = CustomForms.query.filter_by(event_id=event.id, deleted_at=None).all()
54+
discount_codes = DiscountCode.query.filter_by(event_id=event.id, deleted_at=None).all()
55+
speaker_calls = SpeakersCall.query.filter_by(event_id=event.id, deleted_at=None).all()
56+
user_event_roles = UsersEventsRoles.query.filter_by(event_id=event.id, deleted_at=None).all()
57+
taxes = Tax.query.filter_by(event_id=event.id, deleted_at=None).all()
4858

4959
db.session.expunge(event) # expunge the object from session
5060
make_transient(event)
5161
delattr(event, 'id')
5262
event.identifier = get_new_event_identifier()
5363
save_to_db(event)
5464

65+
# Ensure tax information is copied
66+
for tax in taxes:
67+
copy_to_event(tax, event)
68+
5569
# Removes access_codes, order_tickets, ticket_tags for the new tickets created.
5670
for ticket in tickets:
57-
ticket_id = ticket.id
58-
db.session.expunge(ticket) # expunge the object from session
59-
make_transient(ticket)
60-
ticket.event_id = event.id
61-
delattr(ticket, 'id')
62-
save_to_db(ticket)
71+
copy_to_event(ticket, event)
6372

6473
for link in social_links:
65-
link_id = link.id
66-
db.session.expunge(link) # expunge the object from session
67-
make_transient(link)
68-
link.event_id = event.id
69-
delattr(link, 'id')
70-
save_to_db(link)
74+
copy_to_event(link, event)
7175

7276
for sponsor in sponsors:
73-
sponsor_id = sponsor.id
74-
db.session.expunge(sponsor) # expunge the object from session
75-
make_transient(sponsor)
76-
sponsor.event_id = event.id
77-
delattr(sponsor, 'id')
78-
save_to_db(sponsor)
77+
copy_to_event(sponsor, event)
7978

8079
start_sponsor_logo_generation_task(event.id)
8180

8281
for location in microlocations:
83-
location_id = location.id
84-
db.session.expunge(location) # expunge the object from session
85-
make_transient(location)
86-
location.event_id = event.id
87-
delattr(location, 'id')
88-
save_to_db(location)
82+
copy_to_event(location, event)
8983

9084
# No sessions are copied for new tracks
9185
for track in tracks:
92-
track_id = track.id
93-
db.session.expunge(track) # expunge the object from session
94-
make_transient(track)
95-
track.event_id = event.id
96-
delattr(track, 'id')
97-
save_to_db(track)
86+
copy_to_event(track, event)
9887

9988
for call in speaker_calls:
100-
call_id = call.id
101-
db.session.expunge(call) # expunge the object from session
102-
make_transient(call)
103-
call.event_id = event.id
104-
delattr(call, 'id')
105-
save_to_db(call)
89+
copy_to_event(call, event)
10690

10791
for code in discount_codes:
108-
code_id = code.id
109-
db.session.expunge(code) # expunge the object from session
110-
make_transient(code)
111-
code.event_id = event.id
112-
delattr(code, 'id')
113-
save_to_db(code)
92+
copy_to_event(code, event)
11493

11594
for form in custom_forms:
116-
form_id = form.id
117-
db.session.expunge(form) # expunge the object from session
118-
make_transient(form)
119-
form.event_id = event.id
120-
delattr(form, 'id')
121-
save_to_db(form)
95+
copy_to_event(form, event)
12296

12397
for user_role in user_event_roles:
124-
user_role_id = user_role.id
125-
db.session.expunge(user_role)
126-
make_transient(user_role)
127-
user_role.event_id = event.id
128-
delattr(user_role, 'id')
129-
save_to_db(user_role)
98+
copy_to_event(user_role, event)
13099

131100
return jsonify({
132101
'id': event.id,

0 commit comments

Comments
 (0)