PylonsTemplates: extra Paster templates for Pylons apps
PylonsTemplates gives you additional paster templates for Pylons applications. (Right now, there is one.)
Once the PylonsTemplates module is installed, you can create new Pylons projects like this:
paster create -t [templatename] [projectname]
pylons_repoze_what
Based on the default Pylons paster template, the pylons_repoze_what template
implements a working authorization system based on repoze.what and
repoze.what-quickstart. (Authentication by repoze.who is automatically set
up as well.) The template generates:
- User, Group and Permission models for SQLALchemy
- A login (& logout) controller
- A minimal template for the login form.
- A package dependency on repoze.what-pylons, which includes decorators you can use on controllers and actions.
- Commented out sample code in websetup.py that creates a user, group, and permission.
Quick example of repoze.what-pylons usage
Once you have created your project using paster create -t pylons_repoze_what, you will probably want to start protecting controllers or actions. Read the repoze.what-pylons documentation, linked below, for the full scoop. But here's a quick example ot get you started.
from repoze.what.predicates import has_permission
from repoze.what.plugins.pylonshq import ActionProtector
class HelloWorldController(BaseController):
@ActionProtector(has_permission('be_cool'))
def index(self):
return 'Hello World'
Links
- GitHub project page / source code
- Issue tracker (GitHub)
- repoze.what documentation
- repoze.what-pylons documentation
Feedback
Please direct all suggestions or responses to Jason Stitt at js@jasonstitt.com.
Tweet it!
Comments
myapp/config/middleware.py passes logging.INFO to setup_sql_auth() of repoze.what.plugins.__init__.py
The setup_sql_auth expects string if not None but logging.INFO is actually an integer.
log_level = who_args.get('log_level', None)
if log_level is None:
log_level = logging.INFO
else:
log_level = _LEVELS[log_level.lower()]
who_args['log_level'] = log_level
I commented out the last 3 lines
I have two problems.
1. capital project name at import block in auth.py. It seems trivial problem :)
2. log_level value is not string at CUSTOM MIDDLEWARE HERE "if asbool(full_stack):" section in middleware.py . My project started after changing INFO to 'INFO'. Is it right?
I don't quite understand the capital project name problem. I think I remember that 'paster create' does not support capitals, and I don't think I can fix that.