diff options
Diffstat (limited to 'wqflask/wqflask/collect.py')
-rw-r--r-- | wqflask/wqflask/collect.py | 126 |
1 files changed, 26 insertions, 100 deletions
diff --git a/wqflask/wqflask/collect.py b/wqflask/wqflask/collect.py index ffc698de..ecc02c06 100644 --- a/wqflask/wqflask/collect.py +++ b/wqflask/wqflask/collect.py @@ -40,13 +40,6 @@ import logging from utility.logger import getLogger logger = getLogger(__name__) -def get_collection(): - if g.user_session.logged_in: - return UserCollection() - else: - return AnonCollection() - #else: - # CauseError class AnonCollection(object): """User is not logged in""" @@ -95,7 +88,6 @@ class AnonCollection(object): def add_traits(self, params): #assert collection_name == "Default", "Unexpected collection name for anonymous user" self.traits = list(process_traits(params['traits'])) - #len_before = len(Redis.smembers(self.key)) existing_collections = Redis.get(self.key) logger.debug("existing_collections:", existing_collections) if existing_collections != None and existing_collections != "None": @@ -130,10 +122,6 @@ class AnonCollection(object): collections_list.append(collection_dict) Redis.set(self.key, json.dumps(collections_list)) - #Redis.sadd(self.key, *list(traits)) - #Redis.expire(self.key, 60 * 60 * 24 * 5) - #len_now = len(Redis.smembers(self.key)) - #report_change(len_before, len_now) def remove_traits(self, params): traits_to_remove = [(":").join(trait.split(":")[:2]) for trait in params.getlist('traits[]')] @@ -149,54 +137,12 @@ class AnonCollection(object): collections_list[collection_position]['num_members'] = len(collections_list[collection_position]['members']) collections_list[collection_position]['changed_timestamp'] = datetime.datetime.utcnow().strftime('%b %d %Y %I:%M%p') len_now = collections_list[collection_position]['num_members'] - #print("before in redis:", json.loads(Redis.get(self.key))) Redis.set(self.key, json.dumps(collections_list)) - #print("currently in redis:", json.loads(Redis.get(self.key))) # We need to return something so we'll return this...maybe in the future # we can use it to check the results return str(len_now) - -class UserCollection(object): - """User is logged in""" - - def add_traits(self, params, collection_name): - logger.debug("---> params are:", params.keys()) - logger.debug(" type(params):", type(params)) - if collection_name=="Default": - uc = g.user_session.user_ob.get_collection_by_name("Default") - # Doesn't exist so we'll create it - if not uc: - return create_new("Default") - else: - uc = model.UserCollection.query.get(params['existing_collection'].split(":")[0]) - members = list(uc.members_as_set()) #set(json.loads(uc.members)) - len_before = len(members) - - traits = process_traits(params['traits']) - - members_now = members - for trait in traits: - if trait in members: - continue - else: - members_now.append(trait) - - #members_now = list(members | traits) - len_now = len(members_now) - uc.members = json.dumps(members_now) - - uc.changed_timestamp = datetime.datetime.utcnow() - - db_session.commit() - - logger.debug("added to existing, now set is:" + str(uc.members)) - report_change(len_before, len_now) - - # Probably have to change that - return redirect(url_for('view_collection', uc_id=uc.id)) - def process_traits(unprocessed_traits): #print("unprocessed_traits are:", unprocessed_traits) if isinstance(unprocessed_traits, basestring): @@ -227,9 +173,8 @@ def collections_add(): traits=request.args['traits'] if g.user_session.logged_in: - logger.debug("user_session",g.user_session) - user_collections = g.user_session.user_ob.user_collections - logger.debug("user_collections are:", user_collections) + user_collections = g.user_session.user_collections + #logger.debug("user_collections are:", user_collections) return render_template("collections/add.html", traits = traits, collections = user_collections, @@ -256,9 +201,12 @@ def collections_new(): return create_new(collection_name) elif "add_to_existing" in params: logger.debug("in add to existing") + collection_id = params['existing_collection'].split(":")[0] collection_name = params['existing_collection'].split(":")[1] if g.user_session.logged_in: - return UserCollection().add_traits(params, collection_name) + traits = list(process_traits(params['traits'])) + g.user_session.add_traits_to_collection(collection_id, traits) + return redirect(url_for('view_collection', uc_id=collection_id)) else: ac = AnonCollection(collection_name) ac.add_traits(params) @@ -273,16 +221,10 @@ def create_new(collection_name): traits = process_traits(unprocessed_traits) if g.user_session.logged_in: - uc = model.UserCollection() - uc.name = collection_name - logger.debug("user_session:", g.user_session.__dict__) - uc.user = g.user_session.user_id - uc.members = json.dumps(list(traits)) - db_session.add(uc) - db_session.commit() - return redirect(url_for('view_collection', uc_id=uc.id)) + uc_id = g.user_session.add_collection(collection_name, traits) + + return redirect(url_for('view_collection', uc_id=uc_id)) else: - current_collections = user_manager.AnonUser().get_collections() ac = AnonCollection(collection_name) ac.changed_timestamp = datetime.datetime.utcnow().strftime('%b %d %Y %I:%M%p') ac.add_traits(params) @@ -291,17 +233,17 @@ def create_new(collection_name): @app.route("/collections/list") def list_collections(): params = request.args - logger.debug("PARAMS:", params) + #logger.debug("PARAMS:", params) if g.user_session.logged_in: - user_collections = list(g.user_session.user_ob.user_collections) - logger.debug("user_collections are:", user_collections) + user_collections = list(g.user_session.user_collections) + #logger.debug("user_collections are:", user_collections) return render_template("collections/list.html", params = params, collections = user_collections, ) else: anon_collections = user_manager.AnonUser().get_collections() - logger.debug("anon_collections are:", anon_collections) + #logger.debug("anon_collections are:", anon_collections) return render_template("collections/list.html", params = params, collections = anon_collections) @@ -310,20 +252,14 @@ def list_collections(): @app.route("/collections/remove", methods=('POST',)) def remove_traits(): params = request.form - logger.debug("params are:", params) if "uc_id" in params: uc_id = params['uc_id'] - uc = model.UserCollection.query.get(uc_id) traits_to_remove = params.getlist('traits[]') traits_to_remove = process_traits(traits_to_remove) logger.debug("\n\n after processing, traits_to_remove:", traits_to_remove) - all_traits = uc.members_as_set() - members_now = all_traits - traits_to_remove - logger.debug(" members_now:", members_now) - uc.members = json.dumps(list(members_now)) - uc.changed_timestamp = datetime.datetime.utcnow() - db_session.commit() + + members_now = g.user_session.remove_traits_from_collection(uc_id, traits_to_remove) else: collection_name = params['collection_name'] members_now = AnonCollection(collection_name).remove_traits(params) @@ -337,22 +273,13 @@ def remove_traits(): @app.route("/collections/delete", methods=('POST',)) def delete_collection(): params = request.form - logger.debug("params:", params) if g.user_session.logged_in: uc_id = params['uc_id'] if len(uc_id.split(":")) > 1: for this_uc_id in uc_id.split(":"): - uc = model.UserCollection.query.get(this_uc_id) - collection_name = uc.name - db_session.delete(uc) - db_session.commit() + collection_name = g.user_session.delete_collection(this_uc_id) else: - uc = model.UserCollection.query.get(uc_id) - # Todo: For now having the id is good enough since it's so unique - # But might want to check ownership in the future - collection_name = uc.name - db_session.delete(uc) - db_session.commit() + collection_name = g.user_session.delete_collection(uc_id) else: if "collection_name" in params: collection_name = params['collection_name'] @@ -360,7 +287,10 @@ def delete_collection(): for this_collection in params['uc_id'].split(":"): user_manager.AnonUser().delete_collection(this_collection) - flash("We've deleted the collection: {}.".format(collection_name), "alert-info") + if len(uc_id.split(":")) > 1: + flash("We've deleted the selected collections.", "alert-info") + else: + flash("We've deleted the collection: {}.".format(collection_name), "alert-info") return redirect(url_for('list_collections')) @@ -368,12 +298,11 @@ def delete_collection(): @app.route("/collections/view") def view_collection(): params = request.args - logger.debug("PARAMS in view collection:", params) - if "uc_id" in params: + if g.user_session.logged_in and "uc_id" in params: uc_id = params['uc_id'] - uc = model.UserCollection.query.get(uc_id) - traits = json.loads(uc.members) + uc = (collection for collection in g.user_session.user_collections if collection["id"] == uc_id).next() + traits = uc["members"] else: user_collections = json.loads(Redis.get(user_manager.AnonUser().key)) this_collection = {} @@ -381,10 +310,8 @@ def view_collection(): if collection['id'] == params['collection_id']: this_collection = collection break - #this_collection = user_collections[params['collection_id']] - traits = this_collection['members'] - logger.debug("in view_collection traits are:", traits) + traits = this_collection['members'] trait_obs = [] json_version = [] @@ -410,9 +337,8 @@ def view_collection(): collection_info = dict(trait_obs=trait_obs, collection_name=this_collection['name']) if "json" in params: - logger.debug("json_version:", json_version) return json.dumps(json_version) else: return render_template("collections/view.html", **collection_info - ) + )
\ No newline at end of file |