diff options
author | zsloan | 2016-08-11 20:25:47 +0000 |
---|---|---|
committer | zsloan | 2016-08-11 20:25:47 +0000 |
commit | 76a5fba80bba30df35fb0cee4ceb414312a1ea5a (patch) | |
tree | ef6a72af92f7f086a0e9952fc73e60ce235014ee | |
parent | b37f5cc857849a29ea13825b96fbb8ea7c24a807 (diff) | |
download | genenetwork2-76a5fba80bba30df35fb0cee4ceb414312a1ea5a.tar.gz |
Added prompt when user logs in that lets them choose to import existing anonymous collections as user collections
-rw-r--r-- | wqflask/wqflask/model.py | 2 | ||||
-rw-r--r-- | wqflask/wqflask/templates/new_security/login_user.html | 13 | ||||
-rw-r--r-- | wqflask/wqflask/user_manager.py | 25 | ||||
-rw-r--r-- | wqflask/wqflask/views.py | 5 |
4 files changed, 40 insertions, 5 deletions
diff --git a/wqflask/wqflask/model.py b/wqflask/wqflask/model.py index 3b480e0c..17343186 100644 --- a/wqflask/wqflask/model.py +++ b/wqflask/wqflask/model.py @@ -83,7 +83,7 @@ class User(Base): def get_collection_by_name(self, collection_name): try: - collect = self.user_collections.filter_by(name=collection_name).one() + collect = self.user_collections.filter_by(name=collection_name).first() except sqlalchemy.orm.exc.NoResultFound: collect = None return collect diff --git a/wqflask/wqflask/templates/new_security/login_user.html b/wqflask/wqflask/templates/new_security/login_user.html index e9dd4ab1..9e5942cd 100644 --- a/wqflask/wqflask/templates/new_security/login_user.html +++ b/wqflask/wqflask/templates/new_security/login_user.html @@ -54,6 +54,7 @@ <label class="col-xs-1 control-label" for="submit"></label> <div style="margin-left:20px;" class="col-xs-4 controls"> <input id="next" name="next" type="hidden" value=""> + <input id="import_collections" name="import_collections" type="hidden" value="false"> <input class="btn btn-primary" id="submit" name="submit" type="submit" value="Sign in"> </div> </div> @@ -99,6 +100,18 @@ label.error,div.error{ } }); }); + + $("input[name=submit]").on("click", function() { + import_collections = confirm("Would you like to import existing collections?") + if (import_collections == true) { + $("input[name=import_collections]").val("true"); + } + else { + $("input[name=import_collections]").val("false"); + } + $("#loginUserForm").submit(); + }); + </script> {% include "new_security/_scripts.html" %} diff --git a/wqflask/wqflask/user_manager.py b/wqflask/wqflask/user_manager.py index 4ff3e79c..64fa82c1 100644 --- a/wqflask/wqflask/user_manager.py +++ b/wqflask/wqflask/user_manager.py @@ -118,6 +118,20 @@ class AnonUser(object): collection['changed_timestamp'] = datetime.datetime.strptime(collection['changed_timestamp'], '%b %d %Y %I:%M%p') return collections + def import_traits_to_user(self): + collections_list = json.loads(Redis.get(self.key)) + for collection in collections_list: + uc = model.UserCollection() + uc.name = collection['name'] + collection_exists = g.user_session.user_ob.get_collection_by_name(uc.name) + if collection_exists: + continue + else: + uc.user = g.user_session.user_id + uc.members = json.dumps(collection['members']) + db_session.add(uc) + db_session.commit() + def display_num_collections(self): """ Returns the number of collections or a blank string if there are zero. @@ -524,7 +538,10 @@ class LoginUser(object): logger.debug("I will remember you") self.remember_me = True - return self.actual_login(user) + import_col = params['import_collections'] + #g.cookie_session.import_traits_to_user() + + return self.actual_login(user, import_collections=import_col) else: if user: @@ -534,16 +551,16 @@ class LoginUser(object): return response - def actual_login(self, user, assumed_by=None): + def actual_login(self, user, assumed_by=None, import_collections=None): """The meat of the logging in process""" session_id_signed = self.successful_login(user, assumed_by) flash("Thank you for logging in {}.".format(user.full_name), "alert-success") - response = make_response(redirect(url_for('index_page'))) + print("IMPORT1:", import_collections) + response = make_response(redirect(url_for('index_page', import_collections=import_collections))) if self.remember_me: max_age = self.remember_time else: max_age = None - response.set_cookie(UserSession.cookie_name, session_id_signed, max_age=max_age) return response diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py index 70e465d1..63dceb42 100644 --- a/wqflask/wqflask/views.py +++ b/wqflask/wqflask/views.py @@ -84,6 +84,11 @@ def shutdown_session(exception=None): @app.route("/") def index_page(): logger.info("Sending index_page") + params = request.args + if 'import_collections' in params: + import_collections = params['import_collections'] + if import_collections == "true": + g.cookie_session.import_traits_to_user() if USE_GN_SERVER: # The menu is generated using GN_SERVER return render_template("index_page.html", gn_server_url = GN_SERVER_URL) |