mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-31 05:05:42 +00:00 
			
		
		
		
	Add ability to filter by 'starred' status
This commit is contained in:
		| @@ -87,7 +87,7 @@ function loadPartTable(table, url, options={}) { | ||||
|      *      buttons: If provided, link buttons to selection status of this table | ||||
|      */ | ||||
|  | ||||
|     var params = options.parms || {}; | ||||
|     var params = options.params || {}; | ||||
|  | ||||
|     var filters = loadTableFilters("parts"); | ||||
|  | ||||
|   | ||||
| @@ -153,6 +153,7 @@ class PartList(generics.ListCreateAPIView): | ||||
|     The Part object list can be filtered by: | ||||
|         - category: Filter by PartCategory reference | ||||
|         - cascade: If true, include parts from sub-categories | ||||
|         - starred: Is the part "starred" by the current user? | ||||
|         - is_template: Is the part a template part? | ||||
|         - variant_of: Filter by variant_of Part reference | ||||
|         - assembly: Filter by assembly field | ||||
| @@ -295,17 +296,36 @@ class PartList(generics.ListCreateAPIView): | ||||
|  | ||||
|     def get_queryset(self): | ||||
|  | ||||
|         # Does the user wish to filter by category? | ||||
|         cat_id = self.request.query_params.get('category', None) | ||||
|  | ||||
|         # Start with all objects | ||||
|         parts_list = Part.objects.all() | ||||
|  | ||||
|         cascade = str2bool(self.request.query_params.get('cascade', False)) | ||||
|         # Filter by 'starred' parts? | ||||
|         starred = str2bool(self.request.query_params.get('starred', None)) | ||||
|  | ||||
|         if starred is not None: | ||||
|             starred_parts = [star.part.pk for star in self.request.user.starred_parts.all()] | ||||
|  | ||||
|             if starred: | ||||
|                 parts_list = parts_list.filter(pk__in=starred_parts) | ||||
|             else: | ||||
|                 parts_list = parts_list.exclude(pk__in=starred_parts) | ||||
|  | ||||
|         cascade = str2bool(self.request.query_params.get('cascade', None)) | ||||
|          | ||||
|         # Does the user wish to filter by category? | ||||
|         cat_id = self.request.query_params.get('category', None) | ||||
|  | ||||
|         if cat_id is None: | ||||
|             # Top-level parts | ||||
|             if not cascade: | ||||
|             # No category filtering if category is not specified | ||||
|             pass | ||||
|          | ||||
|         else: | ||||
|             # Category has been specified! | ||||
|             if isNull(cat_id): | ||||
|                 # A 'null' category is the top-level category | ||||
|                 if cascade is False: | ||||
|                     # Do not cascade, only list parts in the top-level category | ||||
|                     parts_list = parts_list.filter(category=None) | ||||
|  | ||||
|             else: | ||||
|   | ||||
| @@ -227,9 +227,9 @@ | ||||
|         "#part-table", | ||||
|         "{% url 'api-part-list' %}", | ||||
|         { | ||||
|             query: { | ||||
|                 {% if category %} | ||||
|                 category: {{ category.id }}, | ||||
|             params: { | ||||
|                 {% if category %}category: {{ category.id }}, | ||||
|                 {% else %}category: "null", | ||||
|                 {% endif %} | ||||
|             }, | ||||
|             buttons: ['#part-options'], | ||||
|   | ||||
		Reference in New Issue
	
	Block a user