diff --git a/app/routes/tools.py b/app/routes/tools.py new file mode 100644 index 0000000..c47056b --- /dev/null +++ b/app/routes/tools.py @@ -0,0 +1,56 @@ +import json +from flask import Blueprint, render_template, request, redirect, url_for, flash, Response +from app.models import Domain +from app import db + +tools_bp = Blueprint('tools', __name__) + +@tools_bp.route('/tools', methods=['GET']) +def tools(): + return render_template('tools.html') + +@tools_bp.route('/tools/export', methods=['GET']) +def export_data(): + # Query all domain data from the database. + domains = Domain.query.all() + data = [] + for d in domains: + data.append({ + 'id': d.id, + 'domain': d.domain, + 'expiration_date': d.expiration_date, + 'ssl_expiration_date': d.ssl_expiration_date, + 'ssl_only': d.ssl_only + }) + json_data = json.dumps(data) + # Create a response that prompts the user to download the JSON file. + response = Response(json_data, mimetype='application/json') + response.headers['Content-Disposition'] = 'attachment; filename=domains_data.json' + return response + +@tools_bp.route('/tools/import', methods=['GET', 'POST']) +def import_data(): + if request.method == 'POST': + file = request.files.get('file') + if file: + try: + data = json.load(file) + # Insert each record if the domain doesn't already exist. + for record in data: + existing = Domain.query.filter_by(domain=record.get('domain')).first() + if not existing: + new_domain = Domain( + domain=record.get('domain'), + expiration_date=record.get('expiration_date'), + ssl_expiration_date=record.get('ssl_expiration_date'), + ssl_only=record.get('ssl_only', False) + ) + db.session.add(new_domain) + db.session.commit() + flash("Data imported successfully", "success") + except Exception as e: + flash(f"Error importing data: {str(e)}", "danger") + else: + flash("No file uploaded", "warning") + return redirect(url_for('tools.tools')) + return render_template('tools.html') diff --git a/app/templates/tools.html b/app/templates/tools.html new file mode 100644 index 0000000..5347ab5 --- /dev/null +++ b/app/templates/tools.html @@ -0,0 +1,21 @@ +{% extends "base.html" %} +{% block title %}Tools{% endblock %} +{% block content %} +