From 475ce71bfb57fba45376c568d603007a5e52f54a Mon Sep 17 00:00:00 2001 From: Eevee Date: Wed, 14 Jul 2010 21:47:31 -0700 Subject: [PATCH 1/1] Initial commit; very dumb front page support. --- .gitignore | 4 ++++ setup.py | 18 ++++++++++++++++ splinext/__init__.py | 1 + splinext/frontpage/__init__.py | 27 ++++++++++++++++++++++++ splinext/frontpage/controllers/__init__.py | 0 splinext/frontpage/controllers/frontpage.py | 32 +++++++++++++++++++++++++++++ splinext/frontpage/templates/index.mako | 10 +++++++++ 7 files changed, 92 insertions(+) create mode 100644 .gitignore create mode 100644 setup.py create mode 100644 splinext/__init__.py create mode 100644 splinext/frontpage/__init__.py create mode 100644 splinext/frontpage/controllers/__init__.py create mode 100644 splinext/frontpage/controllers/frontpage.py create mode 100644 splinext/frontpage/templates/index.mako diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..942b636 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.swp +*.pyc + +*.egg-info/ diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..a256563 --- /dev/null +++ b/setup.py @@ -0,0 +1,18 @@ +from setuptools import setup, find_packages +setup( + name = 'spline-frontpage', + version = '0.1', + packages = find_packages(), + + install_requires = [ + 'spline', + ], + + include_package_data = True, + + zip_safe = False, + + entry_points = {'spline.plugins': 'frontpage = splinext.frontpage:FrontPagePlugin'}, + + namespace_packages = ['splinext'], +) diff --git a/splinext/__init__.py b/splinext/__init__.py new file mode 100644 index 0000000..de40ea7 --- /dev/null +++ b/splinext/__init__.py @@ -0,0 +1 @@ +__import__('pkg_resources').declare_namespace(__name__) diff --git a/splinext/frontpage/__init__.py b/splinext/frontpage/__init__.py new file mode 100644 index 0000000..ceb606c --- /dev/null +++ b/splinext/frontpage/__init__.py @@ -0,0 +1,27 @@ +from pkg_resources import resource_filename + +from spline.lib.plugin import PluginBase +from spline.lib.plugin import PluginBase, PluginLink, Priority + +import splinext.frontpage.controllers.frontpage + +def add_routes_hook(map, *args, **kwargs): + """Hook to inject some of our behavior into the routes configuration.""" + map.connect('/', controller='frontpage', action='index') + + +class FrontPagePlugin(PluginBase): + def controllers(self): + return dict( + frontpage = splinext.frontpage.controllers.frontpage.FrontPageController, + ) + + def template_dirs(self): + return [ + (resource_filename(__name__, 'templates'), Priority.FIRST) + ] + + def hooks(self): + return [ + ('routes_mapping', Priority.NORMAL, add_routes_hook), + ] diff --git a/splinext/frontpage/controllers/__init__.py b/splinext/frontpage/controllers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/splinext/frontpage/controllers/frontpage.py b/splinext/frontpage/controllers/frontpage.py new file mode 100644 index 0000000..959f5fb --- /dev/null +++ b/splinext/frontpage/controllers/frontpage.py @@ -0,0 +1,32 @@ +import logging + +from pylons import config, request, response, session, tmpl_context as c, url +from pylons.controllers.util import abort, redirect_to +from routes import request_config +from sqlalchemy.orm.exc import NoResultFound + +from spline.lib import helpers as h +from spline.lib.base import BaseController, render +from spline.lib.plugin.load import run_hooks + +log = logging.getLogger(__name__) + +class FrontPageController(BaseController): + + def index(self): + """Magicaltastic front page. + + Plugins can register things to appear on it, somehow. + + Local plugins can override the fairly simple index.mako template to + customize the front page layout. + """ + # Hooks should return a list of FrontPageUpdate objects, making this + # return value a list of lists + updates_lol = run_hooks('frontpage_updates', limit=10) + updates = sum(updates_lol, []) + updates.sort(key=lambda obj: obj.time) + + c.updates = updates[0:10] + + return render('/index.mako') diff --git a/splinext/frontpage/templates/index.mako b/splinext/frontpage/templates/index.mako new file mode 100644 index 0000000..b9d9f4f --- /dev/null +++ b/splinext/frontpage/templates/index.mako @@ -0,0 +1,10 @@ +<%inherit file="base.mako" /> + +<%def name="title()">Home + +

Updates

+% for update in c.updates: +

${repr(update.__dict__)}

+<%include file="${update.template}" args="update=update" /> +
+% endfor -- 2.7.4