[TurboGears] Re: Announcing TGWebServices 1.0

2007-02-12 Thread lateef jackson
/soap/api.wsdl, You had me at WebService. This is so sweet!

On 2/9/07, Kevin Dangoor [EMAIL PROTECTED] wrote:


 I'm pleased to announce the release of TGWebServices 1.0:
 multiprotocol web services for TurboGears.

 http://tgwebservices.python-hosting.com/

 More info:

 TurboGears gives you a plain HTTP with JSON return values API for your
 application for free. This isn't always what you want, though. Sometimes,
 you don't want to expose all of the data to the web that you need to
 render your templates. Maybe you need to support a protocol that names the
 function it's calling as part of what it POSTs such as SOAP or XML-RPC.

 TGWebServices provides a super simple API for creating web services that
 are available via SOAP, HTTP-XML, and HTTP-JSON. The SOAP API generates
 WSDL automatically for your Python and even generates enough type
 information for statically typed languages (Java and C#, for example) to
 generate good client code on their end.

 How easy is it?

 ::

 class Multiplier(WebServicesRoot):

 @wsexpose(int)
 @wsvalidate(int, int)
 def multiply(self, num1, num2):
 return num1 * num2

 With this at the root, SOAP clients can find the WSDL file at
 /soap/api.wsdl and POST SOAP requests to /soap/. HTTP requests to
 /multiply?num1=5num2=20 will return an XML document with the result of
 100. Add ?tg_format=json (or an HTTP Accept: text/javascript header) and
 you'll get JSON back.

 The great thing about this is that the code above looks like a '''normal
 Python function''' and doesn't know a thing about web services.

 Features
 

 * Easiest way to expose a web services API
 * Supports SOAP, HTTP+XML, HTTP+JSON
 * Outputs wrapped document/literal SOAP, which is the most widely
   compatible format
 * Provides enough type information for statically typed languages to
   generate conveniently usable interfaces
 * Can output instances of your own classes
 * Works with TurboGears 1.0
 * MIT license allows for unrestricted use


 --
 Kevin Dangoor
 TurboGears / Zesty News

 email: [EMAIL PROTECTED]
 company: http://www.BlazingThings.com
 blog: http://www.BlueSkyOnMars.com

 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
TurboGears group.
To post to this group, send email to turbogears@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en
-~--~~~~--~~--~--~---



[TurboGears] Re: The performance test of 6 leading web-frameworks.

2007-02-06 Thread lateef jackson
I want to take this opportunity to ask for some help. Right now I am working
a draft for 
Optimizationhttp://docs.turbogears.org/1.0/RoughDocs/Optimizationfor
TG. If anyone can fire away and email me on or off the list with
topics
suggestions or what every I am going to try and cover things based on most
common performance errors (bad queries, excessive looping ect) and low
hanging fruit (built in SQLObject caching, Cheetah cache ect) first. After
that we can cover more advanced topics.

Thanks,
Lateef

On 2/6/07, Alrond [EMAIL PROTECTED] wrote:


 I have conducted the small additional test.
 So by requests I tested TurboGears with various template engines: Kid,
 Cheetah, Genshi and Jinja

 http://www.alrond.com/en/2007/feb/04/in-addition-to-the-test-of-mvc-frameworks/


 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
TurboGears group.
To post to this group, send email to turbogears@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en
-~--~~~~--~~--~--~---



[TurboGears] Re: To-Do list for Documentation

2007-02-05 Thread lateef jackson
For those of us who are trying to contrib is this the list we should be
working off of?
http://docs.turbogears.org/1.0/RoughDocs/DocumentationWishList
I grabbed what the first thing I thought I could work on (Optimization).

Just wanted to make sure I was on the right track.

Cheers,
Lateef


On 2/5/07, Karl Guertin [EMAIL PROTECTED] wrote:


 On 2/5/07, tamara6 [EMAIL PROTECTED] wrote:
  With my answer.  I think documentation for SO could be better.  I feel
  like it has been forgotten in the rush for SA.

 That would be true if we had docs for SA. Actually, we're trying to
 get TG-specific components covered first and then branch out into
 filling in component documentation.

 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
TurboGears group.
To post to this group, send email to turbogears@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en
-~--~~~~--~~--~--~---



[TurboGears] Re: Identity, doing without sessions, and memcached

2006-10-04 Thread lateef jackson
The code could be recreated from memory, I am sure I can get it freed but it isn't really all that magical. It needs some clean up but I will double check and post the file if I can.On 10/4/06, 
Stuart Clarke [EMAIL PROTECTED] wrote:
On Tue, 2006-10-03 at 08:42 -0400, lateef jackson wrote: +1 A project I worked on implemented some caching abstraction. There where basically 2 options Cache and TimedCache. Cache was an open
 ended cache where the caching system would evict objects as it needed the space. TimedCache was a cache that would expire after a specific amount of time. Generally we usedthe TimedCache for web content that
 rarely changed. Note: objects that went into the open ended cache would also need to have code that invlidated those objects. We had 2 providers of back end caching memcache (
http://www.danga.com/memcached/) and lrcucache (http://freshmeat.net/projects/lrucache/). Simplified Dict interface. Only supports 'in', setitem, and getitem, delitem.
 memcached is really a wonderful piece of software but only if you need it. You can probably get away with a simpler caching system if you are only running 1 TG instance and don't need to share the cache with
 anything outside of TG.*** AFAIK, memcached's interface isn't very complex at all.It's a hashof arbitrary data, with strings (or maybe any arbitrary data?) as thekeys.For a single TG instance, this could be implemented as a simple
Python dictionary in the app server's RAM, probably global to all TGthreads, and therefore mutex-protected.Is your code available for contribution, or is it locked up inside anNDA somewhere?Stuart

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: an ERP application

2006-09-18 Thread lateef jackson
What kind of modules where you thinking about? They kinda talk about some of the pieces they have at compiere: http://www.compiere.org/erp.htmlI think this is a great idea and could benefit TG a lot.
On 9/17/06, Wektor [EMAIL PROTECTED] wrote:
Hi,im thinkimg about building an open source modular ERP application withTG.I did some analisis work and its a huge project so im looking forsupport and comments about this idea.Wektor

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: Mac x86 install problems

2006-09-14 Thread lateef jackson
yeah I have installed it on X86 mac mini and had no problems at all. I assume you are using Universal Binary 2.4.3?On 9/14/06, 
[EMAIL PROTECTED] [EMAIL PROTECTED] wrote:
Has anyone installed Turbogears 1.0b on a Mac x86? I have no problemson PPC but no luck on x86 version

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: IntegrityError

2006-08-15 Thread lateef jackson
If you are looking for JMS type stuff you might check out http://twistedmatrix.com/ or http://www.pythomnic.org/I myself have not missed JMS. XML-RPC covers for any service I need to provide. I would recommend SQLAlchemy instead of SQLObject it will freshen you up compared to Java. 
On 8/14/06, Peter Bunyan [EMAIL PROTECTED] wrote:
I'm using MySQL and since the user can create activities I need to relyon the db for its unique constraint. Not just that but the above codedoes not work either since None in not returned but an exception. I
don't want to roll back the code but continue - I did not start thetransaction but the framework did. The exception should not invalidethe transaction - I don't know what else has gone on in the transactionor how deep my work is! This pattern should work - something in TG or
SQLObject is stopping it.You are right, catching all exceptions is not a good thing. I do notlike that I have to catch a MySQL specific exception! I would like thecode to be db agnostic where ever possible. The framework should wrap
logical errors!Again the documentation about transaction is sketchy. I assume that theframework will rollback on exceptions or try to commit - it causesproblems when I do that in my code as a commit or rollback is called
again! That too causes and exception!Besides that I am blown away by TG - CherryPy, SQLObject and Kid are abreath of fresh air after J2EE. If only python had JMS and JTM I wouldbe happy.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: tg-admin problems

2006-07-25 Thread lateef jackson
Finnally found the problem. There was a python path issue! My home directory is encrypted so I try to keep as little as possible there. My .pydistutils.cfg was pointing to a symlinked directory in my home. However the error came from /storage/local which is where the symlink pointed to. Long story short once I changed my python path to point to the directory instead of the symlink everything worked fine.
On 7/21/06, Lateef Jackson [EMAIL PROTECTED] wrote:
I can run setup.py install in the an existing project. None of thetg-admin command seem to workhere is the output I get. Any ideas?tg-admin quickstart t1TurboGears 0.9a8 command line interface
Usage: /home/lj/local/bin/tg-admin [command] [options]Available commands:Traceback (most recent call last):File /home/lj/local/bin/tg-admin, line 7, in ?sys.exit(File/storage/local/python/TurboGears-
0.9a8-py2.4.egg/turbogears/command/base.py,line 329, in mainlongest = max([len(key) for key in commands.keys()])ValueError: max() arg is an empty sequence
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] tg-admin problems

2006-07-21 Thread Lateef Jackson

I can run setup.py install in the an existing project. None of the
tg-admin command seem to work
here is the output I get. Any ideas?

tg-admin quickstart t1

TurboGears 0.9a8 command line interface

Usage: /home/lj/local/bin/tg-admin [command] [options]

Available commands:
Traceback (most recent call last):
  File /home/lj/local/bin/tg-admin, line 7, in ?
sys.exit(
  File
/storage/local/python/TurboGears-0.9a8-py2.4.egg/turbogears/command/base.py,
line 329, in main
longest = max([len(key) for key in commands.keys()])
ValueError: max() arg is an empty sequence


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
TurboGears group.
To post to this group, send email to turbogears@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/turbogears
-~--~~~~--~~--~--~---



[TurboGears] Fresh easy_install of 0.9a7 SQLObject install fails

2006-07-20 Thread Lateef Jackson

I ran the command:
easy_install -Uf http://www.turbogears.org/preview/download TurboGears

It seams easy_install is trying to install sqlobject 0.8dev? I thought
TG only needed 0.7 to work? Anyway I had to reinstall my machine and it
fails with this message:

Best match: SQLObject 0.8dev
Downloading
http://svn.colorstudy.com/SQLObject/trunk#egg=SQLObject-0.8dev
Doing subversion checkout from
http://svn.colorstudy.com/SQLObject/trunk to
/tmp/easy_install-kWDg7G/trunk
Processing trunk
Running setup.py -q bdist_egg --dist-dir
/tmp/easy_install-kWDg7G/trunk/egg-dist-tmp-9hio3M
/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/distutils/dist.py:236:
UserWarning: Unknown distribution option: 'entry_points'
  warnings.warn(msg)
/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/distutils/dist.py:236:
UserWarning: Unknown distribution option: 'extras_require'
  warnings.warn(msg)
/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/distutils/dist.py:236:
UserWarning: Unknown distribution option: 'install_requires'
  warnings.warn(msg)
warning: no files found matching '*.html'
warning: no files found matching '*.css'
warning: no files found matching 'examples/*.py'
warning: no files found matching 'docs/*.html'
warning: no files found matching '*.py' under directory 'tests'
zip_safe flag not set; analyzing archive contents...
sqlobject.classregistry: module references __file__
sqlobject.manager.command: module references __file__
No eggs found in /tmp/easy_install-kWDg7G/trunk/egg-dist-tmp-9hio3M
(setup script problem?)
error: Could not find required distribution SQLObject=0.7.1dev-r1457


Any ideas?

Cheers,
Lateef


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
TurboGears group.
To post to this group, send email to turbogears@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/turbogears
-~--~~~~--~~--~--~---



[TurboGears] Re: TurboGears 0.9a7 released!

2006-07-19 Thread lateef jackson
I am having an sqlobject error:Reading http://sqlobject.orgReading http://www.python.org/pypi/SQLObject/0.7.0Best match: SQLObject 
0.8devDownloading http://svn.colorstudy.com/SQLObject/trunk#egg=SQLObject-0.8devDoing subversion checkout from 
http://svn.colorstudy.com/SQLObject/trunk to /tmp/easy_install-UMZRvp/trunkProcessing trunkRunning setup.py -q bdist_egg --dist-dir /tmp/easy_install-UMZRvp/trunk/egg-dist-tmp-51UI_n/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/distutils/dist.py:236: UserWarning: Unknown distribution option: 'entry_points'
 warnings.warn(msg)/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/distutils/dist.py:236: UserWarning: Unknown distribution option: 'extras_require' warnings.warn(msg)/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/distutils/dist.py:236: UserWarning: Unknown distribution option: 'install_requires'
 warnings.warn(msg)warning: no files found matching '*.html'warning: no files found matching '*.css'warning: no files found matching 'examples/*.py'warning: no files found matching 'docs/*.html'warning: no files found matching '*.py' under directory 'tests'
zip_safe flag not set; analyzing archive contents...sqlobject.classregistry: module references __file__sqlobject.manager.command: module references __file__No eggs found in /tmp/easy_install-UMZRvp/trunk/egg-dist-tmp-51UI_n (setup script problem?)
error: Could not find required distribution SQLObject=0.7.1dev-r1457On 7/19/06, Jonathan LaCour 
[EMAIL PROTECTED] wrote:Kevin Dangoor wrote: TurboGears 
0.9a7 is an interim release while we get our documentation in order. Once the documentation is set, we'll start issuing 1.0 beta releases. Once we hit the beta cycle, TurboGears.org wlll likely highlight those versions over the 
0.8.x version.Upgrading causes a fairly recently created app that was working on0.9a6 to blow up:Page handler: bound method Root.index ofphoenix_ui.controllers.Root object at 0x126dcd0
Traceback (most recent call last): File SITE_PACKAGES/CherryPy-2.2.1-py2.4.egg/cherrypy/_cphttptools.py, line 105, in _run self.main() File SITE_PACKAGES/CherryPy-2.2.1-py2.4.egg
/cherrypy/_cphttptools.py, line 254, in main body = page_handler(*virtual_path, **self.params) File string, line 3, in index File SITE_PACKAGES/TurboGears-0.9a7-py2.4.egg
/turbogears/controllers.py, line 331, in expose output = database.run_with_transaction( File string, line 5, in run_with_transaction File SITE_PACKAGES/TurboGears-0.9a7-py2.4.egg
/turbogears/database.py, line 245, in so_rwt retval = func(*args, **kw) File string, line 5, in _expose File SITE_PACKAGES/TurboGears-0.9a7-py2.4.egg/turbogears/
controllers.py, line 348, in lambda mapping, fragment, *args, **kw))) File SITE_PACKAGES/TurboGears-0.9a7-py2.4.egg/turbogears/controllers.py, line 382, in _execute_func return _process_output(output, template, format, content_type,
mapping, fragment) File SITE_PACKAGES/TurboGears-0.9a7-py2.4.egg/turbogears/controllers.py, line 74, in _process_output fragment=fragment) File SITE_PACKAGES/TurboGears-0.9a7-py2.4.egg
/turbogears/view/base.py, line 132, in render return engine.render(**kw) File SITE_PACKAGES/TurboKid-0.9.7-py2.4.egg/turbokid/kidsupport.py, line 156, in render return t.serialize
(encoding=self.defaultencoding, output=format,fragment=fragment) File SITE_PACKAGES/kid-0.9.2-py2.4.egg/kid/__init__.py, line236, in serialize return serializer.serialize(self, encoding, fragment)
 File SITE_PACKAGES/kid-0.9.2-py2.4.egg/kid/serialization.py,line 51, in serialize text = list(self.generate(stream, encoding, fragment)) File SITE_PACKAGES/kid-0.9.2-py2.4.egg/kid/serialization.py,
