def create_event_copy(event_id): old_event = DataGetter.get_event(event_id) event = clone_row(old_event) event.name = "Copy of " + event.name event.identifier = get_new_event_identifier() event.state = "Draft" save_to_db(event) role = Role.query.filter_by(name=ORGANIZER).first() uer = UsersEventsRoles(login.current_user, event, role) if save_to_db(uer, "Event saved"): new_email_notification_setting = EmailNotification(next_event=1, new_paper=1, session_schedule=1, session_accept_reject=1, after_ticket_purchase=1, user_id=login.current_user.id, event_id=event.id) save_to_db(new_email_notification_setting, "EmailSetting Saved") sponsors_old = DataGetter.get_sponsors(event_id).all() tracks_old = DataGetter.get_tracks(event_id).all() microlocations_old = DataGetter.get_microlocations(event_id).all() call_for_paper_old = DataGetter.get_call_for_papers(event_id).first() social_links = DataGetter.get_social_links_by_event_id(event_id).all() custom_forms = DataGetter.get_custom_form_elements(event_id) for social_link in social_links: clone_row(social_link, event.id) for sponsor in sponsors_old: clone_row(sponsor, event.id) for track in tracks_old: clone_row(track, event.id) for microlocation in microlocations_old: clone_row(microlocation, event.id) if call_for_paper_old: clone_row(call_for_paper_old, event.id) if custom_forms: clone_row(custom_forms, event.id) return event
def add_event_identifier(): events = Event.query.all() for event in events: event.identifier = get_new_event_identifier() save_to_db(event)
def create_event_copy(identifier): id = 'identifier' if identifier.isdigit(): id = 'id' event = safe_query(db, Event, id, identifier, 'event_' + id) if not has_access('is_coorganizer', event_id=event.id): 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() db.session.expunge(event) # expunge the object from session make_transient(event) delattr(event, 'id') event.identifier = get_new_event_identifier() save_to_db(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) 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) 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) 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) # 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) 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) 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) 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) 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) return jsonify({ 'id': event.id, 'identifier': event.identifier, "copied": True })
def create_object(self, data, view_kwargs): identifier = 'identifier' if view_kwargs.get('identifier').isdigit(): identifier = 'id' event = safe_query( Event, identifier, view_kwargs['identifier'], 'event_' + identifier ) 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() db.session.expunge(event) # expunge the object from session make_transient(event) delattr(event, 'id') event.identifier = get_new_event_identifier() save_to_db(event) # Removes access_codes, order_tickets, ticket_tags for the new tickets created. for ticket in tickets: db.session.expunge(ticket) # expunge the object from session make_transient(ticket) ticket.event_id = event.id delattr(ticket, 'id') save_to_db(ticket) for link in social_links: db.session.expunge(link) # expunge the object from session make_transient(link) link.event_id = event.id delattr(link, 'id') save_to_db(link) for sponsor in sponsors: db.session.expunge(sponsor) # expunge the object from session make_transient(sponsor) sponsor.event_id = event.id logo_url = create_save_resized_image( image_file=sponsor.logo_url, resize=False ) delattr(sponsor, 'id') sponsor.logo_url = logo_url save_to_db(sponsor) for location in microlocations: db.session.expunge(location) # expunge the object from session make_transient(location) location.event_id = event.id delattr(location, 'id') save_to_db(location) # No sessions are copied for new tracks for track in tracks: db.session.expunge(track) # expunge the object from session make_transient(track) track.event_id = event.id delattr(track, 'id') save_to_db(track) for call in speaker_calls: db.session.expunge(call) # expunge the object from session make_transient(call) call.event_id = event.id delattr(call, 'id') save_to_db(call) for code in discount_codes: db.session.expunge(code) # expunge the object from session make_transient(code) code.event_id = event.id delattr(code, 'id') save_to_db(code) for form in custom_forms: db.session.expunge(form) # expunge the object from session make_transient(form) form.event_id = event.id delattr(form, 'id') save_to_db(form) return event
def add_event_identifier(): events = Event.query.all() for event in events: event.identifier = get_new_event_identifier() save_to_db(event)
def fix_digit_identifier(): events = Event.query.filter(Event.identifier.op('~')('^[0-9\.]+$')).all() for event in events: event.identifier = get_new_event_identifier() db.session.add(event) db.session.commit()
def create_object(self, data, view_kwargs): identifier = 'identifier' if view_kwargs.get('identifier').isdigit(): identifier = 'id' event = safe_query(db, Event, identifier, view_kwargs['identifier'], 'event_'+identifier) 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() db.session.expunge(event) # expunge the object from session make_transient(event) delattr(event, 'id') event.identifier = get_new_event_identifier() db.session.add(event) db.session.commit() # 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') db.session.add(ticket) db.session.commit() 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') db.session.add(link) db.session.commit() 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 logo_url = create_save_resized_image(image_file=sponsor.logo_url, resize=False) delattr(sponsor, 'id') sponsor.logo_url = logo_url db.session.add(sponsor) db.session.commit() 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') db.session.add(location) db.session.commit() # 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') db.session.add(track) db.session.commit() 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') db.session.add(call) db.session.commit() 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') db.session.add(code) db.session.commit() 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') db.session.add(form) db.session.commit() return event
def create_event_copy(identifier): id = 'identifier' if identifier.isdigit(): id = 'id' event = safe_query(db, Event, id, identifier, 'event_' + id) if not has_access('is_coorganizer', event_id=event.id): return abort(make_response(jsonify(error="Access Forbidden"), 403)) 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) delattr(event, 'id') event.identifier = get_new_event_identifier() save_to_db(event) # Ensure tax information is copied for tax in taxes: copy_to_event(tax, event) # Removes access_codes, order_tickets, ticket_tags for the new tickets created. for ticket in tickets: copy_to_event(ticket, event) for link in social_links: copy_to_event(link, event) for sponsor in sponsors: copy_to_event(sponsor, event) start_sponsor_logo_generation_task(event.id) for location in microlocations: copy_to_event(location, event) # No sessions are copied for new tracks for track in tracks: copy_to_event(track, event) for call in speaker_calls: copy_to_event(call, event) for code in discount_codes: copy_to_event(code, event) for form in custom_forms: copy_to_event(form, event) for user_role in user_event_roles: copy_to_event(user_role, event) return jsonify({ 'id': event.id, 'identifier': event.identifier, "copied": True })