generated from Eddie/Backend-Boilerplate
Eddie
2 years ago
14 changed files with 35 additions and 164 deletions
@ -1,13 +1,20 @@ |
|||||||
from services import (UserService, UserListService) |
import os |
||||||
from config import app, api, docs, CORS |
from flask import Flask, render_template |
||||||
|
from planets import createRandomPlanet |
||||||
#*______________ Service Registration ______________ |
|
||||||
api.add_resource(UserService, '/api/user/<user_id>') |
app = Flask(__name__) |
||||||
docs.register(UserService) |
|
||||||
api.add_resource(UserListService, '/api/list/user') |
|
||||||
docs.register(UserListService) |
|
||||||
#*______________ Application Creation ______________ |
|
||||||
if __name__ == '__main__': |
|
||||||
app.run(debug=True) |
|
||||||
|
|
||||||
|
IMG_FOLDER = os.path.join('static', 'IMG') |
||||||
|
|
||||||
|
app.config['UPLOAD_FOLDER'] = IMG_FOLDER |
||||||
|
@app.route('/<seed>') |
||||||
|
def hello(seed): |
||||||
|
print(seed) |
||||||
|
createRandomPlanet(seed) |
||||||
|
planet = os.path.join(app.config['UPLOAD_FOLDER'], 'planet.png') |
||||||
|
return render_template('hello.html', planet=planet) |
||||||
|
|
||||||
|
|
||||||
|
if __name__=='__main__': |
||||||
|
app.run(debug=True, host='0.0.0.0') |
@ -1,40 +0,0 @@ |
|||||||
from flask import Flask |
|
||||||
from flask_restful import Api |
|
||||||
from apispec import APISpec |
|
||||||
from apispec.ext.marshmallow import MarshmallowPlugin |
|
||||||
from flask_apispec.extension import FlaskApiSpec |
|
||||||
from flask_marshmallow import Marshmallow |
|
||||||
from flask_sqlalchemy import SQLAlchemy |
|
||||||
from flask_cors import CORS |
|
||||||
#!______________ App Setup _____________ _ |
|
||||||
app = Flask(__name__, static_url_path='/static') |
|
||||||
api_v1_cors_config = { |
|
||||||
"origins": ["http://localhost:5000"] |
|
||||||
} |
|
||||||
|
|
||||||
#!______________ CORS Setup _____________ _ |
|
||||||
CORS(app, resources={"/api/*": api_v1_cors_config}) |
|
||||||
|
|
||||||
#!______________ DB Setup ______________ |
|
||||||
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///markdown.db' |
|
||||||
app.config['SECRET_KEY'] = 'InputSecretKeyHere' |
|
||||||
db = SQLAlchemy(app) |
|
||||||
|
|
||||||
#!______________ Marshmallow Setup ______________ |
|
||||||
ma = Marshmallow(app) |
|
||||||
|
|
||||||
#!______________ API & Swagger Setup ______________ |
|
||||||
api = Api(app) |
|
||||||
app.config.update({ |
|
||||||
'APISPEC_SPEC': APISpec( |
|
||||||
title='Markdown Presenter', |
|
||||||
version='v0.0.1', |
|
||||||
plugins=[MarshmallowPlugin()], |
|
||||||
openapi_version='2.0.0' |
|
||||||
), |
|
||||||
'APISPEC_SWAGGER_URL': '/swagger/', |
|
||||||
'APISPEC_SWAGGER_UI_URL': '/swagger-ui/' |
|
||||||
}) |
|
||||||
|
|
||||||
#!______________ Docs Setup ______________ |
|
||||||
docs = FlaskApiSpec(app) |
|
@ -1,10 +0,0 @@ |
|||||||
from config import db |
|
||||||
|
|
||||||
#!______________ DB Models ______________ |
|
||||||
class User(db.Model): |
|
||||||
__tablename__ = "User" |
|
||||||
id = db.Column(db.Integer, primary_key=True) |
|
||||||
name = db.Column(db.String(50)) |
|
||||||
image = db.Column(db.String()) |
|
||||||
description = db.Column(db.String()) |
|
||||||
|
|
Before Width: | Height: | Size: 462 KiB |
Before Width: | Height: | Size: 415 KiB After Width: | Height: | Size: 434 KiB |
@ -1,18 +0,0 @@ |
|||||||
import os |
|
||||||
from config import db |
|
||||||
from termcolor import colored |
|
||||||
from config import app |
|
||||||
|
|
||||||
def RebuildDatabase(): |
|
||||||
if os.path.exists('acceth.db'): |
|
||||||
print(colored('Removing existing DB', 'blue')) |
|
||||||
os.remove('acceth.db') |
|
||||||
|
|
||||||
with app.app_context(): |
|
||||||
db.create_all() |
|
||||||
db.session.commit() |
|
||||||
|
|
||||||
print(colored('New DB created.', 'green')) |
|
||||||
|
|
||||||
if __name__ == '__main__': |
|
||||||
RebuildDatabase() |
|
@ -1,25 +0,0 @@ |
|||||||
from marshmallow_sqlalchemy import SQLAlchemyAutoSchema |
|
||||||
from config import db |
|
||||||
from models import User |
|
||||||
from marshmallow import fields |
|
||||||
|
|
||||||
#*______________ Base Schema ______________ |
|
||||||
class BaseScheme(SQLAlchemyAutoSchema): |
|
||||||
def __str__(self): |
|
||||||
return str(self.__class__) + ": " + str(self.__dict__) |
|
||||||
class Meta: |
|
||||||
ordered = True |
|
||||||
sqla_session = db.session |
|
||||||
include_fk = True |
|
||||||
load_instance = True |
|
||||||
|
|
||||||
#*______________ User Schemes ______________ |
|
||||||
class UserSchema(BaseScheme): |
|
||||||
class Meta(BaseScheme.Meta): |
|
||||||
model = User |
|
||||||
id = fields.Int() |
|
||||||
name = fields.Str() |
|
||||||
class UserInsertSchema(UserSchema): |
|
||||||
user_id = fields.Int() |
|
||||||
class UserResponseSchema(UserSchema): |
|
||||||
name = fields.Str() |
|
@ -1,46 +0,0 @@ |
|||||||
from flask_apispec import marshal_with, doc, use_kwargs |
|
||||||
from flask_apispec.views import MethodResource |
|
||||||
from flask_restful import Resource |
|
||||||
from schemes import (UserSchema, UserResponseSchema) |
|
||||||
from config import db |
|
||||||
from models import User |
|
||||||
|
|
||||||
#!______________ User ______________ |
|
||||||
class UserService(MethodResource, Resource): |
|
||||||
@doc(description='Get User by User_id', tags=['User']) |
|
||||||
@marshal_with(UserResponseSchema) |
|
||||||
def get(self, user_id): |
|
||||||
quser = db.session.query(User).get(user_id) |
|
||||||
return UserSchema().dump(quser) |
|
||||||
|
|
||||||
@doc(description='Add new User', tags=['User']) |
|
||||||
@use_kwargs(UserSchema, location=('json')) |
|
||||||
@marshal_with(UserResponseSchema()) |
|
||||||
def post(self, user, user_id): |
|
||||||
db.session.add(user) |
|
||||||
db.session.commit() |
|
||||||
return UserSchema().dump(user) |
|
||||||
|
|
||||||
@doc(description='Update User with PUT', tags=['User']) |
|
||||||
@use_kwargs(UserSchema, location=('json')) |
|
||||||
@marshal_with(UserResponseSchema()) |
|
||||||
def put(self, user, user_id): |
|
||||||
db.session.add(user) |
|
||||||
db.session.commit() |
|
||||||
return UserSchema().dump(user) |
|
||||||
|
|
||||||
@doc(description='Delete existing User', tags=['User']) |
|
||||||
@use_kwargs(UserSchema, location=('json')) |
|
||||||
@marshal_with(UserResponseSchema()) |
|
||||||
def delete(self, user, user_id): |
|
||||||
user = db.session.query(User).get(user_id) |
|
||||||
db.session.delete(user) |
|
||||||
db.session.commit() |
|
||||||
return UserSchema().dump(user) |
|
||||||
|
|
||||||
class UserListService(MethodResource, Resource): |
|
||||||
@doc(description='Get a List of all User', tags=['List']) |
|
||||||
@marshal_with(UserResponseSchema(many=True)) |
|
||||||
def get(self): |
|
||||||
users = db.session.query(User).all() |
|
||||||
return UserSchema(many=True).dump(users) |
|
After Width: | Height: | Size: 378 KiB |
@ -0,0 +1,10 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en"> |
||||||
|
<head> |
||||||
|
<meta charset="UTF-8"> |
||||||
|
<title>Hello Worl!</title> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<img src="{{ planet }}" alt="Planet"> |
||||||
|
</body> |
||||||
|
</html> |
Before Width: | Height: | Size: 282 KiB |
Before Width: | Height: | Size: 615 KiB |
Loading…
Reference in new issue