Skip to content

Commit 5a0bf41

Browse files
authored
Merge pull request #68 from openimis/develop
MERGING develop into release/24.04
2 parents 1104a28 + 615425d commit 5a0bf41

File tree

6 files changed

+53
-23
lines changed

6 files changed

+53
-23
lines changed

invoice/gql/bill_event/query.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from core.utils import append_validity_filter
77
from invoice.apps import InvoiceConfig
88
from invoice.gql.gql_types.bill_types import BillEventGQLType
9-
from invoice.models import BillEvent
9+
from invoice.models import BillEvent, Bill
1010
import graphene_django_optimizer as gql_optimizer
1111

1212

@@ -21,15 +21,21 @@ class BillEventQueryMixin:
2121
)
2222

2323
def resolve_bill_event(self, info, **kwargs):
24+
BillEventQueryMixin._check_permissions(info.context.user)
2425
filters = []
2526
filters += append_validity_filter(**kwargs)
2627

2728
client_mutation_id = kwargs.get("client_mutation_id", None)
2829
if client_mutation_id:
2930
filters.append(Q(mutations__mutation__client_mutation_id=client_mutation_id))
3031

31-
BillEventQueryMixin._check_permissions(info.context.user)
32-
return gql_optimizer.query(BillEvent.objects.filter(*filters).all(), info)
32+
bill_event_qs = BillEvent.objects.filter(*filters)
33+
34+
if InvoiceConfig.bill_user_filter:
35+
bill_qs = InvoiceConfig.bill_user_filter(Bill.objects.all(), info.context.user)
36+
bill_event_qs = bill_event_qs.filter(bill__in=bill_qs)
37+
38+
return gql_optimizer.query(bill_event_qs, info)
3339

3440
@staticmethod
3541
def _check_permissions(user):

invoice/gql/bill_item/query.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from core.utils import append_validity_filter
77
from invoice.apps import InvoiceConfig
88
from invoice.gql.gql_types.bill_types import BillItemGQLType
9-
from invoice.models import BillItem
9+
from invoice.models import BillItem, Bill
1010
import graphene_django_optimizer as gql_optimizer
1111

1212

@@ -21,6 +21,7 @@ class BillItemQueryMixin:
2121
)
2222

2323
def resolve_bill_item(self, info, **kwargs):
24+
BillItemQueryMixin._check_permissions(info.context.user)
2425
filters = []
2526
filters += append_validity_filter(**kwargs)
2627

@@ -32,8 +33,13 @@ def resolve_bill_item(self, info, **kwargs):
3233
if line_type:
3334
filters.append(Q(line_type__model=line_type))
3435

35-
BillItemQueryMixin._check_permissions(info.context.user)
36-
return gql_optimizer.query(BillItem.objects.filter(*filters).all(), info)
36+
bill_li_qs = BillItem.objects.filter(*filters)
37+
38+
if InvoiceConfig.bill_user_filter:
39+
bill_qs = InvoiceConfig.bill_user_filter(Bill.objects.all(), info.context.user)
40+
bill_li_qs = bill_li_qs.filter(bill__in=bill_qs)
41+
42+
return gql_optimizer.query(bill_li_qs, info)
3743

3844
@staticmethod
3945
def _check_permissions(user):

invoice/gql/bill_payment/query.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from core.utils import append_validity_filter
77
from invoice.apps import InvoiceConfig
88
from invoice.gql.gql_types.bill_types import BillPaymentGQLType
9-
from invoice.models import BillPayment
9+
from invoice.models import BillPayment, Bill
1010
import graphene_django_optimizer as gql_optimizer
1111

1212

@@ -28,12 +28,16 @@ def resolve_bill_payment(self, info, **kwargs):
2828
if client_mutation_id:
2929
filters.append(Q(mutations__mutation__client_mutation_id=client_mutation_id))
3030

31-
BillPaymentQueryMixin._check_permissions(info.context.user)
32-
return gql_optimizer.query(BillPayment.objects.filter(*filters).all(), info)
31+
bill_payment_qs = BillPayment.objects.filter(*filters)
32+
33+
if InvoiceConfig.bill_user_filter:
34+
bill_qs = InvoiceConfig.bill_user_filter(Bill.objects.all(), info.context.user)
35+
bill_payment_qs = bill_payment_qs.filter(bill__in=bill_qs)
36+
37+
return gql_optimizer.query(bill_payment_qs, info)
3338

3439
@staticmethod
3540
def _check_permissions(user):
3641
if type(user) is AnonymousUser or not user.id or not user.has_perms(
3742
InvoiceConfig.gql_bill_payment_search_perms):
3843
raise PermissionError("Unauthorized")
39-

invoice/gql/invoice_event/query.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from core.utils import append_validity_filter
77
from invoice.apps import InvoiceConfig
88
from invoice.gql.gql_types.invoice_types import InvoiceEventGQLType
9-
from invoice.models import InvoiceEvent
9+
from invoice.models import InvoiceEvent, Invoice
1010
import graphene_django_optimizer as gql_optimizer
1111

