Esempio n. 1
0
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
Esempio n. 2
0
def add_event_identifier():
    events = Event.query.all()
    for event in events:
        event.identifier = get_new_event_identifier()
        save_to_db(event)
Esempio n. 3
0
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
    })
Esempio n. 4
0
    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)
Esempio n. 6
0
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
Esempio n. 8
0
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
    })