bsp uwsgi

This commit is contained in:
www
2020-09-01 20:53:48 +00:00
parent 4c8ef46c6a
commit 49c7387592
8 changed files with 116 additions and 41 deletions

3
.gitignore vendored
View File

@@ -3,3 +3,6 @@ node_modules/
*.html
*.png
.env/
zips/*
flaskapp/build/*
*.pyc

13
bsp.service Normal file
View File

@@ -0,0 +1,13 @@
[Unit]
Description=uWSGI Simple Sample for Flat Page with Index Default
After=network.target
[Service]
#User=www-data
#Group=www-data
WorkingDirectory=/srv/andis_test/testw3m/
Environment="PATH=/srv/andis_test/testw3m/.env/bin"
ExecStart=/srv/andis_test/testw3m/.env/bin/uwsgi --ini uwsgi.ini
[Install]
WantedBy=multi-user.target

View File

@@ -3,7 +3,7 @@
"""
import logging
import sys
from flask import Flask, Blueprint,render_template, send_from_directory,jsonify, url_for, abort
from flask import Flask, Blueprint,render_template, send_from_directory,jsonify,redirect, url_for, abort,flash
from flask_frozen import Freezer
from config import Config
import os
@@ -15,13 +15,18 @@ from flask_mail import Mail,Message
from zipfile import ZipFile
from .token import TokenCollection
from flask import request
from cachetools import TTLCache, cached
from werkzeug.utils import secure_filename
# Initialize application
app = Flask(__name__)
app.config['MAIL_SERVER']= "buran.htu.tuwien.ac.at"
app.config['MAIL_DEFAULT_SENDER']="andis@fet.at"
app.config['FREEZER_DESTINATION_IGNORE']=['*.zip',"intern"]
app.config['FREEZER_DESTINATION_IGNORE']=['*.zip',"*intern*"]
app.config['FREEZER_STATIC_IGNORE']=['*.zip',"*intern*"]
mail=Mail(app)
app.config["url_prefix"]=""
app.secret_key = b'_5#y2L"F4Q8z\n\xec]/'
app.config["url_prefix"]="/bsp"
app.logger.setLevel(logging.DEBUG)
# Initialize FlatPages Index
tokens = TokenCollection("tokens.yaml")
@@ -31,9 +36,17 @@ tokens = TokenCollection("tokens.yaml")
# recipients=["andis@fet.at"])
#mail.send(msg)
UPLOAD_FOLDER = 'uploads'
ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'}
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@cached(cache=TTLCache(maxsize=1024, ttl=3600))
def load_lvas_folders_studien():
lvas=[]
studien={}
#search the data directory for yaml files
@@ -53,7 +66,6 @@ for studium, lvaliste in studien.items():
for k,lva in lvaliste.items():
if len(lva)>3:
lvas+=[lva]
folders={}
with open(os.path.join("testlvaliste.yaml"),"w") as f:
@@ -65,7 +77,7 @@ for lva in lvas:
for folder in l["folders"]:
folders[folder["folder"]]= folder["folderpath"]
return lvas, folders, studien
app.logger.info('Initialize FET BSP Sammlung')
@@ -92,23 +104,40 @@ def send_a_mail():
return "Done", 200
#@page_blueprint.route('/<path:name>/',strict_slashes=False)
@page_blueprint.route('/')
@page_blueprint.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
# check if the post request has the file part
if 'file' not in request.files:
flash('No file part')
return redirect(request.url)
file = request.files['file']
# if user does not select file, browser also
# submit an empty part without filename
if file.filename == '':
flash('No selected file')
return redirect(request.url)
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
folder=os.path.join(app.config['UPLOAD_FOLDER'],secure_filename(request.form["lva"]))
os.makedirs(folder)
file.save(os.path.join(folder, filename))
flash('Vielen Dank für deinen Upload')
return redirect(request.url)
lvas,folders,studien=load_lvas_folders_studien()
return render_template("lva_liste.html", lvas=lvas,zip=False)
@page_blueprint.route('/intern/zips.html')
def indexzips():
return render_template("lva_liste.html", lvas=lvas,zip=True)
@page_blueprint.route('intern/createtoken.html')
def createtoken():
@page_blueprint.route('intern/index.html')
def indexzips():
t=tokens.create()
lvas,folders,studien=load_lvas_folders_studien()
return render_template("lva_liste.html", lvas=lvas,zip=True, token=t)
@page_blueprint.route('intern/zips//<name>.zip')
@page_blueprint.route('zips//<name>.zip')
def files(name):
lvas, folders =load_lvas_folders_studien()
token = request.args.get('token')
# create a ZipFile objec
if not name in folders:
@@ -133,7 +162,9 @@ def api_index(name='index'):
return jsonify(page={}), 200, {'Content-Type': 'application/json; charset=utf-8'}
@freezer.register_generator
def url_freeze():
yield "/"
app.register_blueprint(page_blueprint, url_prefix=app.config["url_prefix"],static_folder='static')
app.register_blueprint(api_blueprint, url_prefix=app.config["url_prefix"]+"/api/",static_folder='static')

0
htpasswd Normal file
View File

1
run
View File

@@ -1,4 +1,3 @@
#!/bin/bash
source .env/bin/activate
node fetch_curricula.js
python run.py build

7
test_tokens.py Normal file
View File

@@ -0,0 +1,7 @@
from flaskapp.token import TokenCollection
tc=TokenCollection("tokens.yaml")
t=tc.create()
print(t)
print(tc.is_valid(t))

0
uwsgi.log Normal file
View File

22
uwsgibsp.ini Normal file
View File

@@ -0,0 +1,22 @@
[uwsgi]
# User and group www-data on debian
uid = 33
gid = 33
master = true
# No. of processes can be increased
processes = 3
chown-socket =www-data:www-data
virtualenv = /srv/andis_test/testw3m/.env
pythonpath = /srv/andis_test/testw3m/
pidfile=/var/run/bsp.pid
socket = /var/run/bsp.sock
chmod-socket = 666
module = flaskapp
callable= app
wsgi-file = run.py
logdate = true
logger = file:/srv/andis_test/testw3m/uwsgi.log
loglevel = debug
gevent = 100
vacuum=true
#plugins=python3,logfile