1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- """
- Provides routes for managing Export objects.
- """
- from flask import jsonify
- from sqlalchemy.exc import SQLAlchemyError
- from piket_server.flask import app, db
- from piket_server.models import Export, Settlement
- @app.route("/exports", methods=["GET"])
- def get_exports():
- """ Return a list of the created Exports. """
- result = Export.query.all()
- return jsonify(exports=[e.as_dict for e in result])
- @app.route("/exports/<int:export_id>", methods=["GET"])
- def get_export(export_id: int):
- """ Return an overview for the given Export. """
- e = Export.query.get_or_404(export_id)
- ss = [s.as_dict for s in e.settlements]
- return jsonify(export=e.as_dict, settlements=ss)
- @app.route("/exports", methods=["POST"])
- def add_export():
- """ Create an Export, and link all un-exported Settlements to it. """
- # Assert that there are Settlements to be exported.
- s_count = Settlement.query.filter_by(export=None).count()
- if s_count == 0:
- return jsonify(error="No un-exported Settlements."), 403
- e = Export()
- db.session.add(e)
- db.session.commit()
- Settlement.query.filter_by(export=None).update({"export_id": e.export_id})
- db.session.commit()
- ss = [s.as_dict for s in e.settlements]
- return jsonify(export=e.as_dict, settlements=ss), 201
|