generated from Eddie/Backend-Boilerplate
Compare commits
2 Commits
381a7d43a5
...
cd267700af
Author | SHA1 | Date |
---|---|---|
Eddie | cd267700af | 2 years ago |
Eddie | a0d92acdff | 2 years ago |
14 changed files with 37 additions and 170 deletions
@ -1,13 +1,22 @@
|
||||
from services import (UserService, UserListService) |
||||
from config import app, api, docs, CORS |
||||
import os |
||||
from flask import Flask, render_template, send_file |
||||
from planets import createRandomPlanet |
||||
|
||||
#*______________ Service Registration ______________ |
||||
api.add_resource(UserService, '/api/user/<user_id>') |
||||
docs.register(UserService) |
||||
api.add_resource(UserListService, '/api/list/user') |
||||
docs.register(UserListService) |
||||
#*______________ Application Creation ______________ |
||||
if __name__ == '__main__': |
||||
app.run(debug=True) |
||||
app = Flask(__name__) |
||||
|
||||
IMG_FOLDER = os.path.join('static', 'IMG') |
||||
app.config['UPLOAD_FOLDER'] = IMG_FOLDER |
||||
|
||||
@app.route('/') |
||||
def index(): |
||||
planet = os.path.join(app.config['UPLOAD_FOLDER'], 'planet.png') |
||||
return render_template('index.html', planet=planet) |
||||
|
||||
@app.route('/<seed>') |
||||
def hello(seed): |
||||
createRandomPlanet(seed) |
||||
planet = os.path.join(app.config['UPLOAD_FOLDER'], 'planet.png') |
||||
return send_file(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 |
@ -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: 443 KiB |
@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="UTF-8"> |
||||
<title>Planets</title> |
||||
</head> |
||||
<body> |
||||
<h1>Welcome to Planets</h1> |
||||
<img src="{{ planet }}" alt="Planet"> |
||||
</body> |
||||
</html> |
Before Width: | Height: | Size: 282 KiB |
Before Width: | Height: | Size: 615 KiB |
Loading…
Reference in new issue