1212

@@ -21,20 +21,24 @@ class InvoiceEventQueryMixin:
2121
)
2222

2323
def resolve_invoice_event(self, info, **kwargs):
24+
InvoiceEventQueryMixin._check_permissions(info.context.user)
2425
filters = []
2526
filters += append_validity_filter(**kwargs)
2627

2728
client_mutation_id = kwargs.get("client_mutation_id", None)
2829
if client_mutation_id:
2930
filters.append(Q(mutations__mutation__client_mutation_id=client_mutation_id))
3031

31-
InvoiceEventQueryMixin._check_permissions(info.context.user)
32-
return gql_optimizer.query(InvoiceEvent.objects.filter(*filters).all(), info)
32+
invoice_event_qs = InvoiceEvent.objects.filter(*filters)
33+
34+
if InvoiceConfig.invoice_user_filter:
35+
invoice_qs = InvoiceConfig.invoice_user_filter(Invoice.objects.all(), info.context.user)
36+
invoice_event_qs = invoice_event_qs.filter(invoice__in=invoice_qs)
37+
38+
return gql_optimizer.query(invoice_event_qs, info)
3339

3440
@staticmethod
3541
def _check_permissions(user):
3642
if type(user) is AnonymousUser or not user.id or not user.has_perms(
3743
InvoiceConfig.gql_invoice_event_search_perms):
3844
raise PermissionError("Unauthorized")
39-
40-

invoice/gql/invoice_line_item/query.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from core.utils import append_validity_filter
77
from invoice.apps import InvoiceConfig
88
from invoice.gql.gql_types.invoice_types import InvoiceLineItemGQLType
9-
from invoice.models import InvoiceLineItem
9+
from invoice.models import InvoiceLineItem, Invoice
1010
import graphene_django_optimizer as gql_optimizer
1111

1212

@@ -21,6 +21,7 @@ class InvoiceLineItemQueryMixin:
2121
)
2222

2323
def resolve_invoice_line_item(self, info, **kwargs):
24+
InvoiceLineItemQueryMixin._check_invoice_permissions(info.context.user)
2425
filters = []
2526
filters += append_validity_filter(**kwargs)
2627

@@ -32,8 +33,13 @@ def resolve_invoice_line_item(self, info, **kwargs):
3233
if line_type:
3334
filters.append(Q(line_type__model=line_type))
3435

35-
InvoiceLineItemQueryMixin._check_invoice_permissions(info.context.user)
36-
return gql_optimizer.query(InvoiceLineItem.objects.filter(*filters).all(), info)
36+
invoice_li_qs = InvoiceLineItem.objects.filter(*filters)
37+
38+
if InvoiceConfig.invoice_user_filter:
39+
invoice_qs = InvoiceConfig.invoice_user_filter(Invoice.objects.all(), info.context.user)
40+
invoice_li_qs = invoice_li_qs.filter(invoice__in=invoice_qs)
41+
42+
return gql_optimizer.query(invoice_li_qs, info)
3743

3844
@staticmethod
3945
def _check_invoice_permissions(user):

invoice/gql/invoice_payment/query.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from core.utils import append_validity_filter
77
from invoice.apps import InvoiceConfig
88
from invoice.gql.gql_types.invoice_types import InvoicePaymentGQLType
9-
from invoice.models import InvoicePayment
9+
from invoice.models import InvoicePayment, Invoice
1010
import graphene_django_optimizer as gql_optimizer
1111

1212

@@ -21,20 +21,24 @@ class InvoicePaymentQueryMixin:
2121
)
2222

2323
def resolve_invoice_payment(self, info, **kwargs):
24+
InvoicePaymentQueryMixin._check_permissions(info.context.user)
2425
filters = []
2526
filters += append_validity_filter(**kwargs)
2627

2728
client_mutation_id = kwargs.get("client_mutation_id", None)
2829
if client_mutation_id:
2930
filters.append(Q(mutations__mutation__client_mutation_id=client_mutation_id))
3031

31-
InvoicePaymentQueryMixin._check_permissions(info.context.user)
32-
return gql_optimizer.query(InvoicePayment.objects.filter(*filters).all(), info)
32+
invoice_payment_qs = InvoicePayment.objects.filter(*filters)
33+
34+
if InvoiceConfig.invoice_user_filter:
35+
invoice_qs = InvoiceConfig.invoice_user_filter(Invoice.objects.all(), info.context.user)
36+
invoice_payment_qs = invoice_payment_qs.filter(invoice__in=invoice_qs)
37+
38+
return gql_optimizer.query(invoice_payment_qs, info)
3339

3440
@staticmethod
3541
def _check_permissions(user):
3642
if type(user) is AnonymousUser or not user.id or not user.has_perms(
3743
InvoiceConfig.gql_invoice_payment_search_perms):
3844
raise PermissionError("Unauthorized")
39-
40-

0 commit comments

Comments
 (0)