line 329, in generate for ev, item in self.apply_filters(stream): File SITE_PACKAGES/kid-0.9.2-py2.4.egg/kid/serialization.py,line 84, in balancing_filter for ev, item in stream:
 File SITE_PACKAGES/kid-0.9.2-py2.4.egg/kid/pull.py, line 210, in_coalesce for ev, item in stream: File SITE_PACKAGES/kid-0.9.2-py2.4.egg/kid/filter.py, line 21,in transform_filter
 for ev, item in apply_matches(stream, template, templates,apply_func): File SITE_PACKAGES/kid-0.9.2-py2.4.egg/kid/filter.py, line 39,in apply_matches template, templates[:i] + templates[i+1:], apply_func):
 File SITE_PACKAGES/kid-0.9.2-py2.4.egg/kid/filter.py, line 31,in apply_matches item = stream.expand() File SITE_PACKAGES/kid-0.9.2-py2.4.egg/kid/pull.py, line 103, inexpand
 stack[-1].append(current)TypeError: append() argument 1 must be Element, not instanceAny ideas?--Jonathan LaCourhttp://cleverdevil.org
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: TurboGears downtime

2006-07-14 Thread lateef jackson
On 7/14/06, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote:
lateef jackson wrote: Is it possible to send all insert and updates to multiple database backends? There is still an issue with getting databases that have failed back in sync. Just an idea for shortest path.
Use the database server's replication.Trying to send manage updatesto several databases through your application will inevitably lead tofailure when the updates get issued in different orders on thedifferent servers.(Imagine if you're saving two new objects at the
same time.The inserts may not happen in the same order on bothdatabases so the objects have different ids on each database.Anyrelated records inserted will be broken on one of the databases becausethe ids are inconsistent.)
http://c-jdbc.objectweb.org/ - Is an implementation in JavaSequence generation is pretty easy work around. you can have your own sequence generator code as explain here:
http://c-jdbc.objectweb.org/current/doc/userGuide/html/ar01s05.html#using_sequence_with_hibernate
There are many other sequence generation cluster options if you do some googling. There are many more painful issues than sequence generation. Recovery being the one that stands out most to me. I don't like how CJDBC resolves this I like the way slony-i in PostgresSQL does by queueing up updates. Just mulling it over, it could be a fun experiment. 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: soldapprovider and persistent ldap connection

