From 435631e3c25784df53717c37a1f84e4bb101cde8 Mon Sep 17 00:00:00 2001 From: Uddeshya Singh Date: Sat, 27 Jul 2019 12:30:58 +0530 Subject: [PATCH 1/3] add tax information in copied events --- app/api/event_copy.py | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/app/api/event_copy.py b/app/api/event_copy.py index 988e8edb56..e9fe5712c9 100644 --- a/app/api/event_copy.py +++ b/app/api/event_copy.py @@ -15,6 +15,7 @@ from app.models.ticket import Ticket from app.models.track import Track from app.models.users_events_role import UsersEventsRoles +from app.models.tax import Tax event_copy = Blueprint('event_copy', __name__, url_prefix='/v1/events') @@ -36,15 +37,16 @@ def create_event_copy(identifier): return abort( make_response(jsonify(error="Access Forbidden"), 403) ) - tickets = Ticket.query.filter_by(event_id=event.id).all() - social_links = SocialLink.query.filter_by(event_id=event.id).all() - sponsors = Sponsor.query.filter_by(event_id=event.id).all() - microlocations = Microlocation.query.filter_by(event_id=event.id).all() - tracks = Track.query.filter_by(event_id=event.id).all() - custom_forms = CustomForms.query.filter_by(event_id=event.id).all() - discount_codes = DiscountCode.query.filter_by(event_id=event.id).all() - speaker_calls = SpeakersCall.query.filter_by(event_id=event.id).all() - user_event_roles = UsersEventsRoles.query.filter_by(event_id=event.id).all() + tickets = Ticket.query.filter_by(event_id=event.id, deleted_at=None).all() + social_links = SocialLink.query.filter_by(event_id=event.id, deleted_at=None).all() + sponsors = Sponsor.query.filter_by(event_id=event.id, deleted_at=None).all() + microlocations = Microlocation.query.filter_by(event_id=event.id, deleted_at=None).all() + tracks = Track.query.filter_by(event_id=event.id, deleted_at=None).all() + custom_forms = CustomForms.query.filter_by(event_id=event.id, deleted_at=None).all() + discount_codes = DiscountCode.query.filter_by(event_id=event.id, deleted_at=None).all() + speaker_calls = SpeakersCall.query.filter_by(event_id=event.id, deleted_at=None).all() + user_event_roles = UsersEventsRoles.query.filter_by(event_id=event.id, deleted_at=None).all() + taxes = Tax.query.filter_by(event_id=event.id, deleted_at=None).all() db.session.expunge(event) # expunge the object from session make_transient(event) @@ -52,6 +54,14 @@ def create_event_copy(identifier): event.identifier = get_new_event_identifier() save_to_db(event) + # Ensure tax information is copied + for tax in taxes: + db.session.expunge(tax) + make_transient(tax) + tax.event_id = event.id + delattr(tax, 'id') + save_to_db(tax) + # Removes access_codes, order_tickets, ticket_tags for the new tickets created. for ticket in tickets: ticket_id = ticket.id From 989d26059981311fecb778f84efe8ce363670dda Mon Sep 17 00:00:00 2001 From: Uddeshya Singh Date: Sat, 27 Jul 2019 16:57:05 +0530 Subject: [PATCH 2/3] create expunge function --- app/api/event_copy.py | 77 ++++++++++--------------------------------- 1 file changed, 18 insertions(+), 59 deletions(-) diff --git a/app/api/event_copy.py b/app/api/event_copy.py index e9fe5712c9..faaa61955d 100644 --- a/app/api/event_copy.py +++ b/app/api/event_copy.py @@ -24,6 +24,14 @@ def start_sponsor_logo_generation_task(event_id): from .helpers.tasks import sponsor_logos_url_task sponsor_logos_url_task.delay(event_id=event_id) + +def expunge_object(object, event): + db.session.expunge(object) # expunge the object + make_transient(object) + object.event_id = event.id + delattr(object, 'id') + save_to_db(object) + @event_copy.route('//copy', methods=['POST']) def create_event_copy(identifier): id = 'identifier' @@ -56,87 +64,38 @@ def create_event_copy(identifier): # Ensure tax information is copied for tax in taxes: - db.session.expunge(tax) - make_transient(tax) - tax.event_id = event.id - delattr(tax, 'id') - save_to_db(tax) + expunge_object(tax, event) # Removes access_codes, order_tickets, ticket_tags for the new tickets created. for ticket in tickets: - ticket_id = ticket.id - db.session.expunge(ticket) # expunge the object from session - make_transient(ticket) - ticket.event_id = event.id - delattr(ticket, 'id') - save_to_db(ticket) + expunge_object(ticket, event) for link in social_links: - link_id = link.id - db.session.expunge(link) # expunge the object from session - make_transient(link) - link.event_id = event.id - delattr(link, 'id') - save_to_db(link) + expunge_object(link, event) for sponsor in sponsors: - sponsor_id = sponsor.id - db.session.expunge(sponsor) # expunge the object from session - make_transient(sponsor) - sponsor.event_id = event.id - delattr(sponsor, 'id') - save_to_db(sponsor) + expunge_object(sponsor, event) start_sponsor_logo_generation_task(event.id) for location in microlocations: - location_id = location.id - db.session.expunge(location) # expunge the object from session - make_transient(location) - location.event_id = event.id - delattr(location, 'id') - save_to_db(location) + expunge_object(location, event) # No sessions are copied for new tracks for track in tracks: - track_id = track.id - db.session.expunge(track) # expunge the object from session - make_transient(track) - track.event_id = event.id - delattr(track, 'id') - save_to_db(track) + expunge_object(track, event) for call in speaker_calls: - call_id = call.id - db.session.expunge(call) # expunge the object from session - make_transient(call) - call.event_id = event.id - delattr(call, 'id') - save_to_db(call) + expunge_object(call, event) for code in discount_codes: - code_id = code.id - db.session.expunge(code) # expunge the object from session - make_transient(code) - code.event_id = event.id - delattr(code, 'id') - save_to_db(code) + expunge_object(code, event) for form in custom_forms: - form_id = form.id - db.session.expunge(form) # expunge the object from session - make_transient(form) - form.event_id = event.id - delattr(form, 'id') - save_to_db(form) + expunge_object(form, event) for user_role in user_event_roles: - user_role_id = user_role.id - db.session.expunge(user_role) - make_transient(user_role) - user_role.event_id = event.id - delattr(user_role, 'id') - save_to_db(user_role) + expunge_object(user_role, event) return jsonify({ 'id': event.id, From 3137fb3c41dbbf86b0a914e4ddea6573d4fede4c Mon Sep 17 00:00:00 2001 From: Uddeshya Singh Date: Sat, 27 Jul 2019 21:47:59 +0530 Subject: [PATCH 3/3] change function name --- app/api/event_copy.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/app/api/event_copy.py b/app/api/event_copy.py index faaa61955d..63ad2ee1df 100644 --- a/app/api/event_copy.py +++ b/app/api/event_copy.py @@ -25,7 +25,7 @@ def start_sponsor_logo_generation_task(event_id): sponsor_logos_url_task.delay(event_id=event_id) -def expunge_object(object, event): +def copy_to_event(object, event): db.session.expunge(object) # expunge the object make_transient(object) object.event_id = event.id @@ -64,38 +64,38 @@ def create_event_copy(identifier): # Ensure tax information is copied for tax in taxes: - expunge_object(tax, event) + copy_to_event(tax, event) # Removes access_codes, order_tickets, ticket_tags for the new tickets created. for ticket in tickets: - expunge_object(ticket, event) + copy_to_event(ticket, event) for link in social_links: - expunge_object(link, event) + copy_to_event(link, event) for sponsor in sponsors: - expunge_object(sponsor, event) + copy_to_event(sponsor, event) start_sponsor_logo_generation_task(event.id) for location in microlocations: - expunge_object(location, event) + copy_to_event(location, event) # No sessions are copied for new tracks for track in tracks: - expunge_object(track, event) + copy_to_event(track, event) for call in speaker_calls: - expunge_object(call, event) + copy_to_event(call, event) for code in discount_codes: - expunge_object(code, event) + copy_to_event(code, event) for form in custom_forms: - expunge_object(form, event) + copy_to_event(form, event) for user_role in user_event_roles: - expunge_object(user_role, event) + copy_to_event(user_role, event) return jsonify({ 'id': event.id,