Implemeted getters
This commit is contained in:
		@@ -1,14 +1,15 @@
 | 
			
		||||
#!/usr/bin/env python3
 | 
			
		||||
from flask import request, jsonify
 | 
			
		||||
import tempfile
 | 
			
		||||
from flask import request, jsonify, current_app, abort, Response
 | 
			
		||||
from flask_classful import FlaskView, route
 | 
			
		||||
from model import db, Default, Details
 | 
			
		||||
from schema import DetailsSchema, DefaultSchema
 | 
			
		||||
from utils import json_required
 | 
			
		||||
from model import db, Default, AIModel
 | 
			
		||||
from minio.error import BucketAlreadyExists, BucketAlreadyOwnedByYou, ResponseError, NoSuchKey
 | 
			
		||||
from schemas import AIModelSchema, DefaultSchema
 | 
			
		||||
from utils import json_required, storage
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ModelView(FlaskView):
 | 
			
		||||
 | 
			
		||||
    details_schema = DetailsSchema(many=False)
 | 
			
		||||
    aimodel_schema = AIModelSchema(many=False)
 | 
			
		||||
    default_schema = DefaultSchema(many=False)
 | 
			
		||||
 | 
			
		||||
    @json_required
 | 
			
		||||
@@ -16,24 +17,43 @@ class ModelView(FlaskView):
 | 
			
		||||
        return jsonify({})
 | 
			
		||||
 | 
			
		||||
    def get(self, _id: str):
 | 
			
		||||
        return jsonify({"id": _id})
 | 
			
		||||
 | 
			
		||||
        if _id == "$default":
 | 
			
		||||
            default = Default.query.first_or_404()  # TODO: Kitalálni, hogy inkább a latestestest-el térjen-e vissza
 | 
			
		||||
            m = default.default
 | 
			
		||||
        else:
 | 
			
		||||
            m = AIModel.query.fiter_by(id=_id).first_or_404()
 | 
			
		||||
 | 
			
		||||
        try:
 | 
			
		||||
            data = storage.connection.get_object(current_app.config['MINIO_BUCKET_NAME'], m.id)
 | 
			
		||||
        except NoSuchKey:
 | 
			
		||||
            abort(500, "The ID is stored in the database but not int the Object Store")
 | 
			
		||||
 | 
			
		||||
        return Response(data.stream(), mimetype=data.headers['Content-type'])
 | 
			
		||||
 | 
			
		||||
    @route('<_id>/details')
 | 
			
		||||
    def get_details(self, _id: str):
 | 
			
		||||
        return jsonify({"id": _id})
 | 
			
		||||
 | 
			
		||||
        if _id == "$default":
 | 
			
		||||
            default = Default.query.first_or_404()  # TODO: Kitalálni, hogy inkább a latestestest-el térjen-e vissza
 | 
			
		||||
            m = default.default
 | 
			
		||||
        else:
 | 
			
		||||
            m = AIModel.query.fiter_by(id=_id).first_or_404()
 | 
			
		||||
 | 
			
		||||
        return jsonify(self.aimodel_schema.dump(m))
 | 
			
		||||
 | 
			
		||||
    def delete(self, _id: str):
 | 
			
		||||
        return jsonify({"id": _id})
 | 
			
		||||
 | 
			
		||||
        m = AIModel.query.fiter_by(id=_id).first_or_404()
 | 
			
		||||
 | 
			
		||||
        storage.connection.remove_object(current_app.config['MINIO_BUCKET_NAME'], m.id)
 | 
			
		||||
 | 
			
		||||
        db.session.delete(m)
 | 
			
		||||
        db.session.commit()
 | 
			
		||||
 | 
			
		||||
        return '', 204
 | 
			
		||||
 | 
			
		||||
    @json_required
 | 
			
		||||
    @route('$default', methods=['PUT'])
 | 
			
		||||
    def put_default(self):
 | 
			
		||||
 | 
			
		||||
        Default.query.delete()
 | 
			
		||||
        #new_default = Default()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        db.session.add(new_default)
 | 
			
		||||
        db.session.commit()
 | 
			
		||||
 | 
			
		||||
        return jsonify(self.default_schema.dump(new_default))
 | 
			
		||||
        return jsonify({})
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user