Esempio n. 1
0
 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))
     })
Esempio n. 2
0
 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,
     }
Esempio n. 3
0
 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}
Esempio n. 4
0
 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})
Esempio n. 5
0
    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})
Esempio n. 6
0
    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
Esempio n. 7
0
 def update_collection_selector_list(self, data):
     collection_manager.update_selector_list(user_obj=load_user(data["user_id"]))
Esempio n. 8
0
 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}
Esempio n. 9
0
 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
Esempio n. 10
0
 def user_can_edit(self, user, page):
     return page['username'] == user or load_user(user).data.get(
         'editor') == True
Esempio n. 11
0
 def get_project_names(self, data):
     user_id = data["user_id"]
     user_obj = load_user(user_id)
     return {"project_names": user_obj.project_names}
Esempio n. 12
0
 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}
Esempio n. 13
0
 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]}
Esempio n. 14
0
 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}
Esempio n. 15
0
 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}
Esempio n. 16
0
 def get_list_names(self, data):
     user_id = data["user_id"]
     the_user = load_user(user_id)
     return {"list_names": the_user.list_names}
Esempio n. 17
0
 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)}
Esempio n. 18
0
 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)}
Esempio n. 19
0
def user_loader(user_id):
    return load_user(user_id)
Esempio n. 20
0
 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)}
Esempio n. 21
0
 def current_user(self):
     user_id = mainwindow_instances[self.main_id].user_id
     return load_user(user_id)
Esempio n. 22
0
 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)}