Найти - Пользователи
Полная версия: Проблема с Django-uLogin
Начало » Django » Проблема с Django-uLogin
1
HomoAlbus
Добрый день, уважаемые питонисты! Столкнулся с небольшой проблемой, требуется ваша помощь. Пишу бложек, для авторизации через соц. сети использую uLogin. Сам модуль установил, настроел работает все корректно, пользователи создаются, логинятся - красота. Теперь иду дальше, хочу заполнять данные в таблице UserInfo из профиля пользователя в социалочке. Использовал модель из демо-проекта:

from django.db import models
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 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, dispatch_uid='loginsys.models')

Однако при создании нового пользователя таблица userInfo не заполняется. подозреваю, что не срабатываетобработчик сигнала, видимо что-то недонастроил. Подскажите пожалуйста, куда можно копнуть. Спасибо.
Singularity
HomoAlbus
для авторизации через соц. сети использую uLogin.
лучше уже openid + oauth2
HomoAlbus
Singularity

uLogin меня устраевает своей простотой. Вот только понять не могу почему не обрабатыается сигнал?
Singularity
HomoAlbus
ну если он такой простой, то почему у ты задал этот вопрос ?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB