예제 #1
0
def resolve_menu(info, id=None, name=None):
    assert id or name, 'No ID or name provided.'
    if name is not None:
        qs = models.Menu.objects.filter(name=name)
        qs = gql_optimizer.query(qs, info)
        return qs[0] if qs else None
    return graphene.Node.get_node_from_global_id(info, id, Menu)
예제 #2
0
def resolve_staff_users(info, query):
    qs = models.User.objects.filter(is_staff=True)
    qs = filter_by_query_param(
        queryset=qs, query=query, search_fields=USER_SEARCH_FIELDS)
    qs = qs.order_by('email')
    qs = qs.distinct()
    return gql_optimizer.query(qs, info)
예제 #3
0
파일: resolvers.py 프로젝트: mirumee/saleor
def resolve_customers(info, query):
    qs = models.User.objects.filter(
        Q(is_staff=False) | (Q(is_staff=True) & Q(orders__isnull=False))
    )
    qs = filter_by_query_param(
        queryset=qs, query=query, search_fields=USER_SEARCH_FIELDS
    )
    qs = qs.order_by("email")
    qs = qs.distinct()
    return gql_optimizer.query(qs, info)
예제 #4
0
def prefetch_products(info, *args, **kwargs):
    """Prefetch products visible to the current user.

    Can be used with models that have the `products` relationship. Queryset of
    products being prefetched is filtered based on permissions of the viewing
    user, to restrict access to unpublished products to non-staff users.
    """
    user = info.context.user
    qs = models.Product.objects.visible_to_user(user)
    return Prefetch(
        'products', queryset=gql_optimizer.query(qs, info),
        to_attr='prefetched_products')
예제 #5
0
파일: products.py 프로젝트: mirumee/saleor
    def resolve_products(root: models.Category, info, **_kwargs):
        # If the category has no children, we use the prefetched data.
        children = root.children.all()
        if not children and hasattr(root, "prefetched_products"):
            return root.prefetched_products

        # Otherwise we want to include products from child categories which
        # requires performing additional logic.
        tree = root.get_descendants(include_self=True)
        qs = models.Product.objects.published()
        qs = qs.filter(category__in=tree)
        return gql_optimizer.query(qs, info)
예제 #6
0
def filter_orders(qs, info, created, status, query):
    qs = filter_by_query_param(qs, query, ORDER_SEARCH_FIELDS)

    # filter orders by status
    if status is not None:
        if status == OrderStatusFilter.READY_TO_FULFILL:
            qs = qs.ready_to_fulfill()
        elif status == OrderStatusFilter.READY_TO_CAPTURE:
            qs = qs.ready_to_capture()

    # filter orders by creation date
    if created is not None:
        qs = filter_by_period(qs, created, 'created')

    return gql_optimizer.query(qs, info)
예제 #7
0
 def resolve_products(self, info, **kwargs):
     if hasattr(self, 'prefetched_products'):
         return self.prefetched_products
     qs = self.products.visible_to_user(info.context.user)
     return gql_optimizer.query(qs, info)
예제 #8
0
def resolve_menu_items(info, query):
    qs = models.MenuItem.objects.all()
    qs = filter_by_query_param(qs, query, MENU_ITEM_SEARCH_FIELDS)
    return gql_optimizer.query(qs, info)
예제 #9
0
 def resolve_urls(root: models.DigitalContent, info, **_kwargs):
     qs = root.urls.all()
     return gql_optimizer.query(qs, info)
예제 #10
0
def prefetch_menus(info, *args, **kwargs):
    qs = models.MenuItem.objects.filter(level=0)
    return Prefetch(
        'items', queryset=gql_optimizer.query(qs, info),
        to_attr='prefetched_items')
예제 #11
0
 def resolve_ancestors(self, info, **kwargs):
     qs = self.get_ancestors()
     return gql_optimizer.query(qs, info)
예제 #12
0
def resolve_delivery_zones(info):
    qs = models.DeliveryZone.objects.all()
    return gql_optimizer.query(qs, info)
예제 #13
0
 def resolve_stocks(self, info, **data):
     qs = models.Stock.objects.all()
     return gql_optimizer.query(qs, info)
예제 #14
0
파일: products.py 프로젝트: mirumee/saleor
 def resolve_children(root: models.Category, info, **_kwargs):
     qs = root.children.all()
     return gql_optimizer.query(qs, info)