2006-07-10 Thread lateef jackson
Sorry for the late response.This is tricky. I am assuming you can handle a lot of open ldap connections? Well if you get a burst of traffic it is going to open a ton of connections and hang on to them. If it where me I would probably associate the connections with the session id and a timestamp. Write a TG scheduled process close connections that timed out. 
Don't remember the python ldap api very well but I thought you could rebind an ldap connection. If this was the case I would look at just having a connection pool and rebinding the connection time you need it for a user.
Hope something there was helpful.lateefOn 7/6/06, Ulysses Almeida [EMAIL PROTECTED]
 wrote:Hi...I'm using soldapprovider from andy.kilner(
http://trac.turbogears.org/turbogears/attachment/wiki/IdentityManagement/soldapprovider.patch)and it's working fine (I just modify to use mail instead of uid tovalidate auth). After validate the user I'd like to persist ldap
connection to use on addressbook module I pretend to write. How can Ipersist the ldap connection from soldapprovider thru user session?Thanks in advance!-- - Ulysses Almeida
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: --sqlalchemy parameter for quickstart?

2006-06-15 Thread lateef jackson
Will SQLObject be the ORMapper for TG 1.*? It sounded like SQLAlchema was doing a coup d'etat. If SQLAlchema is going to take over then I would leave the prompt.Just my 2 cents.Lateef
On 6/15/06, Michael Schneider [EMAIL PROTECTED] wrote:
Kevin,I like how quickstart asks questions (with reasonable defaults).I agree that it would be nice to shortcut the questions for 90% of theusers.would it be possible to add on option like --verify_all_defaults
that would ask the configuration questions for all options.If the command line option was not set, then the shortest possible listof questions would be asked.If the command line option was set, thenall config questions would be asked.
If you wanted to, you could also add domain specific flags --verify_orm --verify_ui_templateThat would meet your goal of very few questions for the simple project,and all questions for more advanced options.
As turbogears grows over time, it would be a pain to keep adding moreparamenters to the quickstart.just my 2 centsThanks,Mike
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: book cover

2006-06-10 Thread lateef jackson
On 6/9/06, Kaan [EMAIL PROTECTED] wrote:
Lightsabers = awesome+1For your next preview how about a table of contents?

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: need volunteers to help clean up the docs

2006-06-09 Thread lateef jackson
http://docs.turbogears.org/0.9/gt_testingThis page has a bunch of BR / that I cant seem to figure out how to get rid of in the pre:py tag. Anyone have pointers on what is wrong with it?
On 6/9/06, tad [EMAIL PROTECTED] wrote:
I'm interested. Let me know what you need done.tad

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: Is sqlalchemy support ready to use?

2006-06-07 Thread lateef jackson
Is there any other rational about LGPL? Just curious about why they don't like it?On 6/7/06, [EMAIL PROTECTED]
 [EMAIL PROTECTED] wrote:
We have a mandate from our investors to not use code with the LGPL.That rules out SQLObject. For our current project and TG 0.8 we use aminimal library that we wrote in-house to replace what we needed tofrom SQLObject. Going forward we'd like to adopt sqlalchemy since it is
being actively developed and has an acceptable license. (The MITLicense.)Does anyone know what the timetable for TG/sqlalchemy 0.2 integrationwill be? Is it worth it to work with sqlalchemy 0.1 or has the API
changed enough that it is better to wait?

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: Is sqlalchemy support ready to use?

2006-06-07 Thread lateef jackson
I am not a lawyer (but I play one on TV ;), however I believe that GPL does not require you to release you code if it is based on the GPL library. As long as you don't modify the GPL code then you are free to not release any code at all. For example Oracle on Linux, Oracle definitely closed source and Linux definitely GPL.
This doesn't solve the FUD problem you have with investors. This is really a GPL marketing issue with the general population. I was concerned that there was some kind of specific LGPL legal problem. The good news is that you can use SQLAl and you will just have to learn more about TG.
Thanks for the explanation,LateefOn 6/7/06, [EMAIL PROTECTED] 
[EMAIL PROTECTED] wrote:I REALLY don't want to get into a discussion about this but here
goes...Before I start keep in mind that the following is my understanding andis not endorsed by my company or it's investors or anyone else for thatmatter.This is how I understand it. The big issue with the GPL is that it
forces you to release any code you write that is based on GPL code. Forwhatever reason, sometimes you just don't want to share your sourcecode. The LGPL tries to lessen this restriction so that people whodon't want to release their code can use an LGPL library. But to be
honest, the FSF has been so aggressive protecting the GPL and LGPL thatthat the thought of using GPL or LGPL code gives most developers thewillies. Even if they could use LGPL code they don't from fear of being
attacked by the FSF lawyers. Especially small companies that don't havethe resources to fight ANY kind of litigation. To me the GPL/LGPL arenot open licenses. They are as restrictive as Microsoft licenses.
If you want to create an open piece of code that people can use forwhatever purpose then use the MIT, Mozilla, BSD, etc License. Stay awayfrom the GPL and LGPL.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: KID got error while process javascript operator

2006-05-07 Thread lateef jackson
Couple points that seem to be bubbling up:1) Kid is XML so '' needs to be escaped amp;2) In general practice it is good to keep all your _javascript_ in a .js static file if they it can reduce network usage becuase the static content can be reused. Take care not to keep specific functions that only apply to a single or a couple pages out of the global _javascript_ file.
3) If you have some page specific code that is easiest to put on the page use ![CDATA[]]. Page variables that are initialized, small simple functions or dynamic _javascript_.
4) As always the use of !-- -- is advised for older browser compatability (ofcourse if your site is like mine, browsers that don't _javascript_ won't be able to use the site so no loss)In my limited experience some web pages I couldn't figure out any other way then to generate _javascript_ on the page. If this was a limitation of _javascript_, my knowledge or my time, it didn't really matter. 
I vote that this question go into the FAQ.On 5/7/06, Robin Haswell [EMAIL PROTECTED]
 wrote: Using comments to wrap something that you want to keep in the document
 is a bad idea.Sure, it might happen to work with Kid, but I still wouldn't do it or recommend it.That technique has been recommended for JS since day 1. It's the standard way of hiding JS from
