Fet Foto Gallery Design

This commit is contained in:
Andreas Stephanides
2020-03-05 01:10:44 +01:00
parent 5eddd2b66e
commit b15db69db6
8 changed files with 254 additions and 57 deletions

1
.gitignore vendored
View File

@@ -6,3 +6,4 @@ env
*.log
*.sock
*.pid
thumbs/*

View File

@@ -14,20 +14,8 @@ import os
import re
from PIL import Image, ExifTags, ImageOps
from functools import partial
#from .flatpages import FileLists
# This is the directory, required for absolute file paths
#package_directory = os.path.dirname(os.path.abspath(__file__))
# Loading the config file
#cfg = Config((os.path.join(package_directory, '../config.cfg')))
cfg = Config("config.cfg")
# Loading constants from config file
#FLATPAGES_AUTO_RELOAD = cfg.get("FLATPAGES_AUTO_RELOAD",True) # Default can be overwritten by config cfg
#FLATPAGES_EXTENSION = cfg.get("FLATPAGES_EXTENSION",".md") # Default can be overwritten by config cfg
#FLATPAGES_ROOT = os.path.abspath(cfg.pages_root)
#FLATPAGES_DEFAULT_TEMPLATE = cfg.get("FLATPAGES_DEFAULT_TEMPLATE","gallery.html")
# Initialize application
app = Flask(__name__)
@@ -37,19 +25,16 @@ app.logger.setLevel(logging.DEBUG)
flatpages = FlatPagesIndex(app)
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.get('index')
app.logger.info('Initialize Foto Gallery App')
app.logger.info('Initialize FET Foto Gallery App')
app.logger.info('flatpages loaded %d pages' % len(flatpages._pages))
app.logger.info("Data directory is: %s" % flatpages.root)
app.logger.info("Url prefix;: %s" % cfg.url_prefix)
app.url_map.strict_slashes=True
@@ -57,6 +42,7 @@ freezer = Freezer(app)
page_blueprint = Blueprint('intern', __name__)
api_blueprint = Blueprint('api', __name__)
@page_blueprint.route('/thumb<int:size>/<path:name>')
def thumb(size=64,name=''):
@@ -69,6 +55,7 @@ def thumb(size=64,name=''):
print("creating thumb")
image= Image.open(file_name,'r')
s=size, size
if image._getexif() is not None:
for orientation in ExifTags.TAGS.keys():
if ExifTags.TAGS[orientation]=='Orientation':
break
@@ -103,7 +90,6 @@ def post(name=''):
page["has_img"]=True
page.links.endpoint='intern.post'
return render_template(page["template"], post=page,
pth=page["dirpath"])
@@ -112,19 +98,21 @@ def post(name=''):
elif os.path.exists(os.path.join('static',name)):
print("send from static dir %s" % name)
return send_from_directory('static',name)
elif os.path.exists(os.path.join(cfg["fet_assets"],name)):
return send_from_directory(cfg["fet_assets"],name)
else:
return send_from_directory('blueimp',name)
@page_blueprint.route('/<path:name>.json',strict_slashes=False)
@page_blueprint.route('/.json',strict_slashes=False)
@api_blueprint.route('/<path:name>.json',strict_slashes=False)
@api_blueprint.route('/.json',strict_slashes=False)
def postjson(name='index'):
print("Post: %s" % name)
page = flatpages.get(name)
if not page is None:
page["has_img"]=True # can be overwritten by file
page.links.endpoint='intern.postjson'
page.links.endpoint='api.postjson'
return jsonify(page=dict(page))
@@ -136,4 +124,5 @@ def postjson(name='index'):
app.register_blueprint(page_blueprint, url_prefix=cfg.url_prefix,static_folder='static')
app.register_blueprint(api_blueprint, url_prefix="/api/"+cfg.url_prefix,static_folder='static')
app.add_url_rule('%s/<path:name>' % cfg.url_prefix,'page', post)

View File

@@ -1,7 +1,8 @@
{# -*-jinja2-*- #}
{% extends "layout.html" %}
{% extends "layoutfetbs3.html" %}
{% block content %}
<h1>{{post.title}}</h1>
<small> von {{post.author}} </small>
{{post.html | safe}}
{% if post.links.images |length > 0 %}
@@ -22,11 +23,11 @@
<div id="links">
{% for d in post.links.images %}
<a href="{{d.url}}" title="{{d.title}}">
<img src="{{d.thumb_url}}" alt="{{d.title}}" />
<img src="{{d.thumb_url}}" alt="{{d.title}}" class="img-thumbnail" />
</a>
{% endfor %}
</div>
<script src="/gallery/js/blueimp-gallery.min.js"></script>
<script src="/galleries/js/blueimp-gallery.min.js"></script>
<script>
document.getElementById('links').onclick = function(event) {
event = event || window.event

View File

@@ -0,0 +1,33 @@
{# -*-jinja2-*- #}
{% extends "layoutfetbs3.html" %}
{% block content %}
{{ post.html|safe }}
{% if post.links.subindexpages | length > 0 %}
<div class= "container-fluid" >
<div class="row">
{% for d in post.links.subindexpages %}
<div class="span6">
<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>
</a>
</div>
{{ loop.cycle('','</div><div class="row">'.safe) }}
{% endfor %}
</div>
</div>
{% endif %}
{% endblock %}

View File

@@ -1,15 +1,58 @@
{# -*-jinja2-*- #}
<html>
<head></head>
<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" />
<!-- <link rel="stylesheet" href="/gallery/blue2fetat.css" />-->
</head>
<body>
<div class="container">
<div id="maincontainer" class="container-fluid">
<div class="row">
<div class="col-12">
<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>
<a href="{#url_for('page',name=b.path)#}{{b.url}}" class="breadcrumb-item">{{b.title}} </a> /
{% endfor %}
</nav>
@@ -20,7 +63,7 @@
</div>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,128 @@
{# -*-jinja2-*- #}
<html>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="https://www.fet.at/logo2014_64.png">
<link rel="alternate" hreflang="de" href="/de/home/search" />
<link rel="alternate" hreflang="en" href="/en/home/search" />
<link rel="stylesheet" href="/galleries/blue2fetat.css" />
<link rel="stylesheet" href="/galleries/css/blueimp-gallery.min.css" />
<script src="https://www.fet.at/assets/application-7cbec5b180d121b587cfe58e2d4517d1.js" type="text/javascript"></script>
<title>Fetsite</title>
</head>
<body>
<div id="maincontainer" class="container-fluid">
<div class="row-fluid">
<div class="span10 offset1 header_span">
<div class="header_wrap">
<div class="header hidden-print">
<a href="/home">
<!-- <span class="feticon-fet_logo fa-4x color-1"> </span>-->
<img alt="/galleries/Logo2014_64" height="50" src="/galleries/logo2014_64.png" style="float:left;height:50px" />
</a> </div>
<div class="header visible-print">
<img alt="Logo2014_64" height="50" src="/galleries/logo2014_64.png" style="float:left;height:50px" />
</div>
<div class="visible-print">
Fachschaft Elektrotechnik
<hr/>
</div>
<div id="menudiv" style="margin-top:12px" class="hidden-print">
<div class="navbar">
<div class="navbar-inner">
<div class="container">
<!-- <a class="brand" href="#"></a>-->
<a class ="btn btn-navbar" data-toggle="collapse" data-parent="#menudiv" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<div class="nav-collapse collapse">
<ul class="nav nav-pills nav-stacked">
<li><a href="/home">Startseite</a>
</li>
<li><a 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>
<ul class="nav nav-pills nav-stacked pull-right">
<li>
<!--<a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" > <img alt="De" src="/flaggen/png/de.png" /> Deutsch<b class="caret"></b></a>-->
<!-- Split button -->
<div class="btn-group navbar-btn">
<button type="button" class="btn btn-link dropdown-toggle" data-hover="dropdown" aria-expanded="false">
<img alt="De" src="/flaggen/png/de.png" /> Deutsch
</button>
<button type="button" class="btn btn-link dropdown-toggle" data-hover="dropdown" data-toggle="dropdown" >
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu">
<li><a href="/de"><img alt="At" src="/flaggen/png/at.png" /> Deutsch</a> </li>
<li><a href="/en"><img alt="Gb" src="/flaggen/png/gb.png" /> English</a> </li>
</ul></div>
</li><li>
<a href="/users/auth/ldap"><i class="ficon ffi1-academic"></i>FET Login</a>
</li></ul>
<!--<span class="pull-right"> <a href="/en"><img alt="Gb" src="/flaggen/png/gb.png" /> English</a>
</span>-->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
$('.dropdown-toggle').click(function(e) {
e.preventDefault();
setTimeout($.proxy(function() {
if ('ontouchstart' in document.documentElement) {
$(this).siblings('.dropdown-backdrop').off().remove();
}
}, this), 0);
});
</script>
<div class="row-fluid">
<div class="span10 offset1 header_span">
<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>
</body>
</html>

View File

@@ -1,5 +1,5 @@
{# -*-jinja2-*- #}
{% extends "layout.html" %}
{% extends "layoutfetbs3.html" %}
{% block content %}
<h1>{{post.title}}</h1>
@@ -10,8 +10,8 @@
<ul class="nav flex-column flex-sm-row " labeledby="up_head">
{% for d in post.links.subindexpages %}
<li class="nav-item">
<a href="{{d.url}}" class="nav-link">
<h6> {{d.title}} <small class="text-muted">{{d.desc}} </small> </h6>
<a href="{{d.url}}" class="nav-link"> <img src="{{d.thumb_url}}" alt="{{d.title}}" class="img-thumbnail" />
<h6> {{d.title}} ({{d.date}} <small class="text-muted">{{d.desc}} </small> </h6>
</a>
</li>
{% endfor %}
@@ -27,7 +27,8 @@
{% for d in post.links.subpages %}
<li class="nav-item">
<a href="{{d.url}}" class="nav-link text-info">
<h6> {{d.title}} <small class="text-muted">{{d.desc}} </small>
<h6> <img src="{{d.thumb_url}}" alt="{{d.title}}" class="img-thumbnail" />
{{d.title}} <small class="text-muted">{{d.desc}} </small>
</h6>
</a>

View File

@@ -3,4 +3,5 @@ Frozen-Flask
config
uwsgi
gevent
Pillow
git+https://github.com/andreassteph/flatpages_index.git