summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomek Dubrownik <t.dubrownik@gmail.com>2013-01-27 04:23:25 +0100
committerTomek Dubrownik <t.dubrownik@gmail.com>2013-01-27 04:23:25 +0100
commit39441ecc018a01d0de5ab63a57eb5a37a1133bc9 (patch)
tree5ac2ca96d05637be965f6aeccbda625ba60cd882
downloadwww-main-39441ecc018a01d0de5ab63a57eb5a37a1133bc9.tar.gz
www-main-39441ecc018a01d0de5ab63a57eb5a37a1133bc9.tar.bz2
www-main-39441ecc018a01d0de5ab63a57eb5a37a1133bc9.tar.xz
www-main-39441ecc018a01d0de5ab63a57eb5a37a1133bc9.zip
initial, wip
-rw-r--r--main.cfg.dist8
-rw-r--r--main.py30
-rw-r--r--static/main.css93
-rw-r--r--templates/about.html31
-rw-r--r--templates/basic.html62
-rw-r--r--templates/header.html11
-rw-r--r--templates/main.html71
-rw-r--r--templates/rotimage_at.html6
8 files changed, 312 insertions, 0 deletions
diff --git a/main.cfg.dist b/main.cfg.dist
new file mode 100644
index 0000000..cfe04f4
--- /dev/null
+++ b/main.cfg.dist
@@ -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
diff --git a/main.py b/main.py
new file mode 100644
index 0000000..684a583
--- /dev/null
+++ b/main.py
@@ -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)
diff --git a/static/main.css b/static/main.css
new file mode 100644
index 0000000..3d6004c
--- /dev/null
+++ b/static/main.css
@@ -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;
+}
diff --git a/templates/about.html b/templates/about.html
new file mode 100644
index 0000000..161d8bc
--- /dev/null
+++ b/templates/about.html
@@ -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 %}
diff --git a/templates/basic.html b/templates/basic.html
new file mode 100644
index 0000000..d1cb28e
--- /dev/null
+++ b/templates/basic.html
@@ -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>
diff --git a/templates/header.html b/templates/header.html
new file mode 100644
index 0000000..9604bcf
--- /dev/null
+++ b/templates/header.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>
diff --git a/templates/main.html b/templates/main.html
new file mode 100644
index 0000000..0462789
--- /dev/null
+++ b/templates/main.html
@@ -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 %}
diff --git a/templates/rotimage_at.html b/templates/rotimage_at.html
new file mode 100644
index 0000000..dc2bf2b
--- /dev/null
+++ b/templates/rotimage_at.html
@@ -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>