예제 #15
0
 def resolve_images(self, info: ResolveInfo):
     return with_collection_permissions(
         info.context,
         gql_optimizer.query(wagtailImage.objects.all(), info))
예제 #16
0
파일: products.py 프로젝트: mirumee/saleor
 def resolve_products(root: models.Collection, info, **_kwargs):
     if hasattr(root, "prefetched_products"):
         return root.prefetched_products
     qs = root.products.visible_to_user(info.context.user)
     return gql_optimizer.query(qs, info)
예제 #17
0
파일: products.py 프로젝트: mirumee/saleor
 def resolve_ancestors(root: models.Category, info, **_kwargs):
     qs = root.get_ancestors()
     return gql_optimizer.query(qs, info)
예제 #18
0
 def resolve_children(self, info, **kwargs):
     qs = self.children.all()
     return gql_optimizer.query(qs, info)
예제 #19
0
파일: resolvers.py 프로젝트: mirumee/saleor
def resolve_vouchers(info, query):
    qs = models.Voucher.objects.all()
    qs = filter_by_query_param(qs, query, VOUCHER_SEARCH_FIELDS)
    return gql_optimizer.query(qs, info)
예제 #20
0
파일: resolvers.py 프로젝트: mirumee/saleor
def resolve_sales(info, query):
    qs = models.Sale.objects.all()
    qs = filter_by_query_param(qs, query, SALE_SEARCH_FIELDS)
    return gql_optimizer.query(qs, info)
예제 #21
0
def resolve_sales(info, query):
    qs = models.Sale.objects.all()
    qs = filter_by_query_param(qs, query, SALE_SEARCH_FIELDS)
    return gql_optimizer.query(qs, info)
예제 #22
0
 def resolve_products(root: models.Collection, info, **_kwargs):
     if hasattr(root, "prefetched_products"):
         return root.prefetched_products
     qs = root.products.collection_sorted(info.context.user)
     return gql_optimizer.query(qs, info)
예제 #23
0
def resolve_vouchers(info, query):
    qs = models.Voucher.objects.all()
    qs = filter_by_query_param(qs, query, VOUCHER_SEARCH_FIELDS)
    return gql_optimizer.query(qs, info)
예제 #24
0
 def resolve_children(root: models.Category, info, **_kwargs):
     qs = root.children.all()
     return gql_optimizer.query(qs, info)
예제 #25
0
 def resolve_warehouses(self, info, **kwargs):
     qs = models.Warehouse.objects.all()
     return gql_optimizer.query(qs, info)
예제 #26
0
 def resolve_urls(self, info, **kwargs):
     qs = self.urls.all()
     return gql_optimizer.query(qs, info)
예제 #27
0
 def resolve_image(self, info: ResolveInfo, id: int):
     image = with_collection_permissions(
         info.context,
         gql_optimizer.query(wagtailImage.objects.filter(id=id),
                             info)).first()
     return image
예제 #28
0
def resolve_payments(info, query):
    queryset = models.Payment.objects.all().distinct()
    queryset = filter_by_query_param(queryset, query, PAYMENT_SEARCH_FIELDS)
    return gql_optimizer.query(queryset, info)
예제 #29
0
 def resolve_products(root: models.ProductType, info, **_kwargs):
     if hasattr(root, "prefetched_products"):
         return root.prefetched_products
     qs = root.products.visible_to_user(info.context.user)
     return gql_optimizer.query(qs, info)
예제 #30
0
파일: resolvers.py 프로젝트: mirumee/saleor
def resolve_shipping_methods(info):
    qs = shipping_models.ShippingMethod.objects.all()
    return gql_optimizer.query(qs, info)
예제 #31
0
 def resolve_ancestors(root: models.Category, info, **_kwargs):
     qs = root.get_ancestors()
     return gql_optimizer.query(qs, info)
예제 #32
0
파일: resolvers.py 프로젝트: mirumee/saleor
def resolve_attribute_values(info):
    qs = product_models.AttributeValue.objects.all()
    return gql_optimizer.query(qs, info)
예제 #33
0
파일: types.py 프로젝트: mirumee/saleor
def get_node_optimized(qs, lookup, info):
    qs = qs.filter(**lookup)
    qs = gql_optimizer.query(qs, info)
    return qs[0] if qs else None
예제 #34
0
def resolve_shipping_zones(info):
    qs = models.ShippingZone.objects.all()
    return gql_optimizer.query(qs, info)