Skip to content

Commit

Permalink
Merge pull request #68 from openimis/develop
Browse files Browse the repository at this point in the history
MERGING develop into release/24.04
  • Loading branch information
delcroip authored Mar 28, 2024
2 parents 1104a28 + 615425d commit 5a0bf41
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 23 deletions.
12 changes: 9 additions & 3 deletions invoice/gql/bill_event/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from core.utils import append_validity_filter
from invoice.apps import InvoiceConfig
from invoice.gql.gql_types.bill_types import BillEventGQLType
from invoice.models import BillEvent
from invoice.models import BillEvent, Bill
import graphene_django_optimizer as gql_optimizer


Expand All @@ -21,15 +21,21 @@ class BillEventQueryMixin:
)

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

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

BillEventQueryMixin._check_permissions(info.context.user)
return gql_optimizer.query(BillEvent.objects.filter(*filters).all(), info)
bill_event_qs = BillEvent.objects.filter(*filters)

if InvoiceConfig.bill_user_filter:
bill_qs = InvoiceConfig.bill_user_filter(Bill.objects.all(), info.context.user)
bill_event_qs = bill_event_qs.filter(bill__in=bill_qs)

return gql_optimizer.query(bill_event_qs, info)

@staticmethod
def _check_permissions(user):
Expand Down
12 changes: 9 additions & 3 deletions invoice/gql/bill_item/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from core.utils import append_validity_filter
from invoice.apps import InvoiceConfig
from invoice.gql.gql_types.bill_types import BillItemGQLType
from invoice.models import BillItem
from invoice.models import BillItem, Bill
import graphene_django_optimizer as gql_optimizer


Expand All @@ -21,6 +21,7 @@ class BillItemQueryMixin:
)

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

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

BillItemQueryMixin._check_permissions(info.context.user)
return gql_optimizer.query(BillItem.objects.filter(*filters).all(), info)
bill_li_qs = BillItem.objects.filter(*filters)

if InvoiceConfig.bill_user_filter:
bill_qs = InvoiceConfig.bill_user_filter(Bill.objects.all(), info.context.user)
bill_li_qs = bill_li_qs.filter(bill__in=bill_qs)

return gql_optimizer.query(bill_li_qs, info)

@staticmethod
def _check_permissions(user):
Expand Down
12 changes: 8 additions & 4 deletions invoice/gql/bill_payment/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from core.utils import append_validity_filter
from invoice.apps import InvoiceConfig
from invoice.gql.gql_types.bill_types import BillPaymentGQLType
from invoice.models import BillPayment
from invoice.models import BillPayment, Bill
import graphene_django_optimizer as gql_optimizer


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

BillPaymentQueryMixin._check_permissions(info.context.user)
return gql_optimizer.query(BillPayment.objects.filter(*filters).all(), info)
bill_payment_qs = BillPayment.objects.filter(*filters)

if InvoiceConfig.bill_user_filter:
bill_qs = InvoiceConfig.bill_user_filter(Bill.objects.all(), info.context.user)
bill_payment_qs = bill_payment_qs.filter(bill__in=bill_qs)

return gql_optimizer.query(bill_payment_qs, info)

@staticmethod
def _check_permissions(user):
if type(user) is AnonymousUser or not user.id or not user.has_perms(
InvoiceConfig.gql_bill_payment_search_perms):
raise PermissionError("Unauthorized")

14 changes: 9 additions & 5 deletions invoice/gql/invoice_event/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from core.utils import append_validity_filter
from invoice.apps import InvoiceConfig
from invoice.gql.gql_types.invoice_types import InvoiceEventGQLType
from invoice.models import InvoiceEvent
from invoice.models import InvoiceEvent, Invoice
import graphene_django_optimizer as gql_optimizer


Expand All @@ -21,20 +21,24 @@ class InvoiceEventQueryMixin:
)

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

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

InvoiceEventQueryMixin._check_permissions(info.context.user)
return gql_optimizer.query(InvoiceEvent.objects.filter(*filters).all(), info)
invoice_event_qs = InvoiceEvent.objects.filter(*filters)

if InvoiceConfig.invoice_user_filter:
invoice_qs = InvoiceConfig.invoice_user_filter(Invoice.objects.all(), info.context.user)
invoice_event_qs = invoice_event_qs.filter(invoice__in=invoice_qs)

return gql_optimizer.query(invoice_event_qs, info)

@staticmethod
def _check_permissions(user):
if type(user) is AnonymousUser or not user.id or not user.has_perms(
InvoiceConfig.gql_invoice_event_search_perms):
raise PermissionError("Unauthorized")


12 changes: 9 additions & 3 deletions invoice/gql/invoice_line_item/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from core.utils import append_validity_filter
from invoice.apps import InvoiceConfig
from invoice.gql.gql_types.invoice_types import InvoiceLineItemGQLType
from invoice.models import InvoiceLineItem
from invoice.models import InvoiceLineItem, Invoice
import graphene_django_optimizer as gql_optimizer


Expand All @@ -21,6 +21,7 @@ class InvoiceLineItemQueryMixin:
)

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

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

InvoiceLineItemQueryMixin._check_invoice_permissions(info.context.user)
return gql_optimizer.query(InvoiceLineItem.objects.filter(*filters).all(), info)
invoice_li_qs = InvoiceLineItem.objects.filter(*filters)

if InvoiceConfig.invoice_user_filter:
invoice_qs = InvoiceConfig.invoice_user_filter(Invoice.objects.all(), info.context.user)
invoice_li_qs = invoice_li_qs.filter(invoice__in=invoice_qs)

return gql_optimizer.query(invoice_li_qs, info)

@staticmethod
def _check_invoice_permissions(user):
Expand Down
14 changes: 9 additions & 5 deletions invoice/gql/invoice_payment/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from core.utils import append_validity_filter
from invoice.apps import InvoiceConfig
from invoice.gql.gql_types.invoice_types import InvoicePaymentGQLType
from invoice.models import InvoicePayment
from invoice.models import InvoicePayment, Invoice
import graphene_django_optimizer as gql_optimizer


Expand All @@ -21,20 +21,24 @@ class InvoicePaymentQueryMixin:
)

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

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

InvoicePaymentQueryMixin._check_permissions(info.context.user)
return gql_optimizer.query(InvoicePayment.objects.filter(*filters).all(), info)
invoice_payment_qs = InvoicePayment.objects.filter(*filters)

if InvoiceConfig.invoice_user_filter:
invoice_qs = InvoiceConfig.invoice_user_filter(Invoice.objects.all(), info.context.user)
invoice_payment_qs = invoice_payment_qs.filter(invoice__in=invoice_qs)

return gql_optimizer.query(invoice_payment_qs, info)

@staticmethod
def _check_permissions(user):
if type(user) is AnonymousUser or not user.id or not user.has_perms(
InvoiceConfig.gql_invoice_payment_search_perms):
raise PermissionError("Unauthorized")


0 comments on commit 5a0bf41

Please sign in to comment.