Exemple #1
0
    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
Exemple #2
0
    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
Exemple #3
0
    def form_valid(self, form):
        start_date = form.cleaned_data['start_date'] 
        end_date = form.cleaned_data['end_date']

        queryset = waybill_user_related_filter(Waybill.objects.all(), self.request.user)
        data = compress_waybills(queryset, start_date, end_date)
        
        return data_to_file_response(data, self.file_name % {
            'start_date': start_date, 
            'end_date': end_date,
        }, type="data")
Exemple #4
0
 def handle(self, *args, **options):
     start_date, res = get_date_from_string(options.get('start_date', None), default=datetime.date(1900, 1, 1))
     end_date, res = get_date_from_string(options.get('end_date', None), default=datetime.datetime.now())
     username = options.get('user', '')
     passwd = options.get('passwd', '')
     data = ""
     try:
         user = authenticate(username=username, password=passwd)
         queryset = waybill_user_related_filter(Waybill.objects.all(), user)
         data = compress_waybills(queryset, start_date, end_date)
     except User.DoesNotExist:
         print "Wrong password or username '%s'" % username
     return data