Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 3
0
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)
Exemplo n.º 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')
Exemplo n.º 5
0
    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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 9
0
 def resolve_urls(root: models.DigitalContent, info, **_kwargs):
     qs = root.urls.all()
     return gql_optimizer.query(qs, info)
Exemplo n.º 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')
Exemplo n.º 11
0
 def resolve_ancestors(self, info, **kwargs):
     qs = self.get_ancestors()
     return gql_optimizer.query(qs, info)
Exemplo n.º 12
0
def resolve_delivery_zones(info):
    qs = models.DeliveryZone.objects.all()
    return gql_optimizer.query(qs, info)
Exemplo n.º 13
0
 def resolve_stocks(self, info, **data):
     qs = models.Stock.objects.all()
     return gql_optimizer.query(qs, info)
Exemplo n.º 14
0
 def resolve_children(root: models.Category, info, **_kwargs):
     qs = root.children.all()
     return gql_optimizer.query(qs, info)
Exemplo n.º 15
0
 def resolve_images(self, info: ResolveInfo):
     return with_collection_permissions(
         info.context,
         gql_optimizer.query(wagtailImage.objects.all(), info))
Exemplo n.º 16
0
 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)
Exemplo n.º 17
0
 def resolve_ancestors(root: models.Category, info, **_kwargs):
     qs = root.get_ancestors()
     return gql_optimizer.query(qs, info)
Exemplo n.º 18
0
 def resolve_children(self, info, **kwargs):
     qs = self.children.all()
     return gql_optimizer.query(qs, info)
Exemplo n.º 19
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)
Exemplo n.º 20
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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 24
0
 def resolve_children(root: models.Category, info, **_kwargs):
     qs = root.children.all()
     return gql_optimizer.query(qs, info)
Exemplo n.º 25
0
 def resolve_warehouses(self, info, **kwargs):
     qs = models.Warehouse.objects.all()
     return gql_optimizer.query(qs, info)
Exemplo n.º 26
0
 def resolve_urls(self, info, **kwargs):
     qs = self.urls.all()
     return gql_optimizer.query(qs, info)
Exemplo n.º 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
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 30
0
def resolve_shipping_methods(info):
    qs = shipping_models.ShippingMethod.objects.all()
    return gql_optimizer.query(qs, info)
Exemplo n.º 31
0
 def resolve_ancestors(root: models.Category, info, **_kwargs):
     qs = root.get_ancestors()
     return gql_optimizer.query(qs, info)
Exemplo n.º 32
0
def resolve_attribute_values(info):
    qs = product_models.AttributeValue.objects.all()
    return gql_optimizer.query(qs, info)
Exemplo n.º 33
0
def get_node_optimized(qs, lookup, info):
    qs = qs.filter(**lookup)
    qs = gql_optimizer.query(qs, info)
    return qs[0] if qs else None
Exemplo n.º 34
0
def resolve_shipping_zones(info):
    qs = models.ShippingZone.objects.all()
    return gql_optimizer.query(qs, info)