non-_javascript_-aware browser. You wrap it in a comment so if your user agent doesn't understand JS,it doesn't go printing it everywhere.Not that you should be putting JS in your body/ though.I'm fine with JS on-page when it only affects that page. Including it in a global JS file increases
bandwidth. Including it in its own external file causes connection overhead (in HTTP/1.0) -bob-Rob

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: KID got error while process javascript operator

2006-05-05 Thread lateef jackson
Try amp;amp; instead because kid is valid XML you need to use amp; to render _javascript_ correctly. You also could move it into a static _javascript_ file.Good luck,Lateef
On 5/5/06, Wenjie He [EMAIL PROTECTED] wrote:
Anybody have occur such situation?While using _javascript_ operator  in KID template,KID can't parse template to html, and raiseExpatError: not well-formed (invalid token)
How can I do a logic and operation in a kid template, instead?--I'm lazy, I'm coding.http://my.donews.com/henotii
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: Errors using the identity framework in TG 0.9a5

2006-05-03 Thread lateef jackson
Fromyour email it looks like you have a table named 'user'? If so one of the problems you will have if you don't have it already is that 'user' is a reserved word. On 5/3/06, 
Jorge Vargas [EMAIL PROTECTED] wrote:
did you activated the lines in the config to point to your model classes? it seems like identity is trying to load the old classes, that are still there for backward compatibility. 
On 5/3/06, 
Dark Lil'Troll [EMAIL PROTECTED] wrote:

Hi every body.I just finish to read the last tutorial about identity management, so Idownload the 0.9a5 release of turbogears, using easy_install.If I 'quickstart' a project without identity managemene,t no problems,
everything seems ok.But ... If I 'quickstart' a new project dealing with identity, I've gotsome strange problems ...My 'model.py' seems ok. I can 'tg-admin sql create' in order to set upthe database, and if I log in the DBMS, the rights tables were created
:mysql show tables;+--+| Tables_in_tg_id|+--+| group_permission || permission || tg_group || tg_visit || user |
| user_group || visit_identity |+--+7 rows in set (0.00 sec)But, If I want to run this 'wonderful' project, kaboom :Unhandled exception in thread started by bound method Server._start of
cherrypy._cpserver.Server object at 0xb7c35bccTraceback (most recent call last):File/usr/lib/python2.4/site-packages/CherryPy-2.2.1-py2.4.egg/cherrypy/_cpserver.py,line 78, in _start
Engine._start(self)File/usr/lib/python2.4/site-packages/CherryPy-2.2.1-py2.4.egg/cherrypy/_cpengine.py,line 108, in _startfunc()File/usr/lib/python2.4/site-packages/TurboGears-
0.9a5-py2.4.egg/turbogears/startup.py,line 218, in startTurboGearsext.start_extension()File/usr/lib/python2.4/site-packages/TurboGears-0.9a5-py2.4.egg/turbogears/identity/visitor.py,
line 33, in start_extensioncreate_extension_model()File/usr/lib/python2.4/site-packages/TurboGears-0.9a5-py2.4.egg/turbogears/identity/visitor.py,line 48, in create_extension_model

provider.create_provider_model()File/usr/lib/python2.4/site-packages/TurboGears-0.9a5-py2.4.egg/turbogears/identity/soprovider.py,line 186, in create_provider_modeluser_class.createTable(ifNotExists=True)
AttributeError: 'NoneType' object has no attribute 'createTable'I'm afraid I don't understand this error ... Maybe it's beacause I'mfrench, and the charset encoding is different ... But it's a problem

^_^ !Any ideas or link in order to fix it ?--Sebastian




--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: [Docs] do NOT use Group or Order as SQLObject classes

2006-04-25 Thread lateef jackson
In svn version of the identity documentation there is a note that warns users to not use 'Group' as a class name unless you override the table name by using sqlmeta. I didn't not mention 'Order' however it could easily be added. 
Thanks,LateefOn 4/20/06, Jorge Vargas [EMAIL PROTECTED] wrote:
This is a recurrent question/problem in the mailing list.People went starting to work on identity will probably name their class Group.People that are probably testing TG will want to make a shopping cart or something similar and will probably come up with the Order class
We all know the problem is with SQLs order by and group by keywords but most people don't realise this until it has taken some time to find the answer.So far I think the best way to go around this is with documentation, but I'm not sure where to put it so people can access it.
I think a couple of sidenotes in the docs could help.So far I have think of the following places:- In the write your own identity tutorial- in the TG main documentation, went first declaring SQLObject classes
- Same as above in TG book (I'll make sure this gets there)- in a FAQ (if there is any)- Somewhere in trac/docudo 


- in this same post so those who search before ask can get this.I think the text should be something like Remenber even though SQLObject abstracts us from the DB
we still can't use any if it's reserved keywords, the most common
mistakes are Order and Group which colide with order by and group by. This Happens because of the way the table names are guess by SQLObject, but you can go around that like this 


http://www.sqlobject.org/SQLObject.html#changing-the-naming-style--- end of post ---adding this so a search on the errors will show up this post.pysqlite2.dbapi2.OperationalError: near group: syntax error

pysqlite2.dbapi2.OperationalError: near order: syntax error




--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: Why Cheetah is being install with tg0.9+?

2006-04-11 Thread lateef jackson
Cheetah 2.0 rc6 is out. Any reason not to include Cheetah 2? On 4/11/06, Kevin Dangoor [EMAIL PROTECTED] wrote:
On 4/11/06, Jorge Vargas [EMAIL PROTECTED]
 wrote: It's my undestanding Cheetah is an optional package after the subway comunity join us, but my tg-admin info show Cheetah 1.0 but the requires.txt file for 0.9a4
 doesn't shows Cheetah, is it being install as a dependancy of anothey package?Yeah, it's being brought in by PasteScript. I've exchanged a couple ofemails with Ian about this. PasteScript doesn't *really* need Cheetah.
But, I can imagine that our quickstart templates might get to thepoint where they have optional bits that really benefit from beingable to do if/then rather than just variable substitution.Kevin

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: How is it useful?

2006-04-10 Thread lateef jackson
Is it possible to create something like Yahoo Mail with Turbo Gears? - Yes, that would be the short answer. Is it better for smaller project? - IMO large projects are doomed to fail. Good large projects are really a set of small projects that work together. 
Can we create distributed applications with it? - Could you be more specific I am not sure what you mean by this. It is just that there are a lot of different types of distributed technology (PVM/MPI, Java RMI and other Java nightmares, XML-RPC/SOAP and other buzz words). Almost all are architectural decision that are dependent on your applications needs. 
Good Luck,LateefOn 4/10/06, pierreth [EMAIL PROTECTED] wrote:
Hello,I would like to know if Turbo Gears would be useful for my project. Isit possible to create something like Yahoo Mail with Turbo Gears? Is itbetter for smaller project? Can we create distributed applications with
it?
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: How is it useful?

2006-04-10 Thread lateef jackson
Oh, no you didn't. you have a volume that is more important then, you need a Java Enterprise server. Sorry I am a little touchy about Java Enterprise I just did time working with Java Enterprise specifically J2EE, EJB (Jboss and Weblogic containers mostly). I can tell you from experience with that they are the last thing you want.
There are many issues with using Java Enterprise with web applications I will list my favorites (But if you google there are so many, many, many more):State replication is something I haven't seen done correctly in the container implementations I have seen. So cross out EJB, stateful sessions beans and messaging.
Java Enterprise is marketing hype replace Java Enterprise with mainframe and bingo, the empire has no clothes.The enourmous learning curve is not justified by productivity or performance. (Maybe justify better pay)
It isn't fun.If you want more email me directly I have lots of links and plenty of war stories. Python is so much more productive than Java, add on to that TG is super productive you will probably have a prototype built in TG before you even got Hello World working in Java Enterprise.
Good Luck,LateefP.S. note about distributed:Framework support for distributed is really marketing hype. Make sure you write code that doesn't depend on being run on a single machine. Think processes not threads.
On 4/10/06, pierreth [EMAIL PROTECTED] wrote:
Well,I want to create a website where users can subscribe to read messagesfrom mailing lists. The goal is to host about as many mailing lists aspossible and enable users to read them and create new ones. I think I
would need my application to be spread across many servers so this whyI want it to be distributed. I want to be able to shut down the serverand still keep my application running. The application should be able
to be transferred to another server without being stop.I am a Java certified programmer. But I don't have experienceddeveloping Web applications. As I see things, tools like Turbo Gearsare good for small things but if you have a volume that is more
important then, you need a Java Enterprise server. Am I right? I don'tknow so this why I am investigating the question.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: Yay for unintended consequences

2006-04-09 Thread lateef jackson
Yeah that is how it works right now. I build the dictionary value in the controller then I pass that to the model and it get passed into the display method of the $form. I am going to take a stab at converting the widgets docs to kid templates this week. I would like to add a non trivial example to the docs that submits a registration form to itself. It saves the data, and creates TG_Users (groups + permissions stuff). Anyway, I will try with a less complex use case and let you know if I have any problems.
Thanks,LateefOn 4/9/06, Alberto Valverde [EMAIL PROTECTED] wrote:
On Apr 9, 2006, at 8:18 PM, lateef jackson wrote: Ok so I added a validator to my edit. @turbogears.validate(form=myforms.COOL_FORM) def cooledit(self,...): dict(editValues=..)
 So the problem I am having is that if I use the validator decorator the form is not populated when it is first loaded. If I modify the data and submit it (submits to itself) it works correctly. If I
 comment out the validator decorator then I get the expected behavior of on first page visit the data is populated from the values I passed into the view from the controller. And it works fine submitting to itself. Is it frowned on to use widgets and
 submit to the same controller function? Or do we think there is a bug in my code?Have you tried passing a value to the form in the template?def controllermethod(...)...return dict(form=form, value=dict(name=Haifa, surname=Wehbe))
(in the template)${form.display(value=value)}Alberto.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: Proposed Visit/Identity change

2006-04-06 Thread lateef jackson
hostname and getpid they only have to be called once per TG instance, thread id should be close to 0, and datetime is probably negligible. I would think using any kind of random() is probably more complex than it needs to be.
On 4/5/06, ajones [EMAIL PROTECTED] wrote:
I can see where our security check here is going to turn into a fivesecond lets take a break and scan the whole computer process. Why notuse datetime.now(), random(), and something else easily accessible
(thread id?), but concatenate them in a random order? Takes an alreadyunlikely scenario and makes it orders of magnitude more impossible.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: ANN: Identity Management doc on Trac has been fully refactored

2006-04-06 Thread lateef jackson
DOH! I just converted it to XHTML and added a couple of things. On 4/6/06, gasolin [EMAIL PROTECTED] wrote:
Now follow the trac to add user/group is more easy.I just replace the part of add identity user/group from by using
tg-admin shell to by using CatWalk.--Fred

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: ANN: Identity Management doc on Trac has been fully refactored

2006-04-06 Thread lateef jackson
N/P I hadn't done that much I can easily redo it. I only had a couple small additions. Let me take another stab at it tonight. On 4/6/06, Kevin Dangoor
 [EMAIL PROTECTED] wrote:Hi Fred,
On 4/6/06, gasolin [EMAIL PROTECTED] wrote: Jorge: The method 1 /method 2 are still remain: 1. Add user and group by catwalk (added, as default)
 2. Add user and group by shell (origin, append at the button of PART1) lateef : I'm sorry for the replace thing (actually, its a refactor), but I think add user and group by CatWalk is a huge improvement and worth
 to refactor the article, because its the best practice and the most painless way to config identity, whether for newbie or experienced developers.Thanks for all of your work on this document. Lateef is providing some
assistance in getting it converted to XHTML. ASAP I'll put the XHTMLone in the official docs and delete the one from the playground. It'stime for high-quality docs to move out of the playground (andlow-quality docs to be fixed or deleted).
Changes will still be quite possible... patches, tickets, suggestionswhatever will be integrated into the docs. And one of these days,Docudo will come along and help us out of this management headache :)
Kevin
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: Proposed Visit/Identity change

