Add export data functionality on settings page
This commit is contained in:
@@ -12,6 +12,48 @@ settings = Blueprint('settings', __name__)
|
||||
def index():
|
||||
return redirect(url_for('settings.api_keys'))
|
||||
|
||||
@settings.route("/export", methods=["GET"])
|
||||
@login_required
|
||||
def export():
|
||||
"""Display data export page or download data export"""
|
||||
# Check if this is a download request
|
||||
if request.args.get('download') == 'true':
|
||||
from flask import make_response
|
||||
from datetime import datetime
|
||||
|
||||
user_id = current_user.id
|
||||
|
||||
# Get all user data
|
||||
export_data = db.export_user_data(user_id)
|
||||
|
||||
# Add export metadata
|
||||
export_data['_export_metadata'] = {
|
||||
'exported_at': datetime.now().isoformat(),
|
||||
'export_version': '1.0',
|
||||
'application': 'Functions Platform'
|
||||
}
|
||||
|
||||
# Create JSON response
|
||||
response = make_response(json.dumps(export_data, indent=2, default=str))
|
||||
response.headers['Content-Type'] = 'application/json'
|
||||
|
||||
# Generate filename with username and timestamp
|
||||
username = current_user.username
|
||||
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
|
||||
filename = f'user_data_export_{username}_{timestamp}.json'
|
||||
response.headers['Content-Disposition'] = f'attachment; filename={filename}'
|
||||
|
||||
return response
|
||||
|
||||
# Otherwise show the export page
|
||||
if htmx:
|
||||
return render_block(
|
||||
environment,
|
||||
"dashboard/settings/export.html",
|
||||
"page"
|
||||
)
|
||||
return render_template("dashboard/settings/export.html")
|
||||
|
||||
@settings.route("/api-keys", methods=["GET"])
|
||||
@login_required
|
||||
def api_keys():
|
||||
|
||||
Reference in New Issue
Block a user