Browse Source

Webserver eingebaut

master
Eddie 2 years ago
parent
commit
a0d92acdff
  1. 33
      app.py
  2. 40
      config.py
  3. 10
      models.py
  4. BIN
      planet1.png
  5. BIN
      planet2.png
  6. 12
      planets.py
  7. 18
      rebuild_db.py
  8. 25
      schemes.py
  9. 46
      services.py
  10. BIN
      static/IMG/planet.png
  11. 10
      templates/hello.html
  12. BIN
      test3.png
  13. BIN
      test4.png
  14. 5
      wsgi.py

33
app.py

@ -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) IMG_FOLDER = os.path.join('static', 'IMG')
#*______________ Application Creation ______________
if __name__ == '__main__': app.config['UPLOAD_FOLDER'] = IMG_FOLDER
app.run(debug=True) @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')

40
config.py

@ -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)

10
models.py

@ -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())

BIN
planet1.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 462 KiB

BIN
planet2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 415 KiB

After

Width:  |  Height:  |  Size: 434 KiB

12
planets.py

@ -25,7 +25,7 @@ def changePlanetLayerColor(planetLayer):
red = random.uniform(-0.5,1.5) red = random.uniform(-0.5,1.5)
green = random.uniform(-0.5,1.5) green = random.uniform(-0.5,1.5)
blue = random.uniform(-0.5,1.5) blue = random.uniform(-0.5,1.5)
print(red,green,blue) #print(red,green,blue)
changedColor = changeImageColor(planetLayer, red, green, blue) changedColor = changeImageColor(planetLayer, red, green, blue)
return changedColor return changedColor
@ -42,8 +42,6 @@ def mergePlanetParts(light, noise1, noise2, noise3, sphere):
planet.paste(noise1, (0, 0), noise1) planet.paste(noise1, (0, 0), noise1)
planet = Image.blend(planet, noise2, 0.1) planet = Image.blend(planet, noise2, 0.1)
planet = Image.blend(planet, noise3, 0.1) planet = Image.blend(planet, noise3, 0.1)
#planet.paste(noise2, (0, 0), noise2)
#planet.paste(noise3, (0, 0), noise3)
return planet return planet
@ -63,9 +61,9 @@ def createRandomPlanet(seed):
sphere = changePlanetLayerColor(sphere) sphere = changePlanetLayerColor(sphere)
planet = mergePlanetParts(light, noise1, noise2, noise3, sphere) planet = mergePlanetParts(light, noise1, noise2, noise3, sphere)
planet.save("static/IMG/planet.png")
return planet return
planet = createRandomPlanet(random.randrange(0,10000)) #planet = createRandomPlanet('Elijah')
planet.save("planet2.png") #planet.save("planet2.png")

18
rebuild_db.py

@ -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()

25
schemes.py

@ -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()

46
services.py

@ -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)

BIN
static/IMG/planet.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 KiB

10
templates/hello.html

@ -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>

BIN
test3.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 KiB

BIN
test4.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 615 KiB

5
wsgi.py

@ -1,5 +0,0 @@
from config import app
if __name__ == "__main__":
app.run()
Loading…
Cancel
Save