Skip to content

Commit 4ab3fb1

Browse files
Category filter filtered with top level
1 parent 13caa6c commit 4ab3fb1

File tree

3 files changed

+20
-4
lines changed

3 files changed

+20
-4
lines changed

nxtbn/product/admin_filters.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,12 @@ class Meta:
6060

6161
class CategoryFilter(filters.FilterSet):
6262
name = filters.CharFilter(lookup_expr='icontains')
63+
parent = filters.ModelChoiceFilter(field_name='parent', queryset=Category.objects.all())
64+
is_top_level = filters.BooleanFilter(field_name='parent', lookup_expr='isnull')
6365

6466
class Meta:
6567
model = Category
66-
fields = ('name',)
68+
fields = ('name', 'parent', 'is_top_level',)
6769

6870

6971
class CollectionFilter(filters.FilterSet):

nxtbn/product/admin_queries.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ class ProductQuery(graphene.ObjectType):
2727

2828
category = graphene.Field(CategoryType, id=graphene.ID(required=True))
2929
categories = DjangoFilterConnectionField(CategoryType)
30-
category = graphene.Field(CategoryType, id=graphene.ID(required=True))
31-
3230
# All translations
3331

3432
product_translation = graphene.Field(ProductTranslationType, base_product_id=graphene.ID(required=True), lang_code=graphene.String(required=True))
@@ -97,13 +95,17 @@ def resolve_product_variants(root, info, **kwargs):
9795
return Product.objects.all()
9896

9997
def resolve_category(root, info, id):
100-
check_user_permissions(info, any_staff=True)
98+
# check_user_permissions(info, any_staff=True)
10199

102100
try:
103101
return Category.objects.get(pk=id)
104102
except Category.DoesNotExist:
105103
return None
106104

105+
def resolve_categories(root, info, **kwargs):
106+
# check_user_permissions(info, any_staff=True)
107+
return Category.objects.all()
108+
107109
# All translations
108110

109111
def resolve_category_translation(root, info, base_category_id, lang_code):

nxtbn/product/admin_types.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,12 @@ class Meta:
5757
filterset_class = CollectionFilter
5858

5959

60+
class CategoryChildInfoType(graphene.ObjectType):
61+
has_child = graphene.Boolean()
62+
6063
class CategoryType(DjangoObjectType):
6164
db_id = graphene.Int(source="id")
65+
child_info = graphene.Field(CategoryChildInfoType)
6266
class Meta:
6367
model = Category
6468
fields = (
@@ -67,10 +71,18 @@ class Meta:
6771
'description',
6872
'meta_title',
6973
'meta_description',
74+
'parent',
7075
)
7176
interfaces = (relay.Node,)
7277
filterset_class = CategoryFilter
7378

79+
def resolve_child_info(self, info):
80+
has_child = self.subcategories.exists()
81+
return CategoryChildInfoType(has_child=has_child)
82+
83+
84+
85+
7486

7587
class ProductTagType(DjangoObjectType):
7688
db_id = graphene.Int(source="id")

0 commit comments

Comments
 (0)