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)
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)
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)
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)
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)