def linkUser(self, user): """ collega l'utente assopy passato con il backend; crea l'utente remoto se necessario. """ if not settings.GENRO_BACKEND: return user if user.assopy_id: return user name = unicode(user.user).encode("utf-8") if not user.user.is_active: log.info('cannot link a remote user to "%s": it\'s not active', name) return log.info('a remote user is needed for "%s"', name) # il lookup con l'email può ritornare più di un id; non è un # problema dato che associo lo user con il backend solo quando ho # verificato l'email (e la verifica non è necessaria se si loggano # con janrain), quindi posso usare una qualsiasi delle identità # remote. Poi un giorno implementeremo il merge delle identità. rid = genro.users(email=user.user.email)["r0"] if rid is not None: log.info('an existing match with the email "%s" is found: %s', user.user.email, rid) user.assopy_id = rid user.save() genro.user_remote2local(user) else: rid = genro.create_user(user.user.first_name, user.user.last_name, user.user.email) log.info("new remote user id: %s", rid) user.assopy_id = rid user.save() return user
def create_user(self, email, first_name='', last_name='', password=None, token=False, active=False, assopy_id=None, send_mail=True): uname = janrain.suggest_username_from_email(email) duser = auth.models.User.objects.create_user(uname, email, password=password) duser.first_name = first_name duser.last_name = last_name duser.is_active = active duser.save() user = User(user=duser) if token: user.token = str(uuid4()) if assopy_id is not None: user.assopy_id = assopy_id user.save() user_created.send(sender=user, profile_complete=(password is not None) or (token is not None)) log.info( 'new local user "%s" created; for "%s %s" (%s)', duser.username, first_name, last_name, email, ) if assopy_id is not None and settings.GENRO_BACKEND: genro.user_remote2local(user) if send_mail: utils.email( 'verify-account', ctx={ 'user': duser, 'token': Token.objects.create(ctype='v', user=duser), }, to=[email] ).send() return user
def linkUser(self, user): """ collega l'utente assopy passato con il backend; crea l'utente remoto se necessario. """ if not settings.GENRO_BACKEND: return user if user.assopy_id: return user name = unicode(user.user).encode('utf-8') if not user.user.is_active: log.info('cannot link a remote user to "%s": it\'s not active', name) return log.info('a remote user is needed for "%s"', name) # il lookup con l'email può ritornare più di un id; non è un # problema dato che associo lo user con il backend solo quando ho # verificato l'email (e la verifica non è necessaria se si loggano # con janrain), quindi posso usare una qualsiasi delle identità # remote. Poi un giorno implementeremo il merge delle identità. rid = genro.users(email=user.user.email)['r0'] if rid is not None: log.info('an existing match with the email "%s" is found: %s', user.user.email, rid) user.assopy_id = rid user.save() genro.user_remote2local(user) else: rid = genro.create_user(user.user.first_name, user.user.last_name, user.user.email) log.info('new remote user id: %s', rid) user.assopy_id = rid user.save() return user