Ask Your Question
0

oauth, create user error, pk not updated

asked 2012-08-13 16:42:28 -0500

cwjacklin gravatar image

updated 2012-08-13 20:16:26 -0500

Evgeny gravatar image

when creating user in askbot, we need the id of the newly created user in EmailFeedSetting, called from post_save. I look in the django create user code self.save_base(), the pk is not updated after create user, so id is null in User object. This leads to error in saving EmailFeedSetting().

How does Askbot handle this? Is there another place where user pk is updated?

Thanks,

Error Log user = User.objects.create_user(username, email) File "/home/pubmedly/lib/python2.7/django/contrib/auth/models.py", line 136, in create_user user.save(using=self._db) File "/home/pubmedly/lib/python2.7/django/db/models/base.py", line 460, in save self.save_base(using=using, force_insert=force_insert, force_update=force_update)

File "/home/pubmedly/lib/python2.7/django/db/models/base.py", line 578, in save_base [Mon Aug 13 16:49:59 2012] [error] created=(not record_exists), raw=raw, using=using)

File "/home/pubmedly/lib/python2.7/django/dispatch/dispatcher.py", line 172, in send [Mon Aug 13 16:49:59 2012] [error] response = receiver(signal=self, sender=sender, **named)

File "/home/pubmedly/.virtualenvs/django131/lib/python2.7/site-packages/askbot/models/__init__.py", line 3000, in add_missing_subscriptions instance.add_missing_askbot_subscriptions()

File "/home/pubmedly/.virtualenvs/django131/lib/python2.7/site-packages/askbot/models/__init__.py", line 1761, in user_add_missing_askbot_subscriptions feed_setting.save()

File "/home/pubmedly/.virtualenvs/django131/lib/python2.7/site-packages/askbot/models/user.py", line 323, in save super(EmailFeedSetting,self).save(args,*kwargs)

File "/home/pubmedly/lib/python2.7/django/db/models/base.py", line 460, in save [Mon Aug 13 16:49:59 2012] [error] self.save_base(using=using, force_insert=force_insert, force_update=force_update)

File "/home/pubmedly/lib/python2.7/django/db/models/base.py", line 553, in save_base [Mon Aug 13 16:49:59 2012] [error] result = manager._insert(values, return_id=update_pk, using=using)

File "/home/pubmedly/lib/python2.7/django/db/models/manager.py", line 195, in _insert [Mon Aug 13 16:49:59 2012] [error] return insert_query(self.model, values, **kwargs)

File "/home/pubmedly/lib/python2.7/django/db/models/query.py", line 1436, in insert_query [Mon Aug 13 16:49:59 2012] [error] return query.get_compiler(using=using).execute_sql(return_id)

File "/home/pubmedly/lib/python2.7/django/db/models/sql/compiler.py", line 796, in execute_sql [Mon Aug 13 16:49:59 2012] [error] cursor = super(SQLInsertCompiler, self).execute_sql(None)

File "/home/pubmedly/lib/python2.7/django/db/models/sql/compiler.py", line 738, in execute_sql [Mon Aug 13 16:49:59 2012]

File "/home/pubmedly/lib/python2.7/django/db/backends/postgresql_psycopg2/base.py", line 44, in execute [Mon Aug 13 16:49:59 2012]

IntegrityError: null value in column "subscriber_id" violates not-null constraint

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
0

answered 2012-08-13 20:16:06 -0500

Evgeny gravatar image

We have a function User.add_missing_askbot_subscriptions() you can use that or create those subscriptions manually.

Note that this is an internal piece of code, can change any time.

edit flag offensive delete link more

Comments

with django 1.3.1, self.features.can_return_id_from_insert is default to false. We use postgresql. Django is unable to return the pk from the inserted user, to the way to fix this is to use autocommmit.

This is obscure way to resolve it, but this worked for us. You can enable this if you have Postgresql > 8.2 by setting this in your django db settings. 'OPTIONS': {
'autocommit': True, },

cwjacklin gravatar imagecwjacklin ( 2012-08-13 22:37:05 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2012-08-13 16:42:28 -0500

Seen: 118 times

Last updated: Aug 13 '12