diff --git a/main.py b/main.py index 5ca97a6..d8a26bf 100644 --- a/main.py +++ b/main.py @@ -1,7 +1,11 @@ import functools -from flask import Flask, jsonify, request, abort +from flask import Flask, jsonify, request, abort,Response, make_response, render_template_string from sqlalchemy import func, or_ from werkzeug.exceptions import HTTPException +import csv +from io import StringIO + +from weasyprint import HTML app = Flask(__name__) app.config.from_object("config.Config") @@ -120,5 +124,47 @@ def api_hadiths_random(): return Hadith.query.filter_by(collection="riyadussalihin").order_by(func.rand()) + +#CSV EXPORT +@app.route("/v1/collections/export/csv", methods=["GET"]) +def export_collections_csv(): + collections = HadithCollection.query.all() + si = StringIO() + writer = csv.writer(si) + writer.writerow(["Collection ID", "Name", "Description"]) + for collection in collections: + writer.writerow([collection.collectionID, collection.name, collection.description]) + + output = make_response(si.getvalue()) + output.headers["Content-Disposition"] = "attachment; filename=collections.csv" + output.headers["Content-Type"] = "text/csv" + return output + +#PDF export +@app.route("/v1/collections/export/pdf", methods=["GET"]) +def export_collections_pdf(): + collections = HadithCollection.query.all() + html_content = render_template_string( + """ + + +