add competition page, fix banner, add favicon

This commit is contained in:
Oliver Marks 2015-06-18 14:06:43 +01:00
parent 2dc7c26842
commit 40f33348f8
38 changed files with 145 additions and 52 deletions

View File

@ -11,7 +11,7 @@ RUN \
apt-get update && \ apt-get update && \
apt-get upgrade -y && \ apt-get upgrade -y && \
apt-get install -y software-properties-common python-software-properties && \ apt-get install -y software-properties-common python-software-properties && \
apt-get install -y python-requests python-lxml python-flask apt-get install -y python-requests python-lxml python-flask python-tz
RUN add-apt-repository -y ppa:oly/ppa RUN add-apt-repository -y ppa:oly/ppa
RUN apt-get update RUN apt-get update

0
LICENSE Normal file → Executable file
View File

View File

@ -1,4 +1,5 @@
flask flask
lxml lxml
requests requests
pytz
pip install -e bzr+lp:scaffold#egg=scaffold pip install -e bzr+lp:scaffold#egg=scaffold

0
site/__init__.py Normal file → Executable file
View File

View File

@ -2,6 +2,7 @@
page_menu = [ page_menu = [
('Home', '/'), ('Home', '/'),
#('About', '#about'), #('About', '#about'),
('Competition', '/competition'),
('Contact', '#mailing-list-signup')] ('Contact', '#mailing-list-signup')]
banner_images = [ banner_images = [

View File

@ -23,6 +23,7 @@ web.template.append('<link rel="icon" type="image/png" href="/static/template/im
#paths #paths
web.document_root = os.path.abspath('./') web.document_root = os.path.abspath('./')
web.template.domain = 'http://maidstone-hackspace.org.uk/'
web.template.theme_full_path = os.path.abspath('./static/template') + os.sep web.template.theme_full_path = os.path.abspath('./static/template') + os.sep
domain = 'http://192.168.21.41:5000/' domain = 'http://192.168.21.41:5000/'
image_path = domain + os.sep + 'template' + os.sep + 'images' + os.sep image_path = domain + os.sep + 'template' + os.sep + 'images' + os.sep
@ -48,14 +49,21 @@ def dict_to_list(data, keys):
#~ footer() #~ footer()
def header(): def header():
# logo and social links at very top of the page
web.header_strip.create({})
web.header_strip.social(web.google_plus.create(web.template.domain, plus=True, share=False, comments=False).render())
web.template.body.append(web.header_strip.render())
# navigation
web.menu.create('/', 'leftNav') web.menu.create('/', 'leftNav')
web.menu * site.page_menu web.menu * site.page_menu
web.template.body.append(web.header_strip.create({}).render())
web.template.body.append(web.menu.render()) web.template.body.append(web.menu.render())
# extra javascript libraries
web.template.javascript_includes.append('<script type="text/javascript" src="/static/js/jquery-2.1.4.min.js"></script>') web.template.javascript_includes.append('<script type="text/javascript" src="/static/js/jquery-2.1.4.min.js"></script>')
web.template.javascript_includes.append('<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.js"></script>') web.template.javascript_includes.append('<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.js"></script>')
web.template.javascript_includes.append('<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular-animate.js"></script>') web.template.javascript_includes.append('<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular-animate.js"></script>')
web.template.header.append('<link rel="icon" type="image/png" href="/static/images/favicon.png">')
def footer(): def footer():
web.footer_content.create().append( web.footer_content.create().append(
@ -68,44 +76,60 @@ def footer():
def examples(): def examples():
""" page for testing new components""" """ page for testing new components"""
header() header()
web.page.create('examples')
web.twitter_feed.create(username='MHackspace', widget_id='606798560374484992')
web.page.section(web.twitter_feed.render())
web.page.append( #this is as simple as you can get
web.google_groups.create( web.page.section('put some content on the page')
' and make yourself known','maidstone-hackspace'
).set_id('mailing-list').render()
)
web.tiles.create()
#~ feed = feed_reader('')
#render to the template
feed = feed_reader(site.rss_feeds)
for row in feed:
print row
print type(row.get('description'))
web.tiles.append(
title = '%s By %s' %(row.get('title'), row.get('author')),
link = row.get('url'),
image = row.get('image'),
description = row.get('description'))
web.div.append(row)
web.page.append(web.tiles.render())
web.template.body.append(web.page.render()) web.template.body.append(web.page.render())
#finish of the page
return footer() return footer()
def competition():
""" page for testing new components"""
header()
web.page.create(
web.images.create(
image='/static/template/images/hackspace-banner.png',
title="Screw sorting competition banner").render())
web.paragraph.create(
"""We are some friendly competitions, so if your not sure what to work on consider entering and win some swag.""")
web.paragraph.append(
"""The First cometition will be to design a device which can sort a jar of screws by size, the winning entry we will attempt to build.""")
web.page.section(web.paragraph.render())
bullet_list = [
("Submit designs by some date here", ),
("Images can be design in any software or on a piece of paper but must be submitted as a jpg on the mailing list.", ),
("stick figures and crude line drawing are fine, we are not judge your artistic ability.",)]
print bullet_list
web.list.create(ordered=False).set_classes('bullet-list')
web.list * bullet_list
web.page.section(web.list.render())
#render to the template
web.template.body.append(web.page.render())
#finish of the page
return footer()
def blogs(): def blogs():
""" page for testing new components""" """ page for testing new components"""
header() header()
web.page.create('blogs') web.page.create('blogs')
web.columns.create()
web.columns.append('test1')
web.columns.append('test2')
web.page.section(web.columns.render())
web.tiles.create() web.tiles.create()
feed = feed_reader(site.rss_feeds) feed = feed_reader(site.rss_feeds)
for row in feed: for row in feed:
print row.get('image') print row.get('image')
web.tiles.append( web.tiles.append(
@ -121,6 +145,7 @@ def blogs():
web.template.body.append(web.page.render()) web.template.body.append(web.page.render())
return footer() return footer()
def index(): def index():
header() header()
@ -154,13 +179,11 @@ def index():
web.page.section(web.title.create('Proposed activities').render()) web.page.section(web.title.create('Proposed activities').render())
bullet_list = [] bullet_list = [
bullet_list.append( ("Workshop on building a mobile application which can run on ios and android,"
("""Workshop on building a mobile application which can run on ios and android, potentially game oriented for a bit of fun, but open to suggestions.""",)) "potentially game oriented for a bit of fun, but open to suggestions.", ),
bullet_list.append( ("Build an interactive splash screen to feature on this site.",),
("""Build an interactive splash screen to feature on this site.""",)) (web.link.create('Suggest a new activity', 'Suggest a new activity', '#mailing-list-signup').render(),)]
bullet_list.append(
(web.link.create('Suggest a new activity', 'Suggest a new activity', '#mailing-list-signup').render(),))
web.list.create(ordered=False).set_classes('bullet-list') web.list.create(ordered=False).set_classes('bullet-list')
web.list * bullet_list web.list * bullet_list
@ -169,7 +192,24 @@ def index():
web.div.create('').set_classes('panel') web.div.create('').set_classes('panel')
web.twitter_feed.create(username='MHackspace', widget_id='606798560374484992') web.twitter_feed.create(username='MHackspace', widget_id='606798560374484992')
web.page.append(web.twitter_feed.render()) web.page.append(web.twitter_feed.render())
web.tiles.create()
feed = feed_reader(site.rss_feeds)
for row in feed:
print row.get('image')
web.tiles.append(
title = row.get('title'),
author = row.get('author'),
link = row.get('url'),
image = row.get('image'),
date = row.get('date'),
description = row.get('description'))
web.div.append(row)
web.page.append(web.tiles.render())
web.template.body.append(web.page.render()) web.template.body.append(web.page.render())
return footer() return footer()
@ -187,6 +227,9 @@ if __name__ == "__main__":
with codecs.open('./html/blog.html', 'w', "utf-8") as fp: with codecs.open('./html/blog.html', 'w', "utf-8") as fp:
fp.write(blogs().decode('utf-8')) fp.write(blogs().decode('utf-8'))
with codecs.open('./html/competition.html', 'w', "utf-8") as fp:
fp.write(competition().decode('utf-8'))
#~ file = codecs.open("lol", "w", "utf-8") #~ file = codecs.open("lol", "w", "utf-8")
#~ file.write(u'\ufeff') #~ file.write(u'\ufeff')
#~ file.close() #~ file.close()

View File

@ -16,7 +16,7 @@ web_app = Flask(__name__, static_url_path='/static')
def examples(): def examples():
"""temporary for testing / examples""" """temporary for testing / examples"""
return make_response(pages.examples()) return make_response(pages.examples())
@web_app.route("/blogs/", methods=['GET']) @web_app.route("/blogs/", methods=['GET'])
def blogs(): def blogs():
"""temporary for testing / examples""" """temporary for testing / examples"""
@ -27,5 +27,10 @@ def index():
"""home page""" """home page"""
return make_response(pages.index()) return make_response(pages.index())
@web_app.route("/competition/", methods=['GET'])
def competition():
"""competition page"""
return make_response(pages.competition())
if __name__ == '__main__': if __name__ == '__main__':
web_app.run(host='0.0.0.0', port=5000, debug=True) web_app.run(host='0.0.0.0', port=5000, debug=True)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -130,3 +130,6 @@ button {margin-bottom:20px;background-color: #fff; height: 48px; width:100%; bor
#footerbottom {background-color:#0087A8;height:300px;} #footerbottom {background-color:#0087A8;height:300px;}
#footerbottom div.container {margin:auto;background-color:#0087A8;height:250px;width:960px;} #footerbottom div.container {margin:auto;background-color:#0087A8;height:250px;width:960px;}
.twitter-feed {width:460px;margin:20px;} .twitter-feed {width:460px;margin:20px;}
.social {z-index:1;position:absolute;right:0px;top:0px;margin-top:25px;}

0
site/static/template/images/example-01.jpg Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 94 KiB

0
site/static/template/images/example-02.jpg Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 93 KiB

0
site/static/template/images/example-03.jpg Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 53 KiB

0
site/static/template/images/hackspace.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

0
site/static/template/images/hackspace.svg Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 100 KiB

0
site/static/template/images/icon.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

0
site/static/template/images/tile-01.jpg Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

0
site/static/template/images/tile-02.jpg Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

0
site/widgets/__init__.py Normal file → Executable file
View File

0
site/widgets/__init__.pyc Normal file → Executable file
View File

View File

@ -7,7 +7,6 @@ class control(www.default.html_ui):
buttons = [] buttons = []
content = [] content = []
count = 0 count = 0
with open(os.path.abspath('./widgets/banner_slider.js')) as fp: with open(os.path.abspath('./widgets/banner_slider.js')) as fp:
script = [fp.read()] script = [fp.read()]
@ -25,8 +24,8 @@ class control(www.default.html_ui):
else: else:
self.content.append(u'<img src="%s" /><div class="content">%s<br />%s</div>' % (image, title, intro)) self.content.append(u'<img src="%s" /><div class="content">%s<br />%s</div>' % (image, title, intro))
def render(self): def render(self):
self.count += 0 self.count += 1
htm = u'<div class="banner-slide" ng-app="myApp" ng-controller="sliderController">' htm = u'<div class="banner-slide" ng-app="myApp" ng-controller="sliderController">'
htm += u'<ul ng-switch on="currentSlide" ng-init="length=%d;">' % (len(self.content)) htm += u'<ul ng-switch on="currentSlide" ng-init="length=%d;">' % (len(self.content))
count = 0 count = 0

Binary file not shown.

23
site/widgets/columns.py Normal file
View File

@ -0,0 +1,23 @@
from scaffold.web import www
class control(www.default.html_ui):
def create(self, cols=2):
self.cols = []
self.current_column = 0
for c in range(0, cols):
self.cols.append([])
return self
def next_column(self):
for c in self.cols:
yield ''.join(c)
def append(self, content):
if self.current_column > len(self.cols)-1:
self.current_column = 0
self.cols[self.current_column].append(content)
self.current_column += 1
def render(self):
return '<div>%s</div>' % '</div><div>'.join(self.next_column())

22
site/widgets/example.py Normal file
View File

@ -0,0 +1,22 @@
import os
from scaffold.web import www
class control(www.default.html_ui):
"""Image cycle widgets"""
buttons = []
count = 0
with open(os.path.abspath('./widgets/banner_slider.js')) as fp:
js = [fp.read()]
def create(self):
self.reset()
def reset(self):
self.content = []
def append(self, text):
self.content.append(u'<div class="content">%s</div>' % (text))
def render(self):
return u"".join(self.content)

0
site/widgets/footer-content.pyc Normal file → Executable file
View File

0
site/widgets/footer.pyc Normal file → Executable file
View File

0
site/widgets/footer_content.py Normal file → Executable file
View File

0
site/widgets/footer_content.pyc Normal file → Executable file
View File

0
site/widgets/google_group.pyc Normal file → Executable file
View File

0
site/widgets/google_groups.py Normal file → Executable file
View File

0
site/widgets/google_groups.pyc Normal file → Executable file
View File

0
site/widgets/google_hangout.py Normal file → Executable file
View File

0
site/widgets/google_hangout.pyc Normal file → Executable file
View File

20
site/widgets/header_strip.py Normal file → Executable file
View File

@ -1,23 +1,19 @@
from scaffold.core.widget import base_widget
#from scaffold.web import web as html class control(base_widget):
from scaffold.web import www
#from scaffold.web import web as html
#from libs import html as customhtml
class control(www.default.html_ui):
def create(self, params): def create(self, params):
self.params = params self.params = params
self.social_html = []
return self return self
def social(self, htm):
self.social_html.append(htm)
def render(self): def render(self):
htm = '<div id="headerstrip"><nav class="navstrip">' htm = '<div id="headerstrip"><nav class="navstrip">'
htm += '<div class="left mini-logo">Maidstone Hackspace</div>' htm += '<div class="left mini-logo">Maidstone Hackspace</div>'
htm += '<div id="user_info" class="left">' htm += '<div class="social">'
htm += '<div id="newticket"></div>' htm += "".join(self.social_html)
htm += '<div id="username"></div>'
htm += '</div>'
htm += '<div class="right">'
htm += '<div ></div>'
htm += '</div>' htm += '</div>'
htm += '</nav></div>' htm += '</nav></div>'
return htm return htm

Binary file not shown.

0
site/widgets/headerstrip.pyc Normal file → Executable file
View File

0
site/widgets/loginbox.py Normal file → Executable file
View File

0
site/widgets/loginbox.pyc Normal file → Executable file
View File

0
site/widgets/readme Normal file → Executable file
View File