wip
This commit is contained in:
parent
30e9c9328e
commit
254593d260
20 changed files with 156 additions and 65 deletions
|
@ -218,52 +218,65 @@ def server_delete(server_id):
|
|||
|
||||
|
||||
@bp.route("/app/new", methods=["GET", "POST"])
|
||||
@bp.route("/app/new/<int:server_id>", methods=["GET", "POST"])
|
||||
@login_required
|
||||
def app_new():
|
||||
"""Create a new application with comprehensive error handling"""
|
||||
# Get all servers for dropdown
|
||||
def app_new(server_id=None):
|
||||
"""Create a new application"""
|
||||
servers = Server.query.all()
|
||||
|
||||
if not servers:
|
||||
flash("You need to create a server before adding applications", "warning")
|
||||
return redirect(url_for("dashboard.server_new"))
|
||||
|
||||
if request.method == "POST":
|
||||
# Get form data
|
||||
name = request.form.get("name", "").strip()
|
||||
# Handle form submission
|
||||
name = request.form.get("name")
|
||||
server_id = request.form.get("server_id")
|
||||
documentation = request.form.get("documentation", "")
|
||||
|
||||
# Process port data from form
|
||||
port_data = []
|
||||
port_numbers = request.form.getlist("port_numbers[]")
|
||||
protocols = request.form.getlist("protocols[]")
|
||||
descriptions = request.form.getlist("port_descriptions[]")
|
||||
if not name or not server_id:
|
||||
flash("Name and server are required", "danger")
|
||||
return render_template(
|
||||
"dashboard/app_form.html",
|
||||
title="New Application",
|
||||
edit_mode=False,
|
||||
servers=servers,
|
||||
selected_server_id=server_id,
|
||||
)
|
||||
|
||||
for i in range(len(port_numbers)):
|
||||
if port_numbers[i] and port_numbers[i].strip():
|
||||
protocol = protocols[i] if i < len(protocols) else "TCP"
|
||||
description = descriptions[i] if i < len(descriptions) else ""
|
||||
port_data.append((port_numbers[i], protocol, description))
|
||||
# Create the app
|
||||
app = App(name=name, server_id=server_id, documentation=documentation)
|
||||
|
||||
# Save application
|
||||
from app.utils.app_utils import save_app
|
||||
try:
|
||||
db.session.add(app)
|
||||
db.session.commit()
|
||||
|
||||
success, app, error = save_app(name, server_id, documentation, port_data)
|
||||
# Process port numbers if any
|
||||
port_numbers = request.form.getlist("port_numbers[]")
|
||||
protocols = request.form.getlist("protocols[]")
|
||||
descriptions = request.form.getlist("port_descriptions[]")
|
||||
|
||||
if success:
|
||||
flash("Application created successfully", "success")
|
||||
for i, port_number in enumerate(port_numbers):
|
||||
if port_number and port_number.isdigit():
|
||||
port = Port(
|
||||
app_id=app.id,
|
||||
port_number=int(port_number),
|
||||
protocol=protocols[i] if i < len(protocols) else "TCP",
|
||||
description=descriptions[i] if i < len(descriptions) else "",
|
||||
)
|
||||
db.session.add(port)
|
||||
|
||||
db.session.commit()
|
||||
flash(f"Application '{name}' created successfully", "success")
|
||||
return redirect(url_for("dashboard.app_view", app_id=app.id))
|
||||
else:
|
||||
flash(error, "danger")
|
||||
|
||||
# For GET requests or failed POSTs
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
flash(f"Error creating application: {str(e)}", "danger")
|
||||
|
||||
# GET request - render the form
|
||||
return render_template(
|
||||
"dashboard/app_form.html",
|
||||
title="Create New Application",
|
||||
title="New Application",
|
||||
edit_mode=False,
|
||||
dashboard_link=url_for("dashboard.dashboard_home"),
|
||||
servers=servers,
|
||||
selected_server_id=server_id, # This will pre-select the server
|
||||
)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue