def manage_user(access_token, user_data): """Manage the user after signin""" user = user_repo.get_by(facebook_user_id=user_data['id']) facebook_token = dict(oauth_token=access_token) if user is None: info = dict(facebook_token=facebook_token) name = username_from_full_name(user_data['name']) user_exists = user_repo.get_by_name(name) is not None # NOTE: Sometimes users at Facebook validate their accounts without # registering an e-mail (see this http://stackoverflow.com/a/17809808) email_exists = (user_data.get('email') is not None and user_repo.get_by(email_addr=user_data['email']) is not None) if not user_exists and not email_exists: if not user_data.get('email'): user_data['email'] = name user = User(fullname=user_data['name'], name=name, email_addr=user_data['email'], facebook_user_id=user_data['id'], info=info) user_repo.save(user) if newsletter.is_initialized() and user.email_addr != name: newsletter.subscribe_user(user) return user else: return None else: user.info['facebook_token'] = facebook_token user_repo.save(user) return user
def newsletter_subscribe(): """ Register method for subscribing user to PYBOSSA newsletter. Returns a Jinja2 template """ # Save that we've prompted the user to sign up in the newsletter if newsletter.is_initialized() and current_user.is_authenticated(): next_url = request.args.get('next') or url_for('home.home') user = user_repo.get(current_user.id) if current_user.newsletter_prompted is False: user.newsletter_prompted = True user_repo.update(user) if request.args.get('subscribe') == 'True': newsletter.subscribe_user(user) flash("You are subscribed to our newsletter!", 'success') return redirect_content_type(next_url) elif request.args.get('subscribe') == 'False': return redirect_content_type(next_url) else: response = dict(template='account/newsletter.html', title=gettext("Subscribe to our Newsletter"), next=next_url) return handle_content_type(response) else: return abort(404)
def newsletter_subscribe(): """ Register method for subscribing user to PyBossa newsletter. Returns a Jinja2 template """ # Save that we've prompted the user to sign up in the newsletter if newsletter.is_initialized() and current_user.is_authenticated(): next_url = request.args.get('next') or url_for('home.home') user = user_repo.get(current_user.id) if current_user.newsletter_prompted is False: user.newsletter_prompted = True user_repo.update(user) if request.args.get('subscribe') == 'True': newsletter.subscribe_user(user) flash("You are subscribed to our newsletter!") return redirect(next_url) elif request.args.get('subscribe') == 'False': return redirect(next_url) else: return render_template('account/newsletter.html', title=gettext("Subscribe to our Newsletter"), next=next_url) else: return abort(404)
def manage_user(access_token, user_data): """Manage the user after signin""" # We have to store the oauth_token in the session to get the USER fields user = user_repo.get_by(google_user_id=user_data['id']) google_token = dict(oauth_token=access_token) # user never signed on if user is None: info = dict(google_token=google_token) name = username_from_full_name(user_data['name']) user = user_repo.get_by_name(name) email = user_repo.get_by(email_addr=user_data['email']) if ((user is None) and (email is None)): user = User(fullname=user_data['name'], name=name, email_addr=user_data['email'], google_user_id=user_data['id'], info=info) user_repo.save(user) if newsletter.is_initialized(): newsletter.subscribe_user(user) return user else: return None else: user.info['google_token'] = google_token # Update the name to fit with new paradigm to avoid UTF8 problems if type(user.name) == unicode or ' ' in user.name: user.name = username_from_full_name(user.name) user_repo.save(user) return user
def manage_user(access_token, user_data): """Manage the user after signin""" # We have to store the oauth_token in the session to get the USER fields user = user_repo.get_by(google_user_id=user_data['id']) # user never signed on if user is None: google_token = dict(oauth_token=access_token) info = dict(google_token=google_token) name = username_from_full_name(user_data['name']) user = user_repo.get_by_name(name) email = user_repo.get_by(email_addr=user_data['email']) if ((user is None) and (email is None)): user = User(fullname=user_data['name'], name=name, email_addr=user_data['email'], google_user_id=user_data['id'], info=info) user_repo.save(user) if newsletter.is_initialized(): newsletter.subscribe_user(user) return user else: return None else: # Update the name to fit with new paradigm to avoid UTF8 problems if type(user.name) == unicode or ' ' in user.name: user.name = username_from_full_name(user.name) user_repo.update(user) return user
def manage_user(access_token, user_data): """Manage the user after signin""" user = user_repo.get_by(facebook_user_id=user_data['id']) if user is None: facebook_token = dict(oauth_token=access_token) info = dict(facebook_token=facebook_token) name = username_from_full_name(user_data['name']) user_exists = user_repo.get_by_name(name) is not None # NOTE: Sometimes users at Facebook validate their accounts without # registering an e-mail (see this http://stackoverflow.com/a/17809808) email_exists = (user_data.get('email') is not None and user_repo.get_by(email_addr=user_data['email']) is not None) if not user_exists and not email_exists: if not user_data.get('email'): user_data['email'] = name user = User(fullname=user_data['name'], name=name, email_addr=user_data['email'], facebook_user_id=user_data['id'], info=info) user_repo.save(user) if newsletter.is_initialized() and user.email_addr != name: newsletter.subscribe_user(user) return user else: return None else: return user
def newsletter_subscribe(): """ Register method for subscribing user to PyBossa newsletter. Returns a Jinja2 template """ # Save that we've prompted the user to sign up in the newsletter if newsletter.app and current_user.is_authenticated(): next_url = request.args.get('next') or url_for('home.home') user = user_repo.get(current_user.id) if current_user.newsletter_prompted is False: user.newsletter_prompted = True user_repo.update(user) if request.args.get('subscribe') == 'True': newsletter.subscribe_user(user) flash("You are subscribed to our newsletter!") return redirect(next_url) elif request.args.get('subscribe') == 'False': return redirect(next_url) else: return render_template( 'account/newsletter.html', title=gettext("Subscribe to our Newsletter"), next=next_url) else: return abort(404)
def manage_user(access_token, user_data, next_url): """Manage the user after signin""" # We have to store the oauth_token in the session to get the USER fields user = user_repo.get_by(google_user_id=user_data['id']) # user never signed on if user is None: google_token = dict(oauth_token=access_token) info = dict(google_token=google_token) name = user_data['name'].encode('ascii', 'ignore').lower().replace(" ", "") user = user_repo.get_by_name(name) email = user_repo.get_by(email_addr=user_data['email']) if ((user is None) and (email is None)): user = User(fullname=user_data['name'], name=user_data['name'].encode('ascii', 'ignore') .lower().replace(" ", ""), email_addr=user_data['email'], google_user_id=user_data['id'], info=info) user_repo.save(user) if newsletter.app: newsletter.subscribe_user(user) return user else: return None else: # Update the name to fit with new paradigm to avoid UTF8 problems if type(user.name) == unicode or ' ' in user.name: user.name = user.name.encode('ascii', 'ignore').lower().replace(" ", "") user_repo.update(user) return user
def manage_user(access_token, user_data, next_url): """Manage the user after signin""" user = user_repo.get_by(facebook_user_id=user_data['id']) if user is None: facebook_token = dict(oauth_token=access_token) info = dict(facebook_token=facebook_token) user = user_repo.get_by_name(user_data['username']) # NOTE: Sometimes users at Facebook validate their accounts without # registering an e-mail (see this http://stackoverflow.com/a/17809808) email = None if user_data.get('email'): email = user_repo.get_by(email_addr=user_data['email']) if user is None and email is None: if not user_data.get('email'): user_data['email'] = "None" user = User(fullname=user_data['name'], name=user_data['username'], email_addr=user_data['email'], facebook_user_id=user_data['id'], info=info) user_repo.save(user) if newsletter.app and user.email_addr != "None": newsletter.subscribe_user(user) return user else: return None else: return user
def manage_user(user_data): """Manage the user after signin""" # We have to store the oauth_token in the session to get the USER fields user = user_repo.get_by(mykaarma_user_id=user_data['id']) # user never signed on if user is None: user_by_email = user_repo.get_by(email_addr=user_data['email']) if (user_by_email is None): """Generate 4 digit alphanumeric string with digits and lowercase characters""" name = get_mykaarma_username_from_full_name(user_data['name']) """check if already a user present with the same name, if yes, generate another random string""" user = user_repo.get_by_name(name) while (user is not None): name = get_mykaarma_username_from_full_name(user_data['name']) user = user_repo.get_by_name(name) """add user""" user = User(fullname=user_data['name'], name=name, email_addr=user_data['email'], mykaarma_user_id=user_data['id']) user_repo.save(user) if newsletter.is_initialized(): newsletter.subscribe_user(user) return user else: return add_through_email(user_by_email, user_data) else: return user
def manage_user(access_token, user_data, next_url): """Manage the user after signin""" # We have to store the oauth_token in the session to get the USER fields user = user_repo.get_by(google_user_id=user_data['id']) # user never signed on if user is None: google_token = dict(oauth_token=access_token) info = dict(google_token=google_token) name = user_data['name'].encode('ascii', 'ignore').lower().replace(" ", "") user = user_repo.get_by_name(name) email = user_repo.get_by(email_addr=user_data['email']) if ((user is None) and (email is None)): user = User(fullname=user_data['name'], name=user_data['name'].encode( 'ascii', 'ignore').lower().replace(" ", ""), email_addr=user_data['email'], google_user_id=user_data['id'], info=info) user_repo.save(user) if newsletter.app: newsletter.subscribe_user(user) return user else: return None else: # Update the name to fit with new paradigm to avoid UTF8 problems if type(user.name) == unicode or ' ' in user.name: user.name = user.name.encode('ascii', 'ignore').lower().replace(" ", "") user_repo.update(user) return user