def delete_sobject(my, sobject): search_type = sobject.get_base_search_type() # this is used by API method delete_sobject auto_discover = my.kwargs.get("auto_discover") values = my.kwargs.get("values") if values: related_types = values.get("related_types") elif auto_discover: related_types = SearchType.get_related_types(search_type, direction="children") else: related_types = None # always delete notes and task and snapshot #if not related_types: # related_types = ['sthpw/note', 'sthpw/task', 'sthpw/snapshot'] #related_types = my.schema.get_related_search_types(search_type) if related_types: for related_type in related_types: if not related_type or related_type == search_type: continue # snapshots take care of sthpw/file in the proper manner, so # skip them here if related_type == 'sthpw/file': continue related_sobjects = sobject.get_related_sobjects(related_type) for related_sobject in related_sobjects: if related_type == 'sthpw/snapshot': my.delete_snapshot(related_sobject) else: related_sobject.delete() # implicitly remove "directory" files associated with the sobject search = Search("sthpw/file") search.add_op("begin") search.add_filter("file_name", "") search.add_null_filter("file_name") search.add_op("or") search.add_parent_filter(sobject) file_objects = search.get_sobjects() for file_object in file_objects: base_dir = Environment.get_asset_dir() relative_dir = file_object.get("relative_dir") lib_dir = "%s/%s" % (base_dir, relative_dir) print "removing: ", lib_dir FileUndo.rmdir(lib_dir) file_object.delete() # finally delete the sobject print "deleting: ", sobject.get_search_key() if search_type == 'sthpw/snapshot': my.delete_snapshot(sobject) else: sobject.delete()
def get_by_key(cls, key, user=None, project_code=None, use_cache=True): if not user: user = Environment.get_user_name() # ignore the project_code column for now dict_key = '%s:%s:%s' % (cls.SEARCH_TYPE, project_code, user) if use_cache: settings_dict = Container.get(dict_key) else: settings_dict = None # explicit check for None if settings_dict == None: settings_dict = {} if use_cache: Container.put(dict_key, settings_dict) search = Search(cls.SEARCH_TYPE) search.add_filter("login", user) if project_code: search.add_filter("project_code", project_code) else: search.add_null_filter("project_code") # don't filter with the key in order to build a dict pref_settings = search.get_sobjects() for setting in pref_settings: settings_dict[setting.get_value('key')] = setting pref_setting = settings_dict.get(key) return pref_setting
def delete_sobject(my, sobject): search_type = sobject.get_base_search_type() # this is used by API method delete_sobject auto_discover = my.kwargs.get("auto_discover") values = my.kwargs.get("values") if values: related_types = values.get("related_types") elif auto_discover: related_types = SearchType.get_related_types(search_type, direction="children") else: related_types = None # always delete notes and task and snapshot #if not related_types: # related_types = ['sthpw/note', 'sthpw/task', 'sthpw/snapshot'] #related_types = my.schema.get_related_search_types(search_type) if related_types: for related_type in related_types: if not related_type or related_type == search_type: continue # snapshots take care of sthpw/file in the proper manner, so # skip them here if related_type == 'sthpw/file': continue related_sobjects = sobject.get_related_sobjects(related_type) for related_sobject in related_sobjects: if related_type == 'sthpw/snapshot': my.delete_snapshot(related_sobject) else: related_sobject.delete() # implicitly remove "directory" files associated with the sobject search = Search("sthpw/file") search.add_op("begin") search.add_filter("file_name", "") search.add_null_filter("file_name") search.add_op("or") search.add_parent_filter(sobject) file_objects = search.get_sobjects() for file_object in file_objects: base_dir = Environment.get_asset_dir() relative_dir = file_object.get("relative_dir") lib_dir = "%s/%s" % (base_dir, relative_dir) print "removing: ", lib_dir FileUndo.rmdir(lib_dir) file_object.delete() # finally delete the sobject print "deleting: ", sobject.get_search_key() if search_type == 'sthpw/snapshot': my.delete_snapshot(sobject) else: sobject.delete()
def get_by_key(cls, key, user=None, project_code=None, use_cache=True): if not user: user = Environment.get_user_name() # ignore the project_code column for now dict_key = '%s:%s:%s' %(cls.SEARCH_TYPE, project_code, user) if use_cache: settings_dict = Container.get(dict_key) else: settings_dict = None # explicit check for None if settings_dict == None: settings_dict = {} if use_cache: Container.put(dict_key, settings_dict) search = Search(cls.SEARCH_TYPE) search.add_filter("login", user) if project_code: search.add_filter("project_code", project_code) else: search.add_null_filter("project_code") # don't filter with the key in order to build a dict pref_settings = search.get_sobjects() for setting in pref_settings: settings_dict[setting.get_value('key')] = setting pref_setting = settings_dict.get(key) return pref_setting
def do_delete(self, sobject, related_types=None): search_type = sobject.get_base_search_type() # always delete notes and task and snapshot if not related_types: related_types = ['sthpw/note', 'sthpw/task', 'sthpw/snapshot'] #related_types = self.schema.get_related_search_types(search_type) if related_types: for related_type in related_types: if not related_type or related_type == search_type: continue # snapshots take care of sthpw/file in the proper manner, so # skip them here if related_type == 'sthpw/file': continue related_sobjects = sobject.get_related_sobjects(related_type) for related_sobject in related_sobjects: if related_type == 'sthpw/snapshot': self.delete_snapshot(related_sobject) else: related_sobject.delete() #self.do_delete(related_sobject) # implicitly remove "directory" files associated with the sobject search = Search("sthpw/file") search.add_op("begin") search.add_filter("file_name", "") search.add_null_filter("file_name") search.add_op("or") search.add_parent_filter(sobject) file_objects = search.get_sobjects() #if file_objects: # print("Removing [%s] file objects" % len(file_objects)) for file_object in file_objects: base_dir = Environment.get_asset_dir() relative_dir = file_object.get("relative_dir") lib_dir = "%s/%s" % (base_dir, relative_dir) FileUndo.rmdir(lib_dir) file_object.delete() # finally delete the sobject print("Deleting: ", sobject.get_search_key()) if search_type == 'sthpw/snapshot': self.delete_snapshot(sobject) else: sobject.delete()
def do_delete(self, sobject, related_types=None): search_type = sobject.get_base_search_type() # always delete notes and task and snapshot if not related_types: related_types = ['sthpw/note', 'sthpw/task', 'sthpw/snapshot'] #related_types = self.schema.get_related_search_types(search_type) if related_types: for related_type in related_types: if not related_type or related_type == search_type: continue # snapshots take care of sthpw/file in the proper manner, so # skip them here if related_type == 'sthpw/file': continue related_sobjects = sobject.get_related_sobjects(related_type) for related_sobject in related_sobjects: if related_type == 'sthpw/snapshot': self.delete_snapshot(related_sobject) else: related_sobject.delete() #self.do_delete(related_sobject) # implicitly remove "directory" files associated with the sobject search = Search("sthpw/file") search.add_op("begin") search.add_filter("file_name", "") search.add_null_filter("file_name") search.add_op("or") search.add_parent_filter(sobject) file_objects = search.get_sobjects() #if file_objects: # print("Removing [%s] file objects" % len(file_objects)) for file_object in file_objects: base_dir = Environment.get_asset_dir() relative_dir = file_object.get("relative_dir") lib_dir = "%s/%s" % (base_dir, relative_dir) FileUndo.rmdir(lib_dir) file_object.delete() # finally delete the sobject print("Deleting: ", sobject.get_search_key()) if search_type == 'sthpw/snapshot': self.delete_snapshot(sobject) else: sobject.delete()