2006-04-05 Thread lateef jackson
Some of us may run multiple instances of TG on multiproc machines (or cluster) and have a potential for a conflict if only the time is used. If there was something unique to the TG instance + time it would be fine. Not sure but I am just guessing that 
thread.get_ident() is not unique across multiple processes? What do we think of this datetime.now() + os.getpid() (assuming GIL you don't need to add the thread id but if GIL goes away then it would need to be added). Thoughts?
On 4/5/06, Alberto Valverde [EMAIL PROTECTED] wrote:
On 06/04/2006, at 0:09, Simon Belak wrote: Why not use time and ID of some request (thread) specific object. Such IDs are guarantied to be unique for the object's lifespan.Sounds good. A 
sha.new(%s%s % (thread.get_ident(), datetime.now())).hexdigest() will do, right? A random() could also be thrown inbut it might affect performance...Alberto
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: Proposed Visit/Identity change

2006-04-05 Thread lateef jackson
Let me start out and say I am over paranoid (and yes I did time writing software for a bank). Let me try with this:machineUnique = os.uname()[2] + os.getpid() # [2] is hostnameuniqueness = machineUnique + thread.get_ident
() + datetime.now() Yeah, if the cluster admins image the servers instead of a build system and don't change the hostname after they image well then boohoo on the cluster admins (or I will consult for admins to setup cluster build system).
Hope this isn't to much paranoia.On 4/5/06, Alberto Valverde [EMAIL PROTECTED] wrote:
On 06/04/2006, at 0:52, lateef jackson wrote: Some of us may run multiple instances of TG on multiproc machines
 (or cluster) and have a potential for a conflict if only the time is used. If there was something unique to the TG instance + time it would be fine. Not sure but I am just guessing that thread.get_ident
 () is not unique across multiple processes?You're right... I must confess I missed that scenario. What do we think of this datetime.now() + os.getpid() (assuming GIL you don't need to add the thread id but if GIL goes away then it
 would need to be added). Thoughts?Better (with a get_ident thrown in)... However this does not coverthe case of a cluster. I remember reading something on how Apache'sUniqueID modules works and IIRC it claimed that it could generate
unique id's even in the case of a cluster, maybe this could bestudied...However, Simon is right, perhaps we are being overly paranoid...(though a bank system won't think the same) :)Alberto

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: A small list of Performance tips and reference sites

2006-04-02 Thread lateef jackson
My postgresql note:work_mem by default is usually pretty small so it is important to bump that up you are doing large joins (well joins are what smacked me in the face but probably if you are querying large amounts of data you will need more working memory in general). 
Cluster early and often:This could be virtual servers running on two different ports but running the same code it doesn't have to be separate machines.Clean up those cluster unfriendly hacks in the code (not that I would ever have any ;).
Smoother upgrades so you can switch from one server(s) to another without downtime (if I only wrote bug free code I would never have to update the server software).Slashdotted... oops I mean 
diggit.us'ed (not sure if that is how you spell it) if you are thinking performance then you should keep an plan in the back of your mind what to do. Machines are cheep clustering can get you some really quick performance boost at low hardware cost.
Most importantly bragging rights to all your geek friends that your code runs on a cluster. Thanks for the post Jorge I am going to check some configs!YMWV (your mileage will vary),
LateefOn 4/2/06, Jorge Godoy [EMAIL PROTECTED] wrote:
Hi!This is a small list I've put together for my own use and I thought more ofyou could benefit from it.If you have more tips or comments, feel free tosend them in! :-)This is not directly related to TG, but can be applied to it as well:
 - http://www.jacobian.org/2005/dec/12/django-performance-tips/ - 
http://www.onlamp.com/pub/a/onlamp/2004/02/05/lamp_tuning.htmlThe general recommendations are:* Hardware - If you can't afford a set of RAID enabled disks, try using at least some SATA disks.Fast disks equals less time waiting for them while
 doing I/O. - Separate resource competitive servers and applications in different machines: your webserver and your database server both compete for disk and RAM, for example...
 - If you only have one database server and one web server, using a dedicated networked interface might be very interesting to reduce problems with other concurrent accesses from the internal network or
 even avoiding network configuration glitches.* Software - Buy as much RAM as you can so that you can make your apps avoid swapping or touching disks.Memory is much faster than disks.
 - If you use Apache, use the prefork MPM instead of the worker MPM: prefork uses processes while worker uses threads, so with separate processes you scape from problems with Python's GIL.
 - If you have too much static data, start a new process for serving it separated from your dynamic data.(This is very valuable if you use Apache to avoid processes growing too large in RAM!)
 - Use some kind of reverse proxy (Squid can do that). - Use some kind of cache.memcached is very popular and used in very high traffic sites, plus it has bindings for several programming
 languages, making it easier to integrate different systems and make a better use of your cache. - For many embedded images in lots of pages, HTTP 1.1 might help a lot, so make sure your webserver supports it.
 - If you're not going to use more advanced resources from Apache, see if a less memory hungry server can do the job and free resources for your application.* Apache specific tips:
 - Use a low KeepAliveTimeout (from 1s to 5s is fine).If you turn it off, you'll have slowdowns while serving static contents...With a separate server, though, you can play with it more freely.This value
 should never be over 60s, or your processes will hang for a long time. (As of Apache 2.2, the default is 5s...) - With newer versions of Apache (2.2 in my case) using a large value for
 MaxRequestsPerChild is a good thing.Some OSs -- like Solaris -- require huge values (1 in Solaris case) to avoid memory leaks.I believe that starting with 100 and adding 50 on each test is a good way
 to find out the best value for you. - You should also adjust the number of MaxClients your Apache server should spawn.The spawning process is different in newer versions of Apache (it used to be 1 per second and it is now 1, sleep 1s, 2, sleep
 1 second, 4, sleep 1 second... up to 32 processes per second and it keeps on 32 until it reaches MaxClients).Too many processes might kill your server and make things slow.The ideal value is determined
 through the high technical methodology of trial and error. ;-) - Remove unused modules.Some Linux distributions activate lots of modules and if you don't use them, they are just wasting resources...
 - Be careful with mod_status!Set your ExtendedStatus to off after you collected what you wanted.* Database in general: - Use indexes where you can.Possible candidates are aggregates, foreign
 keys, unique values, columns used in sorts. - Don't index everything!It makes it slower to insert data. - Use your database profiling tools to check if you have necessary indexes or not and to see if they are being used or not (remember that
 your database may have an intelligent heuristic to 

[TurboGears] Identity framework create table option?

2006-03-26 Thread Lateef Jackson

Decided to scratch my own itch by adding the config option:
identity.soprovider.model.create=False
Basically my problems is I write my own SQL CREATE TABLE for a number
of reasons but I couldn't seem to get TG to stop trying to create the
table. Not sure if this is a SQLObject bug with Postgresql or if it is
something wrong with the identity framework. In poking around the code
I couldn't find a bug in the identity framework. So I added a config
option and slaped an if condition in the identity/soprovider.py.

I was wondering if anyone else had a better idea on how to opt out of
create table. Maybe a class level decorator on the soprovider subclass
(Currently to overide the defualt soprovider you subclass SQLObject but
maybe some extra magic in the custom subclass)?

Thoughts?

Thanks,
Lateef


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
TurboGears group.
To post to this group, send email to turbogears@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/turbogears
-~--~~~~--~~--~--~---



[TurboGears] Re: [OT] What is it with Macs?

2006-03-24 Thread lateef jackson
Short answer: EverythingI switched from Windows to Linux years ago. ( For a while gentoo pre 1.0) At the time laptops where really hard to work with under Linux. Since the shell on windows is like a basketball player ridding tricycle on the beach and cygwin is only fun if you don't have access to Linux / BSD shell. Then we created a build for all our servers under SuSE so I switch my laptop to SuSE. 
Eventually the other developers in my office got Macs and I was the lone PC person. All I had over them was the nipple and the fact I was running the server platform. Last summer I fought no longer and now I must admit I am a lot more productive. I don't get to have as much hacker fun and my hacker knowledge is not growing as fast as it use to but I get more work done.
The mac is great for developers because it has all the production eviornment tools that you need, is stable and the best gui on the market. In the future I can see Linux becoming the best gui on the market could be 3 years could be 10.
Mac Geek pros:BSD userspaceObjective-C rules iWork, iLife and all wonderful tools Sync iLife with PDA/Phone love that some things just workMacs make me look cooler
Geek cons:Not BSD kernelSafari is not Firefox optimized on DarwinTerminal is not a seperate processSome times I want to do a little hacking to get things to work
I need a mac to make me look coolerMaybe the last pro and con are my personal needs.If you buy a mac you can alway dual boot to Linux, if you really don't like the mac you can single boot to Linux. I haven't dual booted yet and I don't plan to I just want one of those dual core laptops!
On 3/24/06, Robin Haswell [EMAIL PROTECTED] wrote:
Hm sounds interesting. I think from the comments my next machine (why Ireally asked this) will still be a Thinkpad as planned. I've alwayswanted a Thinkpad with Ubuntu installed on it, but I did think to myself
there might be a few benefits of the Macs which apply to me.I guess it all depends on your situation. Personally all I need to do myjob is a terminal emulator and a web browser. I've tried GUI texteditors and I just end up splattering my code with dd, :w and
VPPP. Ah well.On the Vaio front, I had to use one of those over the last few days fora business trip. The screen IS awesome, but the rest of it really bugsme - I can't stand the mouse buttons and the trackpad, well.. I'm a
nipple man myself.I'm personally of the opinion that the hardware interface to a computeris much more important than what's inside it, which is why my keyboardand mouse cost more than just about any other component in my computer
at home..Cheers for the help-Rob[EMAIL PROTECTED] wrote: Ok, I'll stick my hand up - I don't use a Mac. Mac usage seems to be an emergent trend in web development.
 Generally I use: Sony VAIO laptop (most of the time develop on this), have two desktop PC's - one running windows, one running Linux Debian Sarge.All wireless networked. The quality of the VAIO is amazing - screen is the best I've seen.One difference between PC and Mac is cost - PC's generally cheaper for more processing power.Mac is a great 'whole' product though.
 Software: PSPro Editor, Cygwin (for bash and other Unix flavoured goodies) and of course latest Python. I've been tempted to buy a Mac on a number of occasions but I can't justify it on style alone.They're quite expensive (in the UK at least) and my current setup is doing everything I need it to.
 Biggest difference for me with regards to Mac is being able to test on Safari - not just css/html issues either but interactive _javascript_ testing. Luckily there's Mac emulation which should be good enough to run Safari.Also for Mac's you can get PC emulators (you Mac developers *are* testing on IE6 at least? :-) )
 JustinFrom: Robin Haswell [EMAIL PROTECTED]Date: 2006/03/24 Fri AM 09:33:01 GMTTo: 
turbogears@googlegroups.comSubject: [TurboGears] [OT] What is it with Macs?I'm genuinely interested, why is it that nearly every developer for TG(that produces a video at least) seems to own a Mac? In fact I'm yet to
see any evidence of anyone NOT using a Mac! Why is that? Is there agenuine programmer's reason why I should consider one?Cheers-Rob
 - Email sent from www.ntlworld.com Virus-checked using McAfee(R) Software Visit 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: [OT] What is it with Macs?

2006-03-24 Thread lateef jackson
http://www.forbes.com/technology/2006/03/22/vista-microsoft-ballmer_cz_dl_0322microsoft.htmlHaving Things Work just couldn't help myself. Using Windows makes me sad, using J2EE make me mad, using Windows with J2EE make me evil. Using Unix make me happy, using TG is uber fun, Unix + TG now that is a party. 
On 3/24/06, Robin Haswell [EMAIL PROTECTED] wrote:
I think that's probably the case - although I wouldn't undervalueWindows so quickly! I'd rather slice my eyeballs than try to work onWindows, but for home-land stuff like playing games, watching DVDs,showing galleries to mates, 3D work and generally Having Things Work you
just can't beat it.I'd never consider not having a Windows machine (and it will probably bemy most powerful). But only one.-Robajones wrote: This is one area where I think pope paul is getting it wrong. According
 to his logic linux would be the predominant operating system because that is what everyone was hacking on ~10 years ago. I think the rise of CS as a moneymaking profession has negated any valuethere was in this
 method of estimating what the future of computing will be. Macs are an awesome substitute for windows when you want something approaching the power of linux without trading support for your
 favorite programs. That the OS environment is well designed is a bonus, all the pretty and sparkle even more so. In the end it beats running windows if that choice is open to you.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: Step-wise instructions for installing SQLite PySqlite MAC 10.4

2006-03-23 Thread lateef jackson
The only problem that I have had with using the ports distribution of python is that I could not get python2.4 and pyobjc or wxPython to work. However somewhere if you google search enough you can find the .dmgs . It has been a couple months since I have tried so it may work now but it didn't work a couple months ago.
On 3/23/06, Arthur Clune [EMAIL PROTECTED] wrote:
On 21 Mar 2006, at 17:07, dana_at_BBN wrote: Sorry to be utterly dense, but could someone walk me thru properly installing sqlite and pysqlite on Tiger?Personally I think it's easier to pull all this stuff down via
DarwinPortshttp://darwinports.opendarwin.org/Once you've set it up (download the image on the site http://
darwinports.opendarwin.org/downloads/DarwinPorts-1.2-10.4.dmg)you can easily pull down everything you need. You will need to moveto using the Darwin Ports Python, but that's not a great problemsince it's 2.4
 anyway.kremer:arthur $ /usr/bin/python -VPython 2.3.5kremer:arthur $ /opt/local/bin/python -VPython 2.4.2Basically you can pull down the packages you need then with commandslikesudo port install python24
sudo port install sqlite (for 2.8.x) or sqlite3 (for 3.3.x)sudo port install py-sqlite2etc.Hope this helps. There are two benifts to doing this over grabbingimages etc manually. 1) It'll handle dependencies for you
automatically and 2) when you need to upgrade you can do that withone command.Arthur--One secret of happiness is to ignore comparisons with people who aremore successful than you are: always compare downwards, not upwards"


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: Open Question: Stress testing your application...

2006-03-23 Thread lateef jackson
Here is what little I got:ab - Good benchmarking tooltwill - Awsome web testing tooljmeter - Slow Java Swing but probably good to playaround withhttperf - Don't remember that much about this tool but it is pretty cool
Another option is to use a library with your unit test framework. This can be the most helpful but is very time consuming. I think it would be dreamy to have some combination of twill and ab (or httperf). I find that pulling out the python profiler can work wonders for slow code. I have never done this with TG but I think it would work well to identify code that is a problem (assuming you can mimic your user traffic well).
If I could mimic user traffic it would be nice to have something that would be able to help me identify the little nasties I have created. Maybe something tied into twill would allow you to mimic traffic plus using the profile be able to point out the bottlenecks.
OK, the truth is that most of the nasties I know where they are. I am just to lazy to fix them. I shouldn't fix some becuase they are not heavily used features. I guess if the site gets slammed I spend all night at the office. I am sure this is some kind of programming design XP or Botchy, I like to call it lazy first.
I think that if TG had a tool to help find bottlenecks in TG then business logic coders like me could use it too.On 3/23/06, ajones 
[EMAIL PROTECTED] wrote:It's that time again. I hope to come up with some thought provoking
open questions that will get new ideas out there, or at least providesome intellectual relief from the more mundane project concerns(read:probably more important). Anyways, on with the show.We all know having a wildly successful website would be awesome. What
could be better, you toss your code out into the ether and find thatthe clamoring hordes love it, cherish it, and all want to be one withit 24x7. Everything is awesome, until your server catches fire andmelts into a puddle on the floor. Not quite so awesome, now you have
angry hordes and a big mess.Obviously there are ways to prevent this, caching, replication, etc,but how would you know when to implement them? Wouldn't it be nice tohave a testing system that can tell you when you max out on
database/request/processing load, which will hit the wall first, etc.We run unit tests to make sure our code works as designed, what aboutstress tests to figure out where the breaking points are?What do you do to check the performance of your code? How do you
isolate problems that would only occur during high utilization. Shouldturbogears include something to help you break down where your code iswasting time instead of fulfilling requests? How would it work?
I could see modifying unit tests to add some kind of performancemetric. It would be fairly easy to hijack the existing test functionsand have them report how long everything took. That would be a decentstart. Where should it stop though? How do you load test a server


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: Open Question: Turbogears and scaling...

2006-03-18 Thread lateef jackson
I guess my confusion was from my original post where I said:* Application server scale easy as pie, database servers scale like  hernias I should have been more specific that applications server what I meant was TG, PHP where ever the business logic of the code is. Maybe easy as pie was the wrong analogy to use. 
The m/custer technology is what I usually call database proxy. CJDBC was the first time I thought about using a db proxy. This is a really great solution for failover but not for scalability. If I am doing more database transaction persecond I can't just add another database server, I have to buy a bigger database server and if I am using a database proxy and have 3 database server that means I have to buy 3 database servers. You are technically correct database writes don't end up in exactly one place but those write are copied not split up. So now you have every write ending up on every single database node, which only scales if you writes stays the same and your reads increases. All the applications I have worked on reads and write increase as load increases, sometimes you can have a spike in the reads and not the writes it just depends on the applications.
To write in more than one place you have to have the technology to be to load balance the writes. Then reads will need to know what server to go to for what data. I think this would be a blast to code! Fortunatly reads are a majority of most applications especially web applications. Thus why some simple caching is easier and more effective than replication of data.
On 3/17/06, Robin Haswell [EMAIL PROTECTED] wrote:
 my time has a cost and optimisation often buys less performance than, say, a Dell SC1425 Unfortunatly my time is not worth a IBM 64way mainframe (or I would be one happy hacker). Bigger machines help but as my comment said before
 this will give you only linear optimization at some point you will need _exponential_ optmizaitions. This also depends on the complexity of the data relationships that your application needs. You need a machine that
 is 64 times faster buyNah mate you miss my point! Not bigger machines, *more* machines. A DellSC1425 is a pretty low-end piece of kit, the idea is you use multiplemachines.Let's say you have an application that is currently running at 100%
above acceptable capacity. You can solve this problem in basically fourways:1. Buy hardware that is twice as powerful2. Perform optimisation, caching - etc.3. A combination of the 1) and 2)4. Buy another similar server and run them both
In my experience, 4) is always the cheapest option, and requires lesshassle than 2) and 3) (and less hassle is the TG way!). The trick is tomake option 4 possible by asking questions like What will happen if I
use two app or database servers - or both early on in the buildprocess. I do this for everything and it's served me right so far :-)Part of my personal PHP standard library is some wrappers around session
management and database handling that means:1) All my session data is stored in the database, which means from thenon I can implement *all* my persistent storage in an RDBMS.2) My database reads and my database writes are separated and
controllable, so if we need to add replication it's possible to directall writes to the master server and balance reads between the slaves.(Yes I said there are alternatives to the master/slave setup, but in web
apps which are mostly read-heavy it's a pretty good solution anyway).-RobPS. If you're interested in the writing to one place problem, youshould look m/custer(
http://www.continuent.com/index.php?option=com_contenttask=viewid=211Itemid=168).We have our own solution, but in general it's a pretty awesome setup fordatabase scaling through multiple servers.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: Open Question: Turbogears and scaling...

2006-03-18 Thread lateef jackson
LiveJournal is an excelent example it is where I stole the idea of using memcache: http://www.linuxjournal.com/article/7451My visions for scaling up is to us url partitioning so that simular data all goes to the same host(s) and have no shared cache. For example if you have a news site all the tech articles could go to one server(s) that had all tech articles in there cache. This makes the invalidation have to iterate over a list of hosts but thems the breaks.
On 3/17/06, Bob Ippolito [EMAIL PROTECTED] wrote:
On Mar 17, 2006, at 3:17 PM, Robin Haswell wrote: my time has a cost and optimisation often buys less performance than, say, a Dell SC1425 Unfortunatly my time is not worth a IBM 64way mainframe (or I
 would be one happy hacker). Bigger machines help but as my comment said before this will give you only linear optimization at some point you will need _exponential_ optmizaitions. This also depends on the complexity
 of the data relationships that your application needs. You need a machine that is 64 times faster buy Nah mate you miss my point! Not bigger machines, *more* machines. A
 Dell SC1425 is a pretty low-end piece of kit, the idea is you use multiple machines. Let's say you have an application that is currently running at 100% above acceptable capacity. You can solve this problem in basically
 four ways: 1. Buy hardware that is twice as powerful 2. Perform optimisation, caching - etc. 3. A combination of the 1) and 2) 4. Buy another similar server and run them both
 In my experience, 4) is always the cheapest option, and requires less hassle than 2) and 3) (and less hassle is the TG way!). The trick is to make option 4 possible by asking questions like What will happen if I
 use two app or database servers - or both early on in the build process. I do this for everything and it's served me right so far :-) Part of my personal PHP standard library is some wrappers around
 session management and database handling that means:Scaling horizontally, what you list as 4, is the only real option.There's plenty of public record that shows that all the successfulguys (Google and LiveJournal come to mind) are using lots of
relatively cheap servers, rather than small numbers of giantservers.If you design for that, you'll never have a problem so longas you can afford to operate, and that's not so tough of a problembecause the costs are at worst linear.With any other option, the
price to upgrade grows exponentially and there's a ceiling on whatkind of power you can even buy to run an app that is mostly serial.Good optimizations can do wonders in the short term, e.g. cutimmediate hardware costs in half... but you get that anyway if you
wait about a year.It's typically better to expand your service suchthat it maximizes profits, rather than optimize your service tominimize your overhead.There's only so low you can go with cuttingyour overhead.. but there's no well defined ceiling for maximum


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups TurboGears group.  To post to this group, send email to turbogears@googlegroups.com  To unsubscribe from this group, send email to [EMAIL PROTECTED]  For more options, visit this group at http://groups.google.com/group/turbogears  -~--~~~~--~~--~--~---


[TurboGears] Re: Open Question: Turbogears and scaling...

2006-03-17 Thread Lateef

Most things seem to be covered exception for caching so I will share my
witless drivel about caching.
First you need to decide how dirty your data can get. If you have a
realtime stock quote system probably can't live with a lot of dirt vs
say blog comments probably don't need to be instant (well at-least the
ones I write probably don't need to be read at all). The second problem
is the web is stateless so you can't send updates down the socket to
the web browser. Thanks TG's widget and awesome AJAX support this can
be minimized (and there is much rejoicing, thanks!).

It doesn't matter how you architect the system, writes end up in one
place. Sure you can do replication but there is a world or setup,
configuration, schema changes, transactions and data synchronization oh
my! You are still only writing in once place, plus replication is just
a linear optimization, caching can get you exponential optimization
without all the lions, tigers and bears. Cache only after you have
tried to do some happy hacking to make things faster, my experience for
a couple years in EJB (oh the humanity!) was cache it and forget. Most
of the performance issues with EJB have to do with locking data so
there is no dirty data, plus the threading architecture is... Sorry I
digress often. Just cache as little as possible.

In the big project I work on we cache at a couple different levels.
Highest level is cache the page, thus skipping templates engine,
controller code, database lookup. In this project we use memcached
because it is very flexible on how we setup the caching system. No
matter what, you should create a wrapper around your caching
implementation so you an move from one type of cache to another without
changing any controller code. memcached support a number of different
languages which is nice for integration.

There are many ways to invalidate cached data. The easiest way is to
just set an expiration date. Since we are happy Postgresql users we use
a trigger system (sure features like triggers make the database slower
but I want the entire system to run faster not just the database).
There are two ways that we could do this, the first is write a python
function that gets called when an update or delete happens on cached
data. The python function in our case invalidate all the caches that
had that data. The second way is to have a trigger insert records into
an invalidation table. Every n number of seconds an external process
consumes the records by invalidating your caches (which by the way is
basically how slony works for replication).

 * Optimize code and queries first
 * Keep an abstract layer or two from the cache implementation
 * Application server scale easy as pie, database servers scale like
hernias 
 * Turbogears rules!

Good luck


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
TurboGears group.
To post to this group, send email to turbogears@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/turbogears
-~--~~~~--~~--~--~---



[TurboGears] Re: Open Question: Turbogears and scaling...

2006-03-17 Thread Lateef

Yeah, I knew I would get roasted like a pig for not point out the
exceptions. I hadn't seen this statefull http exception before it is
cool!


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
TurboGears group.
To post to this group, send email to turbogears@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/turbogears
-~--~~~~--~~--~--~---



[TurboGears] Re: Open Question: Turbogears and scaling...

2006-03-17 Thread Lateef

I am not a TG expert but the options I believe are file, memory,
database and role your own.

my time has a cost and optimisation often buys less performance than,
say, a Dell SC1425
Unfortunatly my time is not worth a IBM 64way mainframe (or I would be
one happy hacker). Bigger machines help but as my comment said before
this will give you only linear optimization at some point you will need
_exponential_ optmizaitions. This also depends on the complexity of the
data relationships that your application needs. You need a machine that
is 64 times faster buy a 64 proc machine, but you need a machine 1x
then start hacking.

You don't always write to one place
My experience although limit did include some trading systems over on
this side of the pond I have not seen any applications that wrote to
more than one place. I wish I got to work on a project that required
this kind of technical scaling but alas I am a bottom feeder :) Data is
stored in RDBMS or mainframe so I can not comment on such fancy stuff.

Cheers,
Lateef


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
TurboGears group.
To post to this group, send email to turbogears@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/turbogears
-~--~~~~--~~--~--~---



[TurboGears] identity framework issues

2006-02-21 Thread Lateef Jackson

TG Version 0.9a0dev-r791
Over the last couple of days I have been happily upgrading to TG 0.9  
from TG 0.89. I have run into a couple problems:

I have my own implementation SQLObjects that I wanted to use and  
thankfully the documentation at: http://nerd.newburyportion.com/ 
2006/01/refining-the-identity-framework
worked great until the identity framework was trying to create tables  
that already existed. (I write all the schema changes by hand and am  
running Postgresql 8.1). I commented out these lines in the code that  
create the tables but I think I might be missing a config option like  
identity.soprovider.model.createTable=False?


I did not implement TG_Permission (yet) however the table does exist  
in the public schema.
Here is the stack dump


Unhandled exception in thread started by bound method Server._start  
of cherrypy._cpserver.Server object at 0xb7b770cc
Traceback (most recent call last):
   File /usr/lib/python2.4/site-packages/CherryPy-2.2.0beta- 
py2.4.egg/cherrypy/_cpserver.py, line 103, in _start
 func()
   File /usr/lib/python2.4/site-packages/TurboGears-0.9a0dev_r650- 
py2.4.egg/turbogears/startup.py, line 175, in startTurboGears
 ext.start_extension()
   File /usr/lib/python2.4/site-packages/TurboGears-0.9a0dev_r650- 
py2.4.egg/turbogears/identity/visitor.py, line 30, in start_extension
 create_extension_model()
   File /usr/lib/python2.4/site-packages/TurboGears-0.9a0dev_r650- 
py2.4.egg/turbogears/identity/visitor.py, line 45, in  
create_extension_model
 provider.create_provider_model()
   File /usr/lib/python2.4/site-packages/TurboGears-0.9a0dev_r650- 
py2.4.egg/turbogears/identity/soprovider.py, line 137, in  
create_provider_model
 user_class.createTable(ifNotExists=True)


The second problem I am having is minor. When I raise  
identity.IdentityFailure( _(Please login)) the ${message} display a  
list of characters like so:
['P', 'l', 'e', 'a', 's', 'e', ' ', 'l', 'o', 'g', 'i', 'n']


Thanks,
Lateef


Lateef Jackson
[EMAIL PROTECTED]
704.502.4337
po box 31064
charlotte, nc 28231





--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
TurboGears group.
To post to this group, send email to turbogears@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/turbogears
-~--~~~~--~~--~--~---