コード例 #1
0
ファイル: handlers.py プロジェクト: Arpaso/ETS
    def read(self, request, slug="", warehouse="", destination="", filtering=None, **kwargs):
        """Return waybills in CSV"""
        waybills = self.model.objects.all()

        if filtering:
            officer_required = ets.models.Compas.objects.filter(officers=request.user).exists()

            filter_choice = {
                'dispatches': lambda user: self.model.dispatches(user),
                'receptions': lambda user: self.model.receptions(user),
                'user_related': lambda user: waybill_user_related_filter(waybills, user),
                'compas_receipt': lambda user: waybill_officer_related_filter(waybills.filter(receipt_sent_compas__isnull=False), user),
                'compas_dispatch': lambda user: waybill_officer_related_filter(waybills.filter(sent_compas__isnull=False), user),
                'validate_receipt': lambda user: officer_required and waybills.filter(**get_receipt_compas_filters(user)).filter(receipt_validated=False),
                'validate_dispatch': lambda user: officer_required and waybills.filter(**get_dispatch_compas_filters(user)).filter(validated=False),
                'dispatch_validated': lambda user: officer_required and waybills.filter(**get_dispatch_compas_filters(user)).filter(validated=True),
                'receipt_validated': lambda user: officer_required and waybills.filter(**get_receipt_compas_filters(user)).filter(receipt_validated=True),
            }
            waybills = filter_choice[filtering](request.user)

        elif not request.user.has_perm("ets.waybill_api_full_access"):
            waybills = waybills.filter(order__warehouse__persons__pk=request.user.pk)

        if request.GET.has_key('sSearch'):
            waybills = get_datatables_filtering(request, waybills)

        return waybills
コード例 #2
0
ファイル: handlers.py プロジェクト: rdidaci/ETS
    def read(self, request, slug="", warehouse="", destination="", filtering=None, format=""):
        """Return waybills in CSV"""
        waybills = self.model.objects.all()

        if filtering:
            officer_required = ets.models.Compas.objects.filter(officers=request.user).exists()

            # 1 variant
            filter_choice = {
                'dispatches': lambda user: self.model.dispatches(user),
                'receptions': lambda user: self.model.receptions(user),
                'user_related': lambda user: waybill_user_related_filter(waybills, user),
                'compas_receipt': lambda user: waybill_officer_related_filter(waybills.filter(receipt_sent_compas__isnull=False), user),
                'compas_dispatch': lambda user: waybill_officer_related_filter(waybills.filter(sent_compas__isnull=False), user),
                'validate_receipt': lambda user: officer_required and waybills.filter(**get_receipt_compas_filters(user)).filter(receipt_validated=False),
                'validate_dispatch': lambda user: officer_required and waybills.filter(**get_dispatch_compas_filters(user)).filter(validated=False),
                'dispatch_validated': lambda user: officer_required and waybills.filter(**get_dispatch_compas_filters(user)).filter(validated=True),
                'receipt_validated': lambda user: officer_required and waybills.filter(**get_receipt_compas_filters(user)).filter(receipt_validated=True),
            }
            waybills = filter_choice[filtering](request.user)

            # 2 variant
            # if filtering == 'dispatches':
            #     waybills = self.model.dispatches(request.user)
            # elif filtering == 'receptions':
            #     waybills = self.model.receptions(request.user)
            # elif filtering == 'user_related':
            #     waybills = waybill_user_related_filter(waybills, request.user)
            # elif filtering == 'compas_receipt':
            #     waybills = waybill_officer_related_filter(waybills.filter(receipt_sent_compas__isnull=False), request.user)
            # elif filtering == 'compas_dispatch':
            #     waybills = waybill_officer_related_filter(waybills.filter(sent_compas__isnull=False), request.user)
            # elif filtering == 'validate_receipt' and officer_required:
            #     waybills = waybills.filter(**get_receipt_compas_filters(request.user)).filter(receipt_validated=False)
            # elif filtering == 'validate_dispatch' and officer_required:
            #     waybills = waybills.filter(**get_dispatch_compas_filters(request.user)).filter(validated=False)
            # elif filtering == 'dispatch_validated' and officer_required:
            #     waybills = waybills.filter(**get_dispatch_compas_filters(request.user)).filter(validated=True)
            # elif filtering == 'receipt_validated' and officer_required:
            #     waybills = waybills.filter(**get_receipt_compas_filters(request.user)).filter(receipt_validated=True)
                
        elif not request.user.has_perm("ets.waybill_api_full_access"):
            waybills = waybills.filter(order__warehouse__persons__pk=request.user.pk)

        if request.GET.has_key('sSearch'):
            waybills = get_datatables_filtering(request, waybills)

        filter_arg = {}
        if warehouse: 
            filter_arg['order__warehouse__pk'] = warehouse
        if destination:
            filter_arg['destination__pk'] = destination
        if slug:
            filter_arg['slug'] = slug
        if filter_arg:
            waybills = waybills.filter(**filter_arg)

        return waybills