deployment ready?
This commit is contained in:
@@ -1,12 +1,11 @@
|
||||
docker stop flask-fet-fotos
|
||||
docker container rm flask-fet-fotos
|
||||
docker build -t flask-fet-fotos .
|
||||
#docker run -d --name mycontainer -p 8080:8080 -v $(pwd):/app -e FLASK_APP=main.py -e FLASK_DEBUG=1 myimage flask run --host=0.0.0.0 --port=8080
|
||||
#
|
||||
while true; do
|
||||
read -p "Run a docker container?" yn
|
||||
case $yn in
|
||||
[Yy]* ) docker run --name flask-fet-fotos -d -p 8080:8080 \
|
||||
-v "$(pwd)/data:/mnt" flask-fet-fotos; break;;
|
||||
[Yy]* ) docker run -d --name flask-fet-fotos -p 8002:8002 -v $(pwd):/app -e pages_root=/app/data -e FLASK_APP=main.py -e FLASK_DEBUG=1 flask-fet-fotos flask run --host=0.0.0.0 --port=8002; break;;
|
||||
[Nn]* ) break;;
|
||||
* ) echo "Please answer yes or no.";;
|
||||
esac
|
||||
@@ -14,3 +13,7 @@ done
|
||||
|
||||
|
||||
#-v "$(pwd):/app"
|
||||
|
||||
#docker run --name flask-fet-fotos -d -p 8080:8080 \
|
||||
# -v "$(pwd)/data:/mnt" flask-fet-fotos; break;;
|
||||
#
|
||||
@@ -1 +1,2 @@
|
||||
title: title
|
||||
template: gallery_index.html
|
||||
0
data/test.html
Normal file
0
data/test.html
Normal file
12
docker-compose.yml
Normal file
12
docker-compose.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
version: "3"
|
||||
services:
|
||||
flaskfetfotos:
|
||||
build:
|
||||
context: .
|
||||
ports:
|
||||
- "8002:8080"
|
||||
environment:
|
||||
FLASK_DEBUG: 1
|
||||
FLASK_APP: main.py
|
||||
volumes:
|
||||
- .:/app
|
||||
@@ -21,10 +21,10 @@ import environ
|
||||
env = environ.Env(
|
||||
# set casting, default value
|
||||
DEBUG=(bool, False),
|
||||
pages_root=(str,'data_sample'),
|
||||
pages_root=(str,'../data'),
|
||||
static_root=(str,'static'),
|
||||
default_template=(str, 'page.html'),
|
||||
url_prefix =(str, "/stuff"),
|
||||
default_template=(str, 'gallery.html'),
|
||||
url_prefix =(str, "/fotos"),
|
||||
FLATPAGES_EXTENSION = (str, ".md"),
|
||||
FLATPAGES_AUTO_RELOAD = (bool, True)
|
||||
|
||||
@@ -32,12 +32,14 @@ env = environ.Env(
|
||||
# Initialize application
|
||||
app = Flask(__name__)
|
||||
#app.config.update(cfg)
|
||||
app.config["pages_root"]=env('pages_root')
|
||||
app.config["pages_root"]=os.path.abspath(env('pages_root'))
|
||||
app.config["static_root"]=env('static_root')
|
||||
app.config["default_template"]=env('default_template')
|
||||
app.config["FLATPAGES_DEFAULT_TEMPLATE"]=env('default_template')
|
||||
app.config["url_prefix"]=env('url_prefix')
|
||||
app.config["FLATPAGES_EXTENSION"]=env('FLATPAGES_EXTENSION')
|
||||
app.config["FLATPAGES_AUTO_RELOAD"]=env('FLATPAGES_AUTO_RELOAD')
|
||||
app.config["FLATPAGES_ROOT"]=os.path.abspath(env('pages_root'))
|
||||
|
||||
app.logger.setLevel(logging.DEBUG)
|
||||
# Initialize FlatPages Index
|
||||
@@ -47,7 +49,7 @@ flatpages_index.Links.endpoint="intern.post"
|
||||
flatpages_index.Links.image_url=lambda s,x: url_for(s.endpoint,name=x)
|
||||
flatpages_index.Links.thumb_url=lambda s,x: url_for("intern.thumb",size=128,name=x)
|
||||
flatpages_index.Links.image_url=lambda s,x: url_for("intern.post",name=x)
|
||||
flatpages_index.Page.page_defaults={"type":"gallery"}
|
||||
flatpages_index.Page.page_defaults={"type":"gallery", "template":"gallery.html"}
|
||||
flatpages.get('index')
|
||||
|
||||
app.logger.info('Initialize FET Foto Gallery App')
|
||||
@@ -106,17 +108,18 @@ def thumb(size=64,name=''):
|
||||
@page_blueprint.route('/<path:name>/',strict_slashes=False)
|
||||
@page_blueprint.route('/')
|
||||
def post(name=''):
|
||||
print("Post: %s" % name)
|
||||
app.logger.debug("post_name: %s" % name)
|
||||
page = flatpages.get(name)
|
||||
|
||||
if not page is None:
|
||||
page["has_img"]=True
|
||||
page.links.endpoint='intern.post'
|
||||
|
||||
app.logger.debug(dict(page))
|
||||
return render_template(page["template"], post=page,
|
||||
pth=page["dirpath"])
|
||||
|
||||
if os.path.exists(os.path.join(app.config["FLATPAGES_ROOT"],name)):
|
||||
app.logger.debug("sending static:%s" % name)
|
||||
return send_from_directory(app.config["FLATPAGES_ROOT"],name)
|
||||
elif os.path.exists(os.path.join('static',name)):
|
||||
print("send from static dir %s" % name)
|
||||
@@ -126,9 +129,6 @@ def post(name=''):
|
||||
elif os.path.exists(os.path.join("blueimp",name)):
|
||||
return send_from_directory(os.path.abspath('blueimp'),name)
|
||||
else:
|
||||
print("%s not found" % os.path.abspath(os.path.join('static',name)))
|
||||
print("%s not found" % os.path.abspath(os.path.join(cfg["fet_assets"],name)))
|
||||
|
||||
return abort(404)
|
||||
|
||||
@api_blueprint.route('/<path:name>.json',strict_slashes=False)
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
{# -*-jinja2-*- #}
|
||||
{% extends "layoutfetbs3.html" %}
|
||||
{% extends "layout.html" %}
|
||||
{% block head %}
|
||||
|
||||
<script src="/galleries/js/blueimp-gallery.min.js"></script>
|
||||
<script src="/galleries/init.js"></script>
|
||||
|
||||
|
||||
{% endblock %}
|
||||
@@ -12,6 +10,7 @@
|
||||
<h1>{{post.title}}</h1>
|
||||
<small> von {{post.author}} </small>
|
||||
{{post.html | safe}}
|
||||
|
||||
{% if post.links.images |length > 0 %}
|
||||
|
||||
<hr/>
|
||||
@@ -28,16 +27,17 @@
|
||||
<ol class="indicator"></ol>
|
||||
</div>
|
||||
|
||||
<div id="links">
|
||||
<div id="links" class="grid-x">
|
||||
{% for d in post.links.images %}
|
||||
<a href="{{d.url}}" title="{{d.title}}">
|
||||
|
||||
<a id="{{d.url | slug}}" href="{{d.url}}" title="{{d.title}}" class="cell medium-3 small-12 large-2">
|
||||
<img src="{{d.thumb_url}}" alt="{{d.title}}" class="img-thumbnail" />
|
||||
</a>
|
||||
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
|
||||
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
{# -*-jinja2-*- #}
|
||||
{% extends "layoutfetbs3.html" %}
|
||||
{% extends "layout.html" %}
|
||||
{% block content %}
|
||||
|
||||
{{ post.html|safe }}
|
||||
|
||||
|
||||
|
||||
{% if post.links.subindexpages | length > 0 %}
|
||||
<div class= "container-fluid" >
|
||||
<div class="row">
|
||||
|
||||
<div class= "grid-container" >
|
||||
<div class="grid-x">
|
||||
|
||||
{% for d in post.links.subindexpages %}
|
||||
<div class="span6">
|
||||
<div class="cell small-12 medium-4 large-3">
|
||||
<a href="{{d.url}}" class="gallery-block media">
|
||||
<img src="{{d.thumb_url}}" alt="{{d.title}}" class="img-thumbnail pull-left" />
|
||||
<div class="media-body">
|
||||
<small class="pull-right">{{d.date}} </small>
|
||||
<h2> {{d.title}} </h2>
|
||||
<div >{{d.desc}} </div>
|
||||
</div>
|
||||
<img src="{{d.thumb_url }}" alt="{{d.title}}" class="img-thumbnail pull-left" />
|
||||
<div class="media-body">
|
||||
<small class="pull-right">{{d.date}} </small>
|
||||
<h2> {{d.title}} </h2>
|
||||
<div >{{d.desc}} </div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
{{ loop.cycle('','</div><div class="row">')| safe }}
|
||||
{# loop.cycle('','','</div><div class="row">')| safe #}
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,69 +1,49 @@
|
||||
{# -*-jinja2-*- #}
|
||||
<html>
|
||||
|
||||
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="en">
|
||||
<head>
|
||||
<LINK href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" type="text/css">
|
||||
<link rel="stylesheet" href="/gallery/css/blueimp-gallery.min.css" />
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>FET DjangoLayout</title>
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self'">
|
||||
|
||||
<!-- <link rel="stylesheet" href="/gallery/blue2fetat.css" />-->
|
||||
<link rel="stylesheet" href="/fotos/app.css">
|
||||
<script src="/fotos/jquery-3.5.1.min.js"></script>
|
||||
<link rel="stylesheet" href="/fotos/css/blueimp-gallery.min.css" />
|
||||
|
||||
|
||||
|
||||
<script src="/fotos/js/blueimp-gallery.min.js"></script>
|
||||
<script src="/fotos/init.js"></script>
|
||||
{% block head %}
|
||||
{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="top-bar" id="main-menu">
|
||||
<div class="top-bar-left"><a href="/">
|
||||
<img style="height:40px; width:40px" src="/assets/img/logo2014_64.png"/></a>
|
||||
</div>
|
||||
<div class="top-bar-right">
|
||||
<ul class="menu vertical medium-horizontal expanded medium-text-center">
|
||||
<li class=""><a href="/">Home</a> </li>
|
||||
<li class=""><a href="/">Aktuelles</a> </li>
|
||||
<li class=""><a href="#">Info</a> </li>
|
||||
<li class=""><a href="#">Team</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<body>
|
||||
<div id="maincontainer" class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-10 offset-1">
|
||||
|
||||
<div class="header_wrap">
|
||||
<nav class="navbar navbar-expand-sm">
|
||||
|
||||
<div class="header d-print-none hidden-print">
|
||||
<a href="/home">
|
||||
<img alt="Logo2014_64" src="/gallery/logo2014_64.png" style="float:left;height:50px" height="50">
|
||||
</a>
|
||||
</div>
|
||||
<div class="header d-print-block d-none">
|
||||
<img alt="Logo2014_64" src="/gallery/logo2014_64.png" style="float:left;height:50px" height="50">
|
||||
|
||||
Fachschaft Elektrotechnik
|
||||
<hr>
|
||||
</div>
|
||||
<div id="menudiv" class="collapse navbar-collapse navbar-expand-sm">
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<li class="nav-item"><a class="nav-link" href="/home">Startseite</a>
|
||||
</li>
|
||||
<li class="nav-item"><a class="nav-link" href="/rubriken">Neuigkeiten</a></li>
|
||||
|
||||
<li><a href="/themengruppen">Information</a></li>
|
||||
<li><a href="/members">Mitarbeiter</a></li>
|
||||
<li><a href="/galleries">Fotos</a></li>
|
||||
<li><a href="/studien">Studien/Beispielsammlung</a></li>
|
||||
<li> <a href="/home/search">Suche</a></li>
|
||||
<li> <a href="/home/kontakt">Kontakt</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-10 offset-1">
|
||||
<nav class="breadcrumb" style="background-color: #FFF">
|
||||
{% for b in post.links.breadcrumbs %}
|
||||
<a href="{#url_for('page',name=b.path)#}{{b.url}}" class="breadcrumb-item">{{b.title}} </a> /
|
||||
{% endfor %}
|
||||
|
||||
</nav>
|
||||
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="grid-container">
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
<!-- App.js -->
|
||||
<script src="/fotos/app.js"></script>
|
||||
{% block scr %}
|
||||
{% endblock %}
|
||||
</body>
|
||||
</html>
|
||||
|
||||
8872
static/app.css
Normal file
8872
static/app.css
Normal file
File diff suppressed because one or more lines are too long
22644
static/app.js
Normal file
22644
static/app.js
Normal file
File diff suppressed because it is too large
Load Diff
2
static/jquery-3.5.1.min.js
vendored
Normal file
2
static/jquery-3.5.1.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user