Refactored create & update forms into 1 form
This commit is contained in:
parent
71866cd883
commit
7bb5727cbf
@ -10,7 +10,7 @@ addasset_bp = Blueprint('addasset', __name__)
|
||||
def create():
|
||||
if request.method == 'GET':
|
||||
# Render the "add item" form
|
||||
return render_template('create.html', item_attributes=item_attributes)
|
||||
return render_template('item_form.html', item_attributes=item_attributes, item=None)
|
||||
|
||||
# Process submitted form
|
||||
if request.method == 'POST':
|
||||
@ -20,7 +20,7 @@ def create():
|
||||
# Form validation
|
||||
error = validate_values(form_data)
|
||||
if error:
|
||||
return render_template('create.html', item_attributes=item_attributes, error=error)
|
||||
return render_template('item_form.html', item_attributes=item_attributes, item=None, error=error)
|
||||
|
||||
# Create the Asset object
|
||||
item = Asset(**form_data)
|
||||
@ -35,15 +35,15 @@ def create():
|
||||
error = f"An entry with {primary_attrib.display_name} '{form_data[primary_attrib.attrib_name]}' already exists."
|
||||
else:
|
||||
error = "An entry with the same primary key already exists."
|
||||
return render_template('create.html', item_attributes=item_attributes, error=error)
|
||||
return render_template('item_form.html', item_attributes=item_attributes, item=None, error=error)
|
||||
except exc.StatementError as e:
|
||||
# Handle other database errors
|
||||
error = f"Database error: {str(e)}"
|
||||
return render_template('create.html', item_attributes=item_attributes, error=error)
|
||||
return render_template('item_form.html', item_attributes=item_attributes, item=None, error=error)
|
||||
except Exception as e:
|
||||
# Handle unexpected errors
|
||||
error = f"An unexpected error occurred: {str(e)}"
|
||||
return render_template('create.html', item_attributes=item_attributes, error=error)
|
||||
return render_template('item_form.html', item_attributes=item_attributes, item=None, error=error)
|
||||
|
||||
# Redirect to /viewall on success
|
||||
return redirect('/viewall')
|
@ -20,7 +20,7 @@ def update(primary_value):
|
||||
|
||||
if request.method == 'GET':
|
||||
# Render the update form with the current item data
|
||||
return render_template('update.html', item=item, item_attributes=item_attributes)
|
||||
return render_template('item_form.html', item=item, item_attributes=item_attributes)
|
||||
|
||||
if request.method == 'POST':
|
||||
# Get data from form
|
||||
@ -29,7 +29,7 @@ def update(primary_value):
|
||||
# Form validation
|
||||
error = validate_values(form_data)
|
||||
if error:
|
||||
return render_template('update.html', item=item, item_attributes=item_attributes, error=error)
|
||||
return render_template('item_form.html', item=item, item_attributes=item_attributes, error=error)
|
||||
|
||||
# Update the item with the new data
|
||||
for attrib in item_attributes:
|
||||
@ -40,15 +40,15 @@ def update(primary_value):
|
||||
except exc.IntegrityError:
|
||||
# Handle duplicate primary key or unique constraint errors
|
||||
error = f"An entry with {primary_attrib.display_name} '{form_data[primary_attrib.attrib_name]}' already exists."
|
||||
return render_template('update.html', item=item, item_attributes=item_attributes, error=error)
|
||||
return render_template('item_form.html', item=item, item_attributes=item_attributes, error=error)
|
||||
except exc.StatementError as e:
|
||||
# Handle other database errors
|
||||
error = f"Database error: {str(e)}"
|
||||
return render_template('update.html', item=item, item_attributes=item_attributes, error=error)
|
||||
return render_template('item_form.html', item=item, item_attributes=item_attributes, error=error)
|
||||
except Exception as e:
|
||||
# Handle unexpected errors
|
||||
error = f"An unexpected error occurred: {str(e)}"
|
||||
return render_template('update.html', item=item, item_attributes=item_attributes, error=error)
|
||||
return render_template('item_form.html', item=item, item_attributes=item_attributes, error=error)
|
||||
|
||||
# Redirect to /viewall on success
|
||||
return redirect('/viewall')
|
@ -2,17 +2,17 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Add an Item</title>
|
||||
<title>{% if item %}Update{% else %}Add{% endif %} Item</title>
|
||||
</head>
|
||||
<body>
|
||||
<h2 align="center">Add new Item</h2>
|
||||
<h2 align="center">{% if item %}Update{% else %}Add{% endif %} Item</h2>
|
||||
|
||||
<!-- Display error message if any -->
|
||||
{% if error %}
|
||||
<p>{{ error }}</p>
|
||||
{% endif %}
|
||||
|
||||
<!-- Form for adding a new item -->
|
||||
<!-- Form for adding/updating an item -->
|
||||
<form method="POST">
|
||||
{% for attrib in item_attributes -%}
|
||||
<p>
|
||||
@ -25,7 +25,7 @@
|
||||
{% if attrib.required %} required {% endif %}
|
||||
>
|
||||
{% for option in attrib.options -%}
|
||||
<option value="{{ option }}">{{ option }}</option>
|
||||
<option value="{{ option }}" {% if item and item[attrib.attrib_name] == option %}selected{% endif %}>{{ option }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{% else %}
|
||||
@ -41,12 +41,16 @@
|
||||
{% if attrib.max_length is not none %} maxlength="{{ attrib.max_length }}" {% endif %}
|
||||
{% if attrib.min_length is not none %} minlength="{{ attrib.min_length }}" {% endif %}
|
||||
{% if attrib.regex is not none %} pattern="{{ attrib.regex }}" {% endif %}
|
||||
{% if attrib.default_val is not none %} value="{{ attrib.default_val }}" {% endif %}
|
||||
{% if item %}
|
||||
value="{{ item[attrib.attrib_name] }}"
|
||||
{% else %}
|
||||
{% if attrib.default_val is not none %} value="{{ attrib.default_val }}" {% endif %}
|
||||
{% endif %}
|
||||
/>
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endfor %}
|
||||
<p><input type="submit" value="Submit" /></p>
|
||||
<p><input type="submit" value="{% if item %}Update{% else %}Submit{% endif %}" /></p>
|
||||
<button type="button" onclick="window.location.href='/'">Cancel</button>
|
||||
</form>
|
||||
</body>
|
@ -1,51 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Update Item</title>
|
||||
</head>
|
||||
<body>
|
||||
<h2 align="center">Update Item</h2>
|
||||
|
||||
<!-- Display error message if any -->
|
||||
{% if error %}
|
||||
<p>{{ error }}</p>
|
||||
{% endif %}
|
||||
|
||||
<!-- Form for updating an item -->
|
||||
<form method="POST">
|
||||
{% for attrib in item_attributes -%}
|
||||
<p>
|
||||
<label for="{{ attrib.attrib_name }}">{{ attrib.display_name }}:</label>
|
||||
{% if attrib.html_input_type == "select" %}
|
||||
<!-- Render a dropdown for select attributes -->
|
||||
<select
|
||||
id="{{ attrib.attrib_name }}"
|
||||
name="{{ attrib.attrib_name }}"
|
||||
{% if attrib.required %} required {% endif %}
|
||||
>
|
||||
{% for option in attrib.options -%}
|
||||
<option value="{{ option }}" {% if item[attrib.attrib_name] == option %}selected{% endif %}>{{ option }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{% else %}
|
||||
<!-- Render an input field for other attributes -->
|
||||
<input
|
||||
id="{{ attrib.attrib_name }}"
|
||||
type="{{ attrib.html_input_type }}"
|
||||
name="{{ attrib.attrib_name }}"
|
||||
{% if attrib.required %} required {% endif %}
|
||||
{% if attrib.html_input_type == "number" %}
|
||||
{% if attrib.min_val is not none %} min="{{ attrib.min_val }}" {% endif %}
|
||||
{% if attrib.max_val is not none %} max="{{ attrib.max_val }}" {% endif %}
|
||||
{% endif %}
|
||||
{% if item[attrib.attrib_name] %} value="{{ item[attrib.attrib_name] }}" {% endif %}
|
||||
/>
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endfor %}
|
||||
<p><input type="submit" value="Update" /></p>
|
||||
<button type="button" onclick="window.location.href='/'">Cancel</button>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user