Exemplo n.º 1
0
def edit_product_info(product_id):
    product_obj = Product.query.filter_by(product_id=product_id).first_or_404()
    flash(product_obj)
    form = EditProductForm(obj=product_obj)

    if request.method == 'POST':
        # edit info
        if request.form['form_name'] == 'save_changes':
            Inputer.edit_product_info(product_id,requester, **new_attributes)

    return render_template('edit_product_info.html', form = form, product_id = product_id)
Exemplo n.º 2
0
def create_process():
    form = RegisterProcessForm()
    if form.validate_on_submit():
        process_id = Inputer.new_process(current_user.id,
                                         name=form.name.data,
                                         description=form.description.data)
        flash(f'Process "{form.name.data}" created with ID {process_id}')
        return redirect(url_for('create_process'))

    return render_template('create_process.html', form=form)
Exemplo n.º 3
0
def create_product():
    form = CreateProductForm()
    if form.validate_on_submit():
        product_id = Inputer.new_product(
            current_user.id,
            name=form.name.data,
            description=form.description.data,
        )

        flash(f'Product "{form.name.data}" created with ID {product_id}')
        return redirect(url_for('create_product'))
    return render_template('create_product.html', form=form)
Exemplo n.º 4
0
def edit_process_info(process_id):
    process_obj = Process.query.filter_by(process_id=process_id).first_or_404()
    form = EditProcessForm(obj=process_obj)

    if request.method == 'POST':
        # edit info
        if request.form['form_name'] == 'Edit Links':
            return redirect(url_for('edit_process_links', process_id = process_id, state_str = 'init'))
        if request.form['form_name'] == 'save_changes':
            Inputer.edit_process_info(
                process_id,
                requester = session['_user_id'],
                name = request.form['name'],
                description = request.form['description'],
                owner = request.form['owner'],
                created_by = session['_user_id']
            )
            flash('New info saved')
            return redirect(url_for('my_processes'))

    return render_template('edit_process_info.html', form = form, process_id = process_id)
Exemplo n.º 5
0
def edit_process_links(process_id, state_str):
    #handle state variable for dynamic persistence
    if state_str == 'init':
        state = {}
        state['process'] = as_dict(
            Process.query.filter_by(id=process_id).first())
        state['inputs'] = query_active_process_links(process_id, 'input_to')
        state['outputs'] = query_active_process_links(process_id, 'output_of')
    else:
        state = eval(urllib.parse.unquote(state_str))

    state_str = urllib.parse.quote(str(state))
    dynamic_input_form = IterativeAddProductForm()
    dynamic_output_form = IterativeAddProductForm()
    dynamic_input_form.submit.label.text = 'Add Input'
    dynamic_output_form.submit.label.text = 'Add Output'
    if request.method == 'POST':
        # remove_input form
        if request.form['form_name'] == 'remove_input':
            delete_inputs = request.form.getlist('removeinput')
            remove_indices = [int(i) - 1 for i in delete_inputs]
            state['inputs'] = [
                i for j, i in enumerate(state['inputs'])
                if j not in remove_indices
            ]
        # remove_input form
        if request.form['form_name'] == 'add_input':
            if dynamic_input_form.validate_on_submit():
                product = Product.query.filter_by(
                    product_id=dynamic_input_form.product_id.data
                ).first_or_404()
                if not (product.product_id
                        in [i['product_id'] for i in state['inputs']]):
                    state['inputs'].append(as_dict(product))

        #remove_output form
        if request.form['form_name'] == 'remove_output':
            delete_outputs = request.form.getlist('removeoutput')
            remove_indices = [int(i) - 1 for i in delete_outputs]
            state['outputs'] = [
                i for j, i in enumerate(state['outputs'])
                if j not in remove_indices
            ]
        #add_output form
        if request.form['form_name'] == 'add_output':
            if dynamic_output_form.validate_on_submit():
                product = Product.query.filter_by(
                    product_id=dynamic_output_form.product_id.data
                ).first_or_404()
                if not (product.product_id
                        in [i['product_id'] for i in state['outputs']]):
                    state['outputs'].append(as_dict(product))

        #return to info
        if request.form['form_name'] == 'return_to_info':
            # alter state_str for former conditinonals
            state_str = urllib.parse.quote(str(state))
            return redirect(
                url_for('edit_process_info',
                        process_id=process_id,
                        state_str=state_str))
        #submit_changes
        if request.form['form_name'] == 'submit_changes':
            query_message = Inputer.edit_process_links(process_id,
                                                       state['inputs'],
                                                       state['outputs'])
            if query_message != 'Success':
                flash(query_message)
                return redirect(
                    url_for('edit_process_links',
                            process_id=process_id,
                            state_str=state_str))

            flash('Links updated')
            # alter state_str for former conditinonals
            state_str = urllib.parse.quote(str(state))
            return redirect(url_for('edit_process_info',
                                    process_id=process_id))

        # alter state_str for former conditinonals
        state_str = urllib.parse.quote(str(state))
        #modify session
        return redirect(
            url_for('edit_process_links',
                    process_id=process_id,
                    state_str=state_str))

    process_name = state['process']['name']
    return render_template('edit_process_links.html',
                           inputs=state['inputs'],
                           outputs=state['outputs'],
                           input_form=dynamic_input_form,
                           output_form=dynamic_output_form,
                           process_name=process_name)