Добрый день, уважаемые питонисты! Столкнулся с небольшой проблемой, требуется ваша помощь. Пишу бложек, для авторизации через соц. сети использую uLogin. Сам модуль установил, настроел работает все корректно, пользователи создаются, логинятся - красота. Теперь иду дальше, хочу заполнять данные в таблице UserInfo из профиля пользователя в социалочке. Использовал модель из демо-проекта:
from django.db import models
from django.contrib.auth.models import User
from django.core.files.base import ContentFile
from django_ulogin.models import ULoginUser
from django_ulogin.signals import assign
import datetime
import os
import requests
ULOGIN_FIELDS = ['first_name', 'last_name', 'sex', 'email']
ULOGIN_OPTIONAL = ['photo', 'photo_big', 'city', 'country', 'bdate']
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
about = models.TextField(blank=True)
class UserInfo(models.Model):
SEX_FEMALE = 1
SEX_MALE = 2
def upload_photo(self, filename):
return 'avatars/{network}/{uid}/{file}'.format(network=self.ulogin.network,
uid=self.ulogin.uid,
file=os.path.basename(filename))
def upload_photo_big(self, filename):
return 'photos/{network}/{uid}/{file}'.format(network=self.ulogin.network,
uid=self.ulogin.uid,
file=os.path.basename(filename))
ulogin = models.ForeignKey(ULoginUser)
sex = models.IntegerField(blank=True,
null=True,
choices = (
(SEX_MALE, 'male'),
(SEX_FEMALE, 'female'),
))
photo = models.ImageField(null=True,
blank=True,
upload_to=upload_photo)
photo_big = models.ImageField(null=True,
blank=True,
upload_to=upload_photo_big)
city = models.CharField(blank=True,
default='',
max_length=255)
country = models.CharField(blank=True,
default='',
max_length=255)
bdate = models.DateField(verbose_name='Birthday',
blank=True,
null=True)
def catch_ulogin_signal(*args, **kwargs):
user = kwargs['user']
json = kwargs['ulogin_data']
ulogin = kwargs['ulogin_user']
if kwargs['registered']:
user.first_name = json['first_name']
user.last_name = json['last_name']
user.email = json['email']
user.save()
data = {'ulogin': ulogin}
for fld in ['sex', 'city', 'country']:
if fld not in json:
return
data[fld] = json[fld]
if 'bdate' in json and json['bdate']:
d, m, y = json['bdate'].split('.')
data['bdate'] = datetime.datetime(int(y), int(m), int(d))
userinfo = UserInfo.objects.create(**data)
for fld in ['photo', 'photo_big']:
if fld not in json:
continue
getattr(userinfo, fld).save(os.path.basename(json[fld]),
ContentFile(requests.get(json[fld]).raw.read()))
userinfo.save()
assign.connect(catch_ulogin_signal, sender=ULoginUser)
Это листинг models.py. Я создаю модельку UserInfo (взял из демо-примера), создаю обработчик, привязываю обработчик к событию. Однако при создании нового пользователя таблица userInfo не заполняется. подозреваю, что не срабатываетобработчик сигнала, видимо что-то недонастроил. Подскажите пожалуйста, куда можно копнуть. Спасибо.