def update_user_starter_tiles(self, userid): if not (current_user.username == "admin"): return jsonify({ "success": False, "message": "not authorized", "alert_type": "alert-warning" }) repository_user = User.get_user_by_username("repository") selected_user = load_user(userid) all_user_tile_names = selected_user.get_resource_names("tile") repository_starter_tile_names = repository_user.get_resource_names( "tile", tag_filter="starter") missing_tiles = list( set(repository_starter_tile_names) - set(all_user_tile_names)) for tname in missing_tiles: repository_tile_dict = db[ repository_user.tile_collection_name].find_one( {"tile_module_name": tname}) metadata = copy.copy(repository_tile_dict["metadata"]) new_tile_dict = { "tile_module_name": tname, "tile_module": repository_tile_dict["tile_module"], "metadata": metadata } db[selected_user.tile_collection_name].insert_one(new_tile_dict) return jsonify({ "success": True, "message": "added {} tiles".format(len(missing_tiles)) })
def get_lists_classes_functions(self, data): user_id = data["user_id"] the_user = load_user(user_id) return { "list_names": the_user.list_names, "class_names": the_user.class_tags_dict, "function_names": the_user.function_tags_dict, }
def load_modules(self, data): loaded_modules = data["loaded_modules"] user_id = data["user_id"] user_obj = load_user(user_id) for module in loaded_modules: if module not in global_tile_manager.loaded_user_modules[user_obj.username]: result = tile_manager.load_tile_module(module, return_json=False, user_obj=user_obj) if not result["success"]: template = "Error loading module {}\n" + result["message"] raise Exception(template.format(module)) return {"success": True}
def update_all_collections(self): if not (current_user.username == "admin"): return jsonify({ "success": False, "message": "not authorized", "alert_type": "alert-warning" }) user_list = get_all_users() for user in user_list: user_obj = load_user(user["_id"]) print("username " + user_obj.username) self.update_user_collections(user_obj) return jsonify({"success": True})
def migrate_user(self, userid): print("entering migrate user") if not (current_user.username == "admin"): return jsonify({ "success": False, "message": "not authorized", "alert_type": "alert-warning" }) if "TARGET_URI" in os.environ: target_uri = os.environ.get("TARGET_URI") print("got target_uri " + str(target_uri)) else: print("target_uri not in environ") return jsonify({"success": False}) target_client = MongoClient(target_uri, serverSelectionTimeoutMS=30000) target_db = target_client["tacticdb"] target_fs = gridfs.GridFS(target_db) user_obj = load_user(userid) print("got target db, fs, etc") if user_obj.list_collection_name not in target_db.collection_names(): target_db.create_collection(user_obj.list_collection_name) for doc in db[user_obj.list_collection_name].find(): target_db[user_obj.list_collection_name].insert_one(doc) if user_obj.tile_collection_name not in target_db.collection_names(): target_db.create_collection(user_obj.tile_collection_name) for doc in db[user_obj.tile_collection_name].find(): target_db[user_obj.tile_collection_name].insert_one(doc) if user_obj.code_collection_name not in target_db.collection_names(): target_db.create_collection(user_obj.code_collection_name) for doc in db[user_obj.code_collection_name].find(): target_db[user_obj.code_collection_name].insert_one(doc) self.migrate_user_collections(user_obj, target_db, target_fs) if user_obj.project_collection_name not in target_db.collection_names( ): target_db.create_collection(user_obj.project_collection_name) for doc in db[user_obj.project_collection_name].find(): if "file_id" not in doc: continue project_stuff = fs.get(doc["file_id"]).read() doc["file_id"] = target_fs.put(project_stuff) target_db[user_obj.project_collection_name].insert_one(doc) return jsonify({"success": True})
def main_project(self, data): user_id = data["user_id"] project_name = data["project_name"] user_manage_id = data["user_manage_id"] user_obj = load_user(user_id) # noinspection PyTypeChecker self.show_um_status_message("creating main container", user_manage_id, None) main_id = create_container("tactic_main_image", network_mode="bridge", owner=user_id) caddress = get_address(main_id, "bridge") send_request_to_container(self.megaplex_address, "register_container", {"container_id": main_id}) global_tile_manager.add_user(user_obj.username) list_names = self.get_list_names({"user_id": user_obj.get_id()})["list_names"] class_names = self.get_class_names({"user_id": user_obj.get_id()})["class_names"] function_names = self.get_function_tags_dict({"user_id": user_obj.get_id()})["function_names"] with self.app.test_request_context(): bf_url = url_for("figure_source", tile_id="tile_id", figure_name="X")[:-1] data_dict = { "project_name": project_name, "project_collection_name": user_obj.project_collection_name, "main_id": main_id, "user_id": user_obj.get_id(), "megaplex_address": self.megaplex_address, "main_address": caddress, "loaded_user_modules": global_tile_manager.loaded_user_modules, "mongo_uri": mongo_uri, "list_names": list_names, "class_names": class_names, "function_names": function_names, "user_manage_id": user_manage_id, "base_figure_url": bf_url, "use_ssl": use_ssl, } # noinspection PyTypeChecker self.show_um_status_message("start initialize project", user_manage_id, None) result = send_request_to_container(caddress, "initialize_project_mainwindow", data_dict).json() if not result["success"]: destroy_container(main_id) raise Exception(result["message_string"]) return None
def update_collection_selector_list(self, data): collection_manager.update_selector_list(user_obj=load_user(data["user_id"]))
def get_module_from_tile_type(self, data): user_obj = load_user(data["user_id"]) module_name = global_tile_manager.get_module_from_type(user_obj.username, data["tile_type"]) return {"module_name": module_name}
def get_tile_types(self, data): tile_types = {} user_id = data["user_id"] the_user = load_user(user_id) result = {"tile_types": global_tile_manager.get_user_available_tile_types(the_user.username)} return result
def user_can_edit(self, user, page): return page['username'] == user or load_user(user).data.get( 'editor') == True
def get_project_names(self, data): user_id = data["user_id"] user_obj = load_user(user_id) return {"project_names": user_obj.project_names}
def update_project_selector_list(self, data): user_id = data["user_id"] user_obj = load_user(user_id) project_manager.update_selector_list(user_obj=user_obj) return {"success": True}
def get_loaded_user_modules(self, data): user_id = data["user_id"] user_obj = load_user(user_id) return {"loaded_modules": global_tile_manager.loaded_user_modules[user_obj.username]}
def get_class_tags_dict(self, data): user_id = data["user_id"] the_user = load_user(user_id) return {"class_names": the_user.class_tags_dict}
def get_function_tags_dict(self, data): user_id = data["user_id"] the_user = load_user(user_id) return {"function_names": the_user.function_tags_dict}
def get_list_names(self, data): user_id = data["user_id"] the_user = load_user(user_id) return {"list_names": the_user.list_names}
def get_list(self, data): user_id = data["user_id"] list_name = data["list_name"] the_user = load_user(user_id) return {"the_list": the_user.get_list(list_name)}
def get_code_with_function(self, data): user_id = data["user_id"] function_name = data["function_name"] the_user = load_user(user_id) return {"the_code": the_user.get_code_with_function(function_name)}
def user_loader(user_id): return load_user(user_id)
def get_code_with_class(self, data): user_id = data["user_id"] class_name = data["class_name"] the_user = load_user(user_id) return {"the_code": the_user.get_code_with_class(class_name)}
def current_user(self): user_id = mainwindow_instances[self.main_id].user_id return load_user(user_id)
def get_full_collection_name(self, data): short_name = data["name"] the_user = load_user(data["user_id"]) return {"full_collection_name": the_user.build_data_collection_name(short_name)}