def categorize(my, widget, search_type, search): '''categorize parents based on search_type''' # FIXME: this should not be here. This is a general class for all # search types, not just prod/asset if my.get_option('read_only') != 'true': if search_type == "prod/asset": lib_select = FilterSelectWdg('parent_lib') lib_select.persistence = False search2 = Search("prod/asset_library") lib_select.set_search_for_options(search2, "code", "title") lib_select.add_empty_option("-- Any --") widget.add(lib_select) # get all of the options for this search type parent_lib = lib_select.get_value() if parent_lib: search.add_filter('asset_library', parent_lib) elif search_type == "prod/shot": lib_select = FilterSelectWdg('parent_lib') lib_select.persistence = False search2 = Search("prod/sequence") lib_select.set_search_for_options(search2, "code", "code") lib_select.add_empty_option("-- Any --") widget.add(lib_select) # get all of the options for this search type parent_lib = lib_select.get_value() if parent_lib: search.add_filter('sequence_code', parent_lib) elif search_type == 'prod/texture': lib_select = FilterSelectWdg('parent_lib') lib_select.persistence = False search2 = Search("prod/texture") search2.add_column('category') search2.add_group_by("category") lib_select.set_search_for_options(search2, "category", "category") lib_select.add_empty_option("-- Any --") widget.add(lib_select) # get all of the options for this search type parent_lib = lib_select.get_value() if parent_lib: search.add_filter('category', parent_lib)
def categorize(my, widget, search_type, search): '''categorize parents based on search_type''' # FIXME: this should not be here. This is a general class for all # search types, not just prod/asset if my.get_option('read_only') != 'true': if search_type == "prod/asset": lib_select = FilterSelectWdg('parent_lib') lib_select.persistence = False search2 = Search("prod/asset_library") lib_select.set_search_for_options( search2, "code", "title" ) lib_select.add_empty_option("-- Any --") widget.add(lib_select) # get all of the options for this search type parent_lib = lib_select.get_value() if parent_lib: search.add_filter('asset_library', parent_lib) elif search_type == "prod/shot": lib_select = FilterSelectWdg('parent_lib') lib_select.persistence = False search2 = Search("prod/sequence") lib_select.set_search_for_options( search2, "code", "code" ) lib_select.add_empty_option("-- Any --") widget.add(lib_select) # get all of the options for this search type parent_lib = lib_select.get_value() if parent_lib: search.add_filter('sequence_code', parent_lib) elif search_type == 'prod/texture': lib_select = FilterSelectWdg('parent_lib') lib_select.persistence = False search2 = Search("prod/texture") search2.add_column('category') search2.add_group_by("category") lib_select.set_search_for_options( search2, "category", "category" ) lib_select.add_empty_option("-- Any --") widget.add(lib_select) # get all of the options for this search type parent_lib = lib_select.get_value() if parent_lib: search.add_filter('category', parent_lib)
class HierarchicalFilterWdg(BaseFilterWdg): '''A filter that takes the hierarchical schema into account''' def init(self): self.schema = Schema.get() if not self.schema: self.parent_type = None self.select = None return web = WebContainer.get_web() self.search_type = web.get_form_value("filter|search_type") if not self.search_type: search_type = self.options.get("search_type") self.parent_type = self.schema.get_parent_type(self.search_type) if not self.parent_type: self.select = None else: self.select = FilterSelectWdg("filter|%s" % self.parent_type) def get_parent_type(self): return self.parent_type def get_display(self): widget = Widget() if not self.select: return widget if not self.schema: Environment.add_warning("No schema defined") widget.add("No schema defined") return widget if not self.search_type: Environment.add_warning("HierarchicalFilterWdg: Cannot find current search_type") widget.add("Cannot find current search_type") return widget span = SpanWdg(css="med") parent_type = self.get_parent_type() if parent_type: parent_type_obj = SearchType.get(parent_type) span.add("%s: " % parent_type_obj.get_value("title")) # assume that there is a code in the parent self.select.add_empty_option("-- Select --") self.select.set_option("query", "%s|code|code" % self.parent_type) span.add(self.select) widget.add(span) return widget def alter_search(self, search): if not self.select: return if not self.parent_type: return if not self.schema: return parent_code = self.select.get_value() parent = Search.get_by_code(self.parent_type, parent_code) if not parent: return parent.children_alter_search(search, self.search_type)