#12224: psycopg2 raises "can't adapt" when use gettext extensions on model meta
permissions field.
-------------------------------------------------------------------------+--
 Reporter:  chronos                                                      |      
 Owner:  chronos   
   Status:  new                                                          |   
Milestone:  1.2       
Component:  Database layer (models, ORM)                                 |     
Version:  SVN       
 Keywords:  psycopg2, permissions, i18n, gettext, "can't adapt", syncdb  |      
 Stage:  Unreviewed
Has_patch:  0                                                            |  
-------------------------------------------------------------------------+--
 When we create custom permissions for model, works perfectly if we use
 like this:

 {{{
   class Meta:
     permissions = (
       ('can_view_info',"Can view info."),
       ('can_view_reports',"Can view reports."),
       ('can_export_reports',"Can export reports."),
       ('can_search',"Can search."),
     )
 }}}

 But, if we use like that, for multiple language sites:

 {{{
   class Meta:
     permissions = (
       ('can_view_info',_("Can view info.")),
       ('can_view_reports',_("Can view reports.")),
       ('can_export_reports',_("Can export reports.")),
       ('can_search',_("Can search.")),
     )
 }}}

 We get psycopg2 raising following error on syncdb:

 {{{
 ...
 You just installed Django's auth system, which means you don't have any
 superusers defined.
 Would you like to create one now? (yes/no): no
 Traceback (most recent call last):
   File "manage.py", line 11, in <module>
     execute_manager(settings)
   File "/home/felipe.prenholato/.python/lib/python2.5/site-
 packages/django/core/management/__init__.py", line 439, in execute_manager
     utility.execute()
   File "/home/felipe.prenholato/.python/lib/python2.5/site-
 packages/django/core/management/__init__.py", line 380, in execute
     self.fetch_command(subcommand).run_from_argv(self.argv)
   File "/home/felipe.prenholato/.python/lib/python2.5/site-
 packages/django/core/management/base.py", line 195, in run_from_argv
     self.execute(*args, **options.__dict__)
   File "/home/felipe.prenholato/.python/lib/python2.5/site-
 packages/django/core/management/base.py", line 222, in execute
     output = self.handle(*args, **options)
   File "/home/felipe.prenholato/.python/lib/python2.5/site-
 packages/django/core/management/base.py", line 351, in handle
     return self.handle_noargs(**options)
   File "/home/felipe.prenholato/.python/lib/python2.5/site-
 packages/django/core/management/commands/syncdb.py", line 89, in
 handle_noargs
     emit_post_sync_signal(created_models, verbosity, interactive)
   File "/home/felipe.prenholato/.python/lib/python2.5/site-
 packages/django/core/management/sql.py", line 194, in
 emit_post_sync_signal
     interactive=interactive)
   File "/home/felipe.prenholato/.python/lib/python2.5/site-
 packages/django/dispatch/dispatcher.py", line 166, in send
     response = receiver(signal=self, sender=sender, **named)
   File "/home/felipe.prenholato/.python/lib/python2.5/site-
 packages/django/contrib/auth/management/__init__.py", line 28, in
 create_permissions
     defaults={'name': name, 'content_type': ctype})
   File "/home/felipe.prenholato/.python/lib/python2.5/site-
 packages/django/db/models/manager.py", line 122, in get_or_create
     return self.get_query_set().get_or_create(**kwargs)
   File "/home/felipe.prenholato/.python/lib/python2.5/site-
 packages/django/db/models/query.py", line 328, in get_or_create
     obj.save(force_insert=True)
   File "/home/felipe.prenholato/.python/lib/python2.5/site-
 packages/django/db/models/base.py", line 419, in save
     self.save_base(force_insert=force_insert, force_update=force_update)
   File "/home/felipe.prenholato/.python/lib/python2.5/site-
 packages/django/db/models/base.py", line 504, in save_base
     result = manager._insert(values, return_id=update_pk)
   File "/home/felipe.prenholato/.python/lib/python2.5/site-
 packages/django/db/models/manager.py", line 179, in _insert
     return insert_query(self.model, values, **kwargs)
   File "/home/felipe.prenholato/.python/lib/python2.5/site-
 packages/django/db/models/query.py", line 1087, in insert_query
     return query.execute_sql(return_id)
   File "/home/felipe.prenholato/.python/lib/python2.5/site-
 packages/django/db/models/sql/subqueries.py", line 320, in execute_sql
     cursor = super(InsertQuery, self).execute_sql(None)
   File "/home/felipe.prenholato/.python/lib/python2.5/site-
 packages/django/db/models/sql/query.py", line 2373, in execute_sql
     cursor.execute(sql, params)
   File "/home/felipe.prenholato/.python/lib/python2.5/site-
 packages/django/db/backends/util.py", line 19, in execute
     return self.cursor.execute(sql, params)
 psycopg2.ProgrammingError: can't adapt
 }}}

 This error happens with Django 1.1 beta 1 and Django 1.2 pre-alpha
 (current svn). I tested with psycopg2 versions 2.0.12 and 2.0.13.

 This problem probably is similar to SafeString and/or SafeUnicode issues
 on #5996.

 Soon I'll try to fix this and post more info about problem.

-- 
Ticket URL: <http://code.djangoproject.com/ticket/12224>
Django <http://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

--

You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-upda...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=.


Reply via email to