﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
12224	"psycopg2 raises ""can't adapt"" when use gettext extensions on model meta permissions field."	Felipe 'chronos' Prenholato	Felipe 'chronos' Prenholato	"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."		closed	Database layer (models, ORM)	dev		duplicate	"psycopg2, permissions, i18n, gettext, ""can't adapt"", syncdb"		Accepted	1	0	1	0	0	0
