# -*- coding: utf-8 -*- from urlparse import urlparse from flask import Markup class Project(object): def __init__(self, name, url, description, source=None): self.name = name self.url = url self.description = Markup(description) self.source = source @property def host(self): return urlparse(self.url)[1] @property def sourcehost(self): if self.source is not None: return urlparse(self.source)[1] def to_json(self): rv = vars(self).copy() rv['description'] = unicode(rv['description']) return rv projects = { 'websites': [ Project('Flask Website', 'http://flask.pocoo.org/', '''

The website of the Flask microframework itself including the mailinglist interface, snippet archive and extension registry. '''), Project('Brightonpy', 'http://brightonpy.org/', '''

The website of the Brighton Python User Group ''', source='http://github.com/j4mie/brightonpy.org/'), Project('vlasiku.lojban.org', 'http://vlasisku.lojban.org/', '''

An intelligent search engine for the Lojban dictionary. '''), Project(u's h o r e … software development', 'http://shore.be/', '''

Corporate website of Shore Software Development. '''), # this one might change URL soon, check on each update Project('rdrei.net', 'http://new.rdrei.net/', '''

Personal website of Pascal Hartig. '''), Project(u'Ryde–Hunters HFFPS', 'http://rydehhffps.org.au/', u'''

The website of the Ryde–Hunters Hill Flora and Fauna Society. '''), Project('Red Bank Creative', 'http://www.redbankcreative.org/', '''

Local community meetup site for Red Bank, NJ powered by Flask and running on GAE. ''') ], 'apps': [ Project('960 Layout System', 'http://960ls.atomidata.com/', '''

The generator of the 960 Layout System is powered by Flask. It generates downloadable 960 stylesheets. '''), Project('hg-review', 'http://review.stevelosh.com/', '''

hg-review is a code review system for Mercurial. It is available GPL2 license. ''', source='http://bitbucket.org/sjl/hg-review/'), Project('geocron', 'http://geocron.us/', '''

By combining your present location with the time of day, geocron automates your life.

When you get to your Metro station during the commute home, geocron can send a text message reading "Pick me up dear" to your spouse. '''), Project('Cockerel', 'http://dcolish.github.com/Cockerel/', '''

An Online Logic Assistent Based on Coq. ''', source='http://github.com/dcolish/Cockerel'), Project('Ryshcate', 'http://ryshcate.leafstorm.us/', '''

Ryshcate is a Flask powered pastebin with sourcecode available. ''', source='http://bitbucket.org/leafstorm/ryshcate/'), Project(u'Übersuggest Keyword Suggestion Tool', 'http://suggest.thinkpragmatic.net/', u'''

Übersuggest is a free tool that exploit the Google suggest JSON API to get keyword ideas for your search marketing campaign (PPC or SEO). ''', source='http://bitbucket.org/esaurito/ubersuggest') ] } # order projects by name for _category in projects.itervalues(): _category.sort(key=lambda x: x.name.lower()) del _category