initial, wip
commit
39441ecc01
|
@ -0,0 +1,8 @@
|
||||||
|
DATE_FORMAT = '%d-%m-%Y'
|
||||||
|
|
||||||
|
FEEDS = [
|
||||||
|
('redmine', 'https://redmine.hackerspace.pl/news.atom'),
|
||||||
|
('blog', 'https://blog.hackerspace.pl/feed/atom/'),
|
||||||
|
]
|
||||||
|
|
||||||
|
MAX_ENTRIES = 10
|
|
@ -0,0 +1,30 @@
|
||||||
|
import feedparser
|
||||||
|
from flask import Flask, render_template
|
||||||
|
from time import mktime
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
app = Flask('main')
|
||||||
|
app.config.from_pyfile('main.cfg')
|
||||||
|
|
||||||
|
def pull_feed_entries():
|
||||||
|
all_entries = []
|
||||||
|
for tag, url in app.config['FEEDS']:
|
||||||
|
entries = feedparser.parse(url).entries
|
||||||
|
for e in entries:
|
||||||
|
e.tag = tag
|
||||||
|
dt = datetime.fromtimestamp(mktime(e.updated_parsed))
|
||||||
|
e.updated_display = dt.strftime(app.config['DATE_FORMAT'])
|
||||||
|
all_entries.extend(entries)
|
||||||
|
all_entries.sort(key=lambda e: e.updated_parsed, reverse=True)
|
||||||
|
return all_entries[:app.config['MAX_ENTRIES']]
|
||||||
|
|
||||||
|
@app.route('/')
|
||||||
|
def main():
|
||||||
|
return render_template('main.html', entries=pull_feed_entries())
|
||||||
|
|
||||||
|
@app.route('/about')
|
||||||
|
def about():
|
||||||
|
return render_template('about.html')
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run('0.0.0.0', 8080, debug=True)
|
|
@ -0,0 +1,93 @@
|
||||||
|
a.news-title {
|
||||||
|
text-decoration: none;
|
||||||
|
color: #222
|
||||||
|
}
|
||||||
|
|
||||||
|
#hs_content .news h3 {
|
||||||
|
padding-left: 90px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.news .date:before {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: bold;
|
||||||
|
display: block;
|
||||||
|
font-family: 'Titillium Web', sans;
|
||||||
|
color: #eee;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin: 8px 0 5px 5px;
|
||||||
|
padding: 0 0 2px 0;
|
||||||
|
vertical-align: middle;
|
||||||
|
text-align: center;
|
||||||
|
width: 80px;
|
||||||
|
margin-right: 0.5em;
|
||||||
|
}
|
||||||
|
.news .redmine .date:before {
|
||||||
|
content: "redmine";
|
||||||
|
background: #c3352b;
|
||||||
|
}
|
||||||
|
|
||||||
|
.news .blog .date:before {
|
||||||
|
content: "blog";
|
||||||
|
background: #21a;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.news {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.news li {
|
||||||
|
border-bottom: 2px groove #fff;
|
||||||
|
padding-top: 8px;
|
||||||
|
padding-right: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#hs_content .news li {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#about {
|
||||||
|
border-bottom: 2px groove #fff;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.date {
|
||||||
|
font-weight: bold;
|
||||||
|
display: block;
|
||||||
|
width: 90px;
|
||||||
|
text-align: center;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.author {
|
||||||
|
text-decoration: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
#left {
|
||||||
|
margin-right: 310px;
|
||||||
|
border-right: 2px groove #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#right {
|
||||||
|
width: 310px;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clear {
|
||||||
|
clear: both;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.moar {
|
||||||
|
font-family: "Titillium Web", sans;
|
||||||
|
font-weight: bold;
|
||||||
|
// background: url("/static/cutcube.png");
|
||||||
|
background-color: #fd6;
|
||||||
|
// background-color: #2c702a;
|
||||||
|
color: #222;
|
||||||
|
padding: 4px;
|
||||||
|
border-radius: 5px;
|
||||||
|
text-align: center;
|
||||||
|
display: block;
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
{% extends 'basic.html' %}
|
||||||
|
{% block title %}O Hackerspace Warszawa{% endblock %}
|
||||||
|
{% block content %}
|
||||||
|
<h1>O Hackerspace Warszawa</h1>
|
||||||
|
<p>
|
||||||
|
Hackerspace to przestrzeń stworzona i utrzymywana przez grupę kreatywnych osób, które łączy fascynacja
|
||||||
|
ogólno pojętym tworzeniem w duchu kultury hackerskiej. Przestrzeń stymuluje rozwój projektów, organizując i
|
||||||
|
użyczając potrzebnych narzędzi. Hackerspace nie zna barier, jeśli masz ciekawy pomysł i szukasz ludzi
|
||||||
|
chętnych do współpracy lub po prostu potrzebujesz miejsca i sprzętu - zapraszamy!
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Jeżeli chcesz się do nas przyłączyć, przeczytaj dokładniejsze informacje o naszych celach i zapisz się
|
||||||
|
na jedną z naszych list mailingowych. Spotykamy się we wtorki o 22 drugiej na kanale IRC #hackerspace-pl
|
||||||
|
(irc.freenode.net) oraz w czwartki na żywo.
|
||||||
|
</p>
|
||||||
|
<h3>Cele</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Chcemy stworzyć miejsce, w którym ludzie zainteresowani techniką, elektroniką, informatyką, mechaniką, sztuką i pokrewnymi dziedzinami tworzenia mogą się zbierać aby rozmawiać, wymieniać się pomysłami i rozwiązaniami, oraz pracować nad projektami.</li>
|
||||||
|
<li>Chcemy żeby miejsce to było w Warszawie, w miejscu zapewniającym optymalny dojazd, zwłaszcza komunikacją publiczną.</li>
|
||||||
|
<li>Chcemy niezależności, dlatego uznajemy że optymalnym źródłem finansowania są obowiązkowe składki. Składki zostaną wykorzystane na finansowanie miejsca oraz, gdy to zostanie zapewnione, na zakup narzędzi.</li>
|
||||||
|
<li>Chcemy żeby miejsce było otwarte na nowych ludzi i nowe pomysły.</li>
|
||||||
|
<li>Chcemy zebrać narzędzia i wiedzę jak się ich używa w miejscu umożliwiającym ich używanie.</li>
|
||||||
|
<li>Chcemy się rozwijać i poznawać nowe dziedziny wiedzy</li>
|
||||||
|
<li>Chcemy się dobrze bawić.</li>
|
||||||
|
</ul>
|
||||||
|
<h3>Lokalizacja</h3>
|
||||||
|
<p>
|
||||||
|
Warszawski Hackerspace znajduje się w budynku ITR, w piwnicy. Sam ITR mieści się na ulicy Długiej 44, tuż obok Metra Ratusz-Arsenał.
|
||||||
|
</p>
|
||||||
|
<div id="map"><img src="/static/mapka.png" style="border-radius: 4px;" /></div>
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,62 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
|
||||||
|
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
|
||||||
|
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
|
||||||
|
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
|
||||||
|
<head>
|
||||||
|
{% block head %}
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><![endif]-->
|
||||||
|
<title>{% block title %}{% endblock %}</title>
|
||||||
|
<script src="https://static.hackerspace.pl/js/jquery.min.js"></script>
|
||||||
|
{% block checkinator_script %}
|
||||||
|
<script src="https://static.hackerspace.pl/js/checkinator-header.js"></script>
|
||||||
|
{% endblock %}
|
||||||
|
{% block page_scripts %}
|
||||||
|
{% endblock %}
|
||||||
|
{% block basic_style %}
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="https://static.hackerspace.pl/img/favicon.ico"/>
|
||||||
|
<link rel="apple-touch-icon" href="https://static.hackerspace.pl/img/glider.png"/>
|
||||||
|
<link rel="stylesheet" href="https://static.hackerspace.pl/fonts/news-cycle/stylesheet.css"/>
|
||||||
|
<link rel="stylesheet" href="https://static.hackerspace.pl/fonts/titillium/stylesheet.css"/>
|
||||||
|
<link rel="stylesheet" href="https://static.hackerspace.pl/css/style.css"/>
|
||||||
|
{% endblock %}
|
||||||
|
{% block page_style %}
|
||||||
|
{% endblock %}
|
||||||
|
{% endblock %}
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
{% block body %}
|
||||||
|
<a name="top"></a>
|
||||||
|
{% block header %}
|
||||||
|
{% include 'header.html' %}
|
||||||
|
{% endblock %}
|
||||||
|
<div id="hs_main">
|
||||||
|
{% block main %}
|
||||||
|
<div id="hs_rotimage">
|
||||||
|
{% block rotimage %}
|
||||||
|
{% include 'rotimage_at.html' %}
|
||||||
|
{% block rotimage_login %}
|
||||||
|
<div class="hs_login_bar">
|
||||||
|
{% block login %}
|
||||||
|
<ul>
|
||||||
|
<li><a class="action user" href="https://ldap.hackerspace.pl">Member profile</a></li>
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
{% endblock %}
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
<div id="hs_content">
|
||||||
|
{% block content %}
|
||||||
|
{% endblock %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% block footer %}
|
||||||
|
{% endblock %}
|
||||||
|
{% endblock %}
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<header id="hs_branding">
|
||||||
|
<a id="hs_header" href="https://hackerspace.pl/">Warsaw Hackerspace</a>
|
||||||
|
<ul id="hs_header_menu">
|
||||||
|
<li><a href="https://hackerspace.pl/">about</a></li>
|
||||||
|
<li><a href="https://blog.hackerspace.pl">blog</a></li>
|
||||||
|
<li><a href="https://wiki.hackerspace.pl">wiki</a></li>
|
||||||
|
<li><a href="https://code.hackerspace.pl">code</a></li>
|
||||||
|
<li><a href="https://webchat.hackerspace.pl">chat</a></li>
|
||||||
|
<li><a href="https://redmine.hackerspace.pl">tasks</a></li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
|
@ -0,0 +1,71 @@
|
||||||
|
{% extends 'basic.html' %}
|
||||||
|
{% block page_scripts %}
|
||||||
|
<script type="text/javascript" src="https://widgets.twimg.com/j/2/widget.js"></script>
|
||||||
|
{% endblock %}
|
||||||
|
{% block page_style %}
|
||||||
|
<link rel="stylesheet" href="static/main.css"/>
|
||||||
|
{% endblock %}
|
||||||
|
{% block title %}Hackerspace Warszawa - strona główna{% endblock %}
|
||||||
|
{% block content %}
|
||||||
|
<div id="right">
|
||||||
|
<h1 class"mail">Listy mailingowe</h1>
|
||||||
|
<h1 class="twitter">Twitter</h1>
|
||||||
|
<script type="text/javascript">
|
||||||
|
new TWTR.Widget({
|
||||||
|
version: 2,
|
||||||
|
type: 'profile',
|
||||||
|
rpp: 5,
|
||||||
|
interval: 6000,
|
||||||
|
theme: {
|
||||||
|
shell: {
|
||||||
|
background: '#eee',
|
||||||
|
color: '#222'
|
||||||
|
},
|
||||||
|
tweets: {
|
||||||
|
background: '#eee',
|
||||||
|
color: '#222',
|
||||||
|
links: '#001ea6'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
features: {
|
||||||
|
scrollbar: false,
|
||||||
|
loop: false,
|
||||||
|
live: false,
|
||||||
|
hashtags: true,
|
||||||
|
timestamp: true,
|
||||||
|
avatars: true,
|
||||||
|
behavior: 'all'
|
||||||
|
}
|
||||||
|
}).render().setUser('hackerspacepl').start();
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
<div id="left">
|
||||||
|
<div id="about">
|
||||||
|
<h1>Co to Hackerspace?</h1>
|
||||||
|
<p>
|
||||||
|
Hackerspace to przestrzeń stworzona i utrzymywana przez grupę kreatywnych osób, które łączy fascynacja
|
||||||
|
ogólno pojętym tworzeniem w duchu <a href="http://ultra.ap.krakow.pl/~raj/hacker-howto.html">kultury
|
||||||
|
hackerskiej</a>. Przestrzeń stymuluje rozwój projektów, organizując i użyczając potrzebnych narzędzi.
|
||||||
|
Hackerspace nie zna barier, jeśli masz ciekawy pomysł i szukasz ludzi chętnych do współpracy lub po
|
||||||
|
prostu potrzebujesz miejsca i sprzętu - zapraszamy!
|
||||||
|
</p>
|
||||||
|
<a href="/about" class="moar">Gdzie jesteśmy? Jak do nas dołączyć? Dowiedz się więcej!</a>
|
||||||
|
</div>
|
||||||
|
<h1>Nowości</h1>
|
||||||
|
<ul class="news">
|
||||||
|
{% for e in entries %}
|
||||||
|
<li class="{{e.tag}}">
|
||||||
|
<a class="news-title" href="{{e.link}}">
|
||||||
|
<span class="date">{{e.updated_display}}</span>
|
||||||
|
<h3>{{e.title|safe}}</h3>
|
||||||
|
by <span class="author">{{e.author_detail.name or 'Anonymous'}}</span>
|
||||||
|
</a>
|
||||||
|
<p class="news">
|
||||||
|
{{e.summary|safe}}
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<span class="clear"><a href="#top">↑ Powrót na górę ↑</span>
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,6 @@
|
||||||
|
<div id="status" style="display: none;">
|
||||||
|
<div id="status-tooltip" style="display: none;">
|
||||||
|
<p>Refreshing...</p>
|
||||||
|
</div>
|
||||||
|
<img src="https://static.hackerspace.pl/img/status-open.png" alt="Sorry, we're open! - The Warsaw Hackerspace is open right now." />
|
||||||
|
</div>
|
Loading…
Reference in New Issue