- TurboGears - Deployment
- TurboGears - Restful Applications
- TurboGears - Pluggable Applications
- TurboGears - Writing Extensions
- TurboGears - Hooks
- TurboGears - Scaffolding
- TurboGears - Using MongoDB
- Authorization & Authentication
- TurboGears - Admin Access
- TurboGears - Pagination
- TurboGears - DataGrid
- TurboGears - Crud Operations
- TurboGears - Creating Models
- TurboGears - Sqlalchemy
- TurboGears - Caching
- TurboGears - Cookies and Sessions
- TurboGears - Flash Messages
- TurboGears - Validation
- TurboGears - Toscawidgets Forms
- TurboGears - URL Hierarchy
- TurboGears - JSON Rendering
- TurboGears - Includes
- Genshi Template Language
- TurboGears - HTTP Methods
- TurboGears - Serving Templates
- TurboGears - Dependencies
- TurboGears - First Program
- TurboGears - Environment
- TurboGears - Overview
- TurboGears - Home
TurboGears Useful Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
TurboGears - Writing Extensions
TurboGears extensions are identified by tgext.* package. A Gearbox toolkit provides tgext command to create a sample extension. For example −
gearbox tgext -n myextension
Other optional parameters for this command are −
--author − name of package author.
--email − email of package author.
--pcence − pcence used for package. Default is MIT.
--description − Description of package.
--keywords − Package keywords (default: turbogears2.extension).
This will create a tgext.myextension directory, which has a simple sample extension inside.
Run the setup.py inside the directory −
Python setup.py install
The _init_.py file inside tgext/myextension folder contains −
Plugme function − This is the entry point of extension.
SetupExtension class − extension initiapzation takes place here.
On_startup function − inside the class is a hook registered on __call__ function inside class.
Brief version of the tgextmyextension\__init__.py.
from tg import config from tg import hooks from tg.configuration import milestones import logging log = logging.getLogger( tgext.myextension ) def plugme(configurator, options = None): if options is None: options = {} log.info( Setting up tgext.myextension extension... ) milestones.config_ready.register(SetupExtension(configurator)) return dict(appid= tgext.myextension ) class SetupExtension(object): def __init__(self, configurator): self.configurator = configurator def __call__(self): log.info( >>> Pubpc files path is %s % config[ paths ][ static_files ]) hooks.register( startup , self.on_startup) def echo_wrapper_factory(handler, config): def echo_wrapper(controller, environ, context): log.info( Serving: %s % context.request.path) return handler(controller, environ, context) return echo_wrapper self.configurator.register_wrapper(echo_wrapper_factory) def on_startup(self): log.info( + Apppcation Running! )
Once the extension is installed, turn it on by making the following additions in the apppcation s app_cfg.py configuration file.
from tgext.myextension import plugme plugme(base_config)
If we launch the server using a gearbox server command, the notification of a newly registered extension can be viewed on the console by the following −
14:29:13,250 INFO [tgext.myextension] Setting up tgext.myextension extension... 14:29:13,453 INFO [tgext.myextension] >>> Pubpc files path is c: ghellohellohellopubpc 14:29:13,453 INFO [tgext.myextension] + Apppcation Running! Starting Standard HTTP server on http://127.0.0.1:8080Advertisements