signals.py
1.38 KB
from django.db import connections
from django.dispatch import receiver
from django.db.models.signals import post_save
from accounts.models import User
@receiver(post_save, sender=User)
def change_session_attribute_email(sender, instance, **kwargs):
cursor = connections['trac'].cursor()
cursor.execute(("UPDATE session_attribute SET value=%s "
"WHERE name='email' AND sid=%s"),
[instance.email, instance.username])
cursor.execute(("UPDATE session_attribute SET value=%s "
"WHERE name='name' AND sid=%s"),
[instance.get_full_name(), instance.username])
cursor.execute(("INSERT INTO session_attribute "
"(sid, authenticated, name, value) "
"SELECT %s, '1', 'email', %s WHERE NOT EXISTS "
"(SELECT 1 FROM session_attribute WHERE sid=%s "
"AND name='email')"),
[instance.username, instance.email, instance.username])
cursor.execute(("INSERT INTO session_attribute "
"(sid, authenticated, name, value) "
"SELECT %s, '1', 'name', %s WHERE NOT EXISTS "
"(SELECT 1 FROM session_attribute WHERE sid=%s "
"AND name='name')"),
[instance.username, instance.get_full_name(),
instance.username])