Пример #1
0
def after_connect(request , net_user , network):
	try:
		account = Account.objects.get(uid=net_user['id'])
		
		###
		if request.user.is_authenticated():
			if account.spiffuser.id != request.user.id:
				account.spiffuser = User.instance(request.user)
				
				
				## WARN TO GO WITH THAT ACCOUNT INSTEAD		
		###
		
		backend = get_backends()[0]
		account.spiffuser.backend = "%s.%s" % (backend.__module__, backend.__class__.__name__)
		userlogin(request,account.spiffuser)
		
		if network == "facebook":
			account.oauth_token = net_user['access_token']
		elif network == "twitter":
			account.oauth_token = net_user['access_token'].key
			account.oauth_token_secret = net_user['access_token'].secret
		account.save()
		
	except Account.DoesNotExist:
		needs_username_correction = False
		
		if request.user.is_authenticated():
			user = User.instance(request.user)
		else:
			country = Country.objects.get(id=1)
				
			phonenumber = PhoneNumber(
				countrycode = 0,
				carriercode = 0,
				number 		= 0,
			)
			phonenumber.save()
				
			address = Address(
				zipcode 		= '',
				street_line_1	= '',	
				street_line_2	= '',
				city			= '',
				state			= '',
				country			= country,
				location 		= country.location,
				phonenumebr		= phonenumber
			)
			
			try:
				loc = get_field(net_user,"location",network)
				address.street_line_1	= loc
				address.city			= loc
			except:
				pass
				
			address.save()
			
			username = get_field(net_user,"username",network)
			
			
			try:
				User.objects.get(username=username)
				username = get_field(net_user,"id",network)
				needs_username_correction = True
				request.session['needs_username_correction'] = True
			except:
				pass
			
			user = User (
				username		= username,
				email			= get_field(net_user,"email",network),
				password		= "******",
				first_name		= '',
				last_name		= '',
				dob				= datetime.datetime.now(),
				gender			= '',
				address			= address,
				verification	= User.create_verification("1",True),
				is_active		= True,
				is_staff		= True,
				points			= 0,
			)
			
			try:
				user.first_name		= get_field(net_user,'first_name',network),
				user.last_name		= get_field(net_user,'last_name',network),
				user.gender			= ValueManager.translate_gender(get_field(net_user,'gender',network))
			except:
				pass
			
			user.save()
			
			backend = get_backends()[0]
			user.backend = "%s.%s" % (backend.__module__, backend.__class__.__name__)
			userlogin(request,user)
		
		token = net_user['access_token']
		del net_user['access_token']
		
		account = Account(
			uid					= get_field(net_user,'id',network),
			oauth_token			= "",
			oauth_token_secret	= "",
			other_data			= json.dumps(net_user),
			spiffuser			= user,
			account_type		= network
		)
		account.save()
		
		if network == "facebook":
			account.oauth_token 		= token
		elif network == "twitter":
			account.oauth_token 		= token.key
			account.oauth_token_secret 	= token.secret
			
		if needs_username_correction:
			return HttpResponseRedirect("/members/profile/")		
			
	return HttpResponseRedirect("/")