from urlparse import urlparse from flask import Module, render_template, Markup from werkzeug import url_quote extensions = Module(__name__, url_prefix='/extensions') class Extension(object): def __init__(self, name, author, description, github=None, bitbucket=None, docs=None, website=None): self.name = name self.author = author self.description = Markup(description) self.github = github self.bitbucket = bitbucket self.docs = docs self.website = website @property def pypi(self): return 'http://pypi.python.org/pypi/%s' % url_quote(self.name) @property def docserver(self): if self.docs: return urlparse(self.docs)[1] database = [ Extension('Flask-OAuth', 'Armin Ronacher', description='''

Adds OAuth support to Flask. ''', github='mitsuhiko/flask-oauth', docs='http://packages.python.org/Flask-OAuth/' ), Extension('Flask-OpenID', 'Armin Ronacher', description='''

Adds OpenID support to Flask. ''', github='mitsuhiko/flask-openid', docs='http://packages.python.org/Flask-OpenID/' ), Extension('Flask-XML-RPC', 'Matthew Frazier', description='''

Adds XML-RPC support to Flask. ''', bitbucket='leafstorm/flask-xml-rpc', docs='http://packages.python.org/Flask-XML-RPC/' ), Extension('flask-csrf', 'Steve Losh', description='''

A small Flask extension for adding CSRF protection. ''', docs='http://sjl.bitbucket.org/flask-csrf/', bitbucket='sjl/flask-csrf' ), Extension('flask-lesscss', 'Steve Losh', description='''

A small Flask extension that makes it easy to use LessCSS with your Flask application. ''', docs='http://sjl.bitbucket.org/flask-lesscss/', bitbucket='sjl/flask-lesscss' ), Extension('flask-urls', 'Steve Losh', description='''

A collection of URL-related functions for Flask applications. ''', docs='http://sjl.bitbucket.org/flask-urls/', bitbucket='sjl/flask-urls' ) ] database.sort(key=lambda x: x.name.lower()) @extensions.route('/') def index(): return render_template('extensions/index.html', extensions=database) @extensions.route('/creating/') def creating(): return render_template('extensions/creating.html')