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