Skip to content

Instantly share code, notes, and snippets.

@jvanasco
jvanasco / app-models-__init__.py
Created January 3, 2012 20:21
Reflecting in Pyramid/SqlAlchemy
import logging
log = logging.getLogger(__name__)
from sqlalchemy import Table
from sqlalchemy import MetaData
from sqlalchemy.orm import mapper
from sqlalchemy.orm import scoped_session
from sqlalchemy.orm import sessionmaker
from zope.sqlalchemy import ZopeTransactionExtension
@jvanasco
jvanasco / php_var_dump.py
Created January 15, 2012 18:33
quick/dirty/incomplete implementation of php var_dump in python - this is to save a python data structure as a php variable.
def _php_var_dump(data,depth=0):
padding= " "*depth
keypadding= " "*(depth+1)
depth+= 1
if type(data) == types.DictType :
items = []
for i in data :
item = keypadding + "'%s' => %s" % (i,_php_var_dump(data[i],depth=depth))
items.append(item)
items = ',\n'.join(items)
@jvanasco
jvanasco / sqlassist.py
Created January 27, 2012 03:34
Supporting multiple database connections & Reflecting Tables in pyramid with sqlalchemy .7
r"""
sqlassist
~~~~~~~~~
v0.3
sections of code taken from :
- Mike Orr's package 'sqlahelper'
- Mike Bayer's blog post 'Django-style Database Routers in SQLAlchemy'
@jvanasco
jvanasco / README.txt
Created January 30, 2012 22:33
mongodb support in pyramid
Python MonogoDB integration, based on http://docs.pylonsproject.org/projects/pyramid_cookbook/en/latest/mongo.html
I'm migrating a few projects to use mongodb, and I found this to be the easiest way to maintain across all projects ( as in, i don't have to change any code outside of .ini files )
1. the main() routin in __init__.py just needs to call subscribers.mongodb.initialize_mongo_db()
2. subscribers has a single file called mongodb, which initializes
3. environment.ini has its own mongodb space. setting mongodb_use to 'true' will initialize it, setting it to anything else will ignore it.
@jvanasco
jvanasco / gist:1734244
Created February 4, 2012 01:18
pyramid_formencode_classic.py
"""
v 0.0.3
a port of some classic pylons styling, but without much of the cruft that was not used often
This allows for a very particular coding style, which i prefer.
As you can see below, 'methods' are broken into multiple parts:
@jvanasco
jvanasco / __init__.py
Created February 6, 2012 19:09
pyramid - how to automatically map the version of deform's static components that you're using to a subdir (on startup)
def main(global_config, **settings):
...
config.add_subscriber(\
'myApp.subscribers.deform_static_prep',
'pyramid.events.ApplicationCreated')
...
@jvanasco
jvanasco / select.html
Created February 7, 2012 20:05
jquery username availability check - with timeout
Choose a username. You can't post until you do!
<form method="post" action="/account/choose-username">
<input type="text" name="username" value="" id="username_selector"/>
<span id="fieldstatus-username"></span>
</form>
<script>
// on all keyups, set a message that the username is bad or that you're checking
// however, don't actually check until you have a timeout - e.g. .6 seconds
// there's no point on taxing a server to repeatedly check
@jvanasco
jvanasco / __init__.py
Created February 8, 2012 16:58
Pyramid Event Subscribers to migrate cookie data across redirects
def main(global_config,**settings):
...
config.add_subscriber(\
'myApp.subscribers.cookiexfer_new_request',
'pyramid.events.NewRequest')
config.add_subscriber(\
'myApp.subscribers.cookiexfer_new_response',
'pyramid.events.NewResponse')
...
@jvanasco
jvanasco / formgenerator.py
Created February 9, 2012 00:55 — forked from ericrasmussen/formgenerator.py
FormGenerator to extend Deform functionality
"""
Simple module to ease form handling with ``Deform``. The provided
``FormGenerator`` class handles repetitive tasks like validation,
xhr requests, and recovering from exceptions thrown by the model.
### Begin example scenario: Adding a new user
from myschemas import UserSchema
from formgenerator import (
@jvanasco
jvanasco / __init__.py
Created February 14, 2012 19:28
akhet init file
from pyramid.config import Configurator
import pyramid_beaker
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
config = Configurator(settings=settings)
# initiate Beaker sessions and caching.
# configuration is in your environment.ini file