Compare commits

...

2 Commits

Author SHA1 Message Date
Eddie cd267700af Image Handling gefixed 2 years ago
Eddie a0d92acdff Webserver eingebaut 2 years ago
  1. 29
      app.py
  2. 40
      config.py
  3. 10
      models.py
  4. BIN
      planet1.png
  5. BIN
      planet2.png
  6. 17
      planets.py
  7. 18
      rebuild_db.py
  8. 25
      schemes.py
  9. 46
      services.py
  10. BIN
      static/IMG/planet.png
  11. 11
      templates/index.html
  12. BIN
      test3.png
  13. BIN
      test4.png
  14. 5
      wsgi.py

29
app.py

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

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

17
planets.py

@ -1,7 +1,6 @@
import os, random
from PIL import Image
light_directory = os.fsencode(str(os.getcwd() + "/planets/light"))
noise_directory = os.fsencode(str(os.getcwd() + "/planets/noise"))
sphere_directory = os.fsencode(str(os.getcwd() + "/planets/sphere"))
@ -11,13 +10,12 @@ amount_noise = len(os.listdir(noise_directory))
amount_sphere = len(os.listdir(sphere_directory))
def changeImageColor(im, red, green, blue):
# Split into 3 channels
r, g, b, a = im.split()
# Change channel by factor
r = r.point(lambda i: i * red)
g = g.point(lambda i: i * green)
b = b.point(lambda i: i * blue)
# Recombine back to RGB image
result = Image.merge('RGBA', (r, g, b, a))
return result
@ -25,7 +23,6 @@ def changePlanetLayerColor(planetLayer):
red = random.uniform(-0.5,1.5)
green = random.uniform(-0.5,1.5)
blue = random.uniform(-0.5,1.5)
print(red,green,blue)
changedColor = changeImageColor(planetLayer, red, green, blue)
return changedColor
@ -42,8 +39,6 @@ def mergePlanetParts(light, noise1, noise2, noise3, sphere):
planet.paste(noise1, (0, 0), noise1)
planet = Image.blend(planet, noise2, 0.1)
planet = Image.blend(planet, noise3, 0.1)
#planet.paste(noise2, (0, 0), noise2)
#planet.paste(noise3, (0, 0), noise3)
return planet
@ -63,9 +58,5 @@ def createRandomPlanet(seed):
sphere = changePlanetLayerColor(sphere)
planet = mergePlanetParts(light, noise1, noise2, noise3, sphere)
return planet
planet = createRandomPlanet(random.randrange(0,10000))
planet.save("planet2.png")
planet.save("static/IMG/planet.png")
return

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: 443 KiB

11
templates/index.html

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

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