Exemplo n.º 1
0
 def create(self, request):        
     role = user_role(request.user)
     if (role == constants.VENDOR):
         vendor_agent = VendorAgent.objects.get(user = request.user)
         # REQUEST PARAM CHECK --------------------------------------------
         try:
             phone_number = request.data['phone_number']
             name = request.data['name']
             full_address = request.data['full_address']
             pin_code = request.data['pin_code']
             landmark = request.data.get('landmark')
         except Exception, e:
             content = {
                     'error':'Incomplete parameters',
                     'description':'Mandatory Fields: phone_number, name, full_address, pin_code, landmark [Optional]'
                 }   
             return Response(content, status = status.HTTP_400_BAD_REQUEST)
         # -------------------------------------------------------------
         
         new_consumer = fetch_or_create_consumer(phone_number, name, vendor_agent.vendor)
         new_address = fetch_or_create_consumer_address(new_consumer, full_address, pin_code, landmark)
         
         content = {
         'consumer_id': new_consumer.id,
         'new_address_id':new_address.id
         }
         return Response(content, status = status.HTTP_200_OK)
Exemplo n.º 2
0
    def add_address(self, request, pk):
        try:
            full_address = request.data['full_address']
            pin_code = request.data['pin_code']
            landmark = request.data.get('landmark')
        except:
            content = {
                'error': 'Incomplete parameters',
                'description': 'full_address, pin_code, landmark'
            }
            return Response(content, status=status.HTTP_400_BAD_REQUEST)

        role = user_role(request.user)
        if role == constants.VENDOR:
            vendor_agent = get_object_or_404(VendorAgent, user=request.user)
            vendor = vendor_agent.vendor

            new_address = create_address(full_address, pin_code, landmark)
            vendor.addresses.add(new_address)

            content = {'description': 'Address added successfully'}
            return Response(content, status=status.HTTP_200_OK)
        else:
            content = {
                'description': 'You dont have permissions to add address.'
            }
            return Response(content, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 3
0
    def remove_address(self, request, pk):
        try:
            address_id = request.data['address_id']
        except:
            content = {
                'error': 'Incomplete params',
                'description': 'address_id'
            }
            return Response(content, status=status.HTTP_400_BAD_REQUEST)

        role = user_role(request.user)
        if role == constants.VENDOR:
            address = get_object_or_404(Address, pk=address_id)

            vendor_agent = get_object_or_404(VendorAgent, user=request.user)
            vendor = vendor_agent.vendor
            vendor.addresses.remove(address)

            content = {'description': 'Address removed successfully'}
            return Response(content, status=status.HTTP_200_OK)
        else:
            content = {
                'description': 'You dont have permissions to add address.'
            }
            return Response(content, status=status.HTTP_400_BAD_REQUEST)
    def list(self, request):
        page = self.request.QUERY_PARAMS.get('page', '1')
        page = int(page)
        role = user_role(request.user)
        if role == constants.OPERATIONS:
            employee = get_object_or_404(Employee, user=request.user)
            notifications = employee.notifications.all().select_related(
                'notification_type').order_by('-time_stamp')
            notifications_count = len(notifications)
            total_pages = int(
                notifications_count / constants.PAGINATION_PAGE_SIZE) + 1
            if page > total_pages or page <= 0:
                response_content = {"error": "Invalid page number"}
                return Response(response_content,
                                status=status.HTTP_400_BAD_REQUEST)
            else:
                notifications = paginate(notifications, page)
            # ----------------------------------------------------------------------------
            result = []
            for notification in notifications:
                notif_dict = notification_dict(notification)
                result.append(notif_dict)

            response_content = {
                "data": result,
                "total_pages": total_pages,
                "total_notifications": notifications_count
            }
            return Response(response_content, status=status.HTTP_200_OK)
        else:
            content = {
                'description': 'You dont have any notifications for now.'
            }
            return Response(status=status.HTTP_200_OK)
Exemplo n.º 5
0
    def list(self, request):
        page = self.request.QUERY_PARAMS.get('page', '1')
        page = int(page)
        role = user_role(request.user)
        if role == constants.OPERATIONS:
            employee = get_object_or_404(Employee, user=request.user)
            notifications = employee.notifications.all().select_related(
                'notification_type').order_by('-time_stamp')
            notifications_count = len(notifications)
            total_pages = int(
                notifications_count / constants.PAGINATION_PAGE_SIZE) + 1
            if page > total_pages or page <= 0:
                return response_invalid_pagenumber()
            else:
                notifications = paginate(notifications, page)
            # ----------------------------------------------------------------------------
            result = []
            for notification in notifications:
                notif_dict = notification_dict(notification)
                result.append(notif_dict)

            response_content = {
                "data": result,
                "total_pages": total_pages,
                "total_notifications": notifications_count
            }
            return response_with_payload(response_content, None)
        else:
            success_message = 'You dont have any notifications for now.'
            return response_success_with_message(success_message)
    def retrieve(self, request, pk=None):
        role = user_role(request.user)
        if role == constants.OPERATIONS:
            employee = get_object_or_404(Employee, user=request.user)
            notification = get_object_or_404(Notification, pk=pk)
            all_notifications = employee.notifications.all()
            is_permitted = False
            for notif in all_notifications:
                if notification.id == notif.id:
                    is_permitted = True
                    break

            if is_permitted == True:
                notif_dict = notification_dict(notification)
                return Response(notif_dict, status=status.HTTP_200_OK)
            else:
                content = {
                    'error':
                    'You dont have permissions to view notification details'
                }
                return Response(content,
                                status=status.HTTP_405_METHOD_NOT_ALLOWED)
        else:
            content = {
                'error':
                'You dont have permissions to view notification details.'
            }
            return Response(content, status=status.HTTP_405_METHOD_NOT_ALLOWED)
Exemplo n.º 7
0
    def add_address(self, request, pk):
        try:
            flat_number = request.data['flat_number']
            building = request.data['building']
            street = request.data['street']
            area_code = request.data['area_code']
        except:
            content = {
                'error': 'Incomplete params',
                'description': 'flat_number, building, street, area_code'
            }
            return Response(content, status=status.HTTP_400_BAD_REQUEST)

        area = get_object_or_404(Area, area_code=area_code)
        new_address = Address.objects.create(flat_number=flat_number,
                                             building=building,
                                             street=street,
                                             area=area)

        role = user_role(request.user)
        if role == constants.VENDOR:
            vendor_agent = get_object_or_404(VendorAgent, user=request.user)
            vendor = vendor_agent.vendor
            vendor.addresses.add(new_address)

            content = {'description': 'Address added successfully'}
            return Response(content, status=status.HTTP_200_OK)
        else:
            content = {
                'description': 'You dont have permissions to add address.'
            }
            return Response(content, status=status.HTTP_400_BAD_REQUEST)
 def read(self, request, pk):
     role = user_role(request.user)
     if role == constants.OPERATIONS:
         employee = get_object_or_404(Employee, user=request.user)
         notification = get_object_or_404(Notification, pk=pk)
         all_notifications = employee.notifications.all()
         is_permitted = False
         for notif in all_notifications:
             if notification.id == notif.id:
                 is_permitted = True
                 break
         if is_permitted == True:
             notification.read = True
             notification.save()
             return Response(status=status.HTTP_200_OK)
         else:
             content = {
                 'error':
                 'You dont have permissions to update this notification'
             }
             return Response(content,
                             status=status.HTTP_405_METHOD_NOT_ALLOWED)
     else:
         content = {
             'description':
             'You dont have permissions to update this notification'
         }
         return Response(status=status.HTTP_200_OK)
Exemplo n.º 9
0
    def create(self, request):
        role = user_role(request.user)
        if role == constants.VENDOR:
            vendor_agent = get_object_or_404(VendorAgent,
                                             user=self.request.user)
            vendor = vendor_agent.vendor

            try:
                name = request.data['name']
                description = request.data['description']
                cost_string = request.data['cost']
                cost = float(cost_string)
            except:
                content = {
                    'error':
                    'missing params with name, description, cost, vendor'
                }
                return Response(content, status=status.HTTP_400_BAD_REQUEST)

            new_product = Product.objects.create(vendor=vendor,
                                                 name=name,
                                                 description=description,
                                                 cost=cost)

            serializer = ProductSerializer(new_product)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        else:
            content = {'error': 'You dont have permissions to add a product'}
            return Response(content, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 10
0
    def destroy(self, request, pk):
        role = user_role(request.user)
        product = get_object_or_404(Product, pk=pk)

        if (role == constants.VENDOR):
            vendor_agent = get_object_or_404(VendorAgent, user=request.user)
            vendor = vendor_agent.vendor

            if product.vendor == vendor:
                product.delete()
                content = {'description': 'Product deleted Successfully.'}
                return Response(content, status=status.HTTP_200_OK)
            else:
                content = {
                    'description':
                    'You dont have permissions to delete this product.'
                }
                return Response(content, status=status.HTTP_400_BAD_REQUEST)

        else:
            content = {
                'description':
                'You dont have permissions to delete this order.'
            }
            return Response(content, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 11
0
 def pending(self, request):
     role = user_role(request.user)
     if role == constants.OPERATIONS:
         employee = get_object_or_404(Employee, user=request.user)
         notifications_count = employee.notifications.filter(
             read=False).count()
         return response_with_payload(notifications_count, None)
     else:
         success_message = 'You dont have any pending notifications for now.'
         return response_success_with_message(success_message)
Exemplo n.º 12
0
 def list(self, request):
     role = user_role(request.user)
     if role == constants.VENDOR:
         vendor_agent = VendorAgent.objects.get(user=self.request.user)
         products_of_vendor = Product.objects.filter(
             vendor=vendor_agent.vendor).order_by(Lower('name'))
         serializer = ProductSerializer(products_of_vendor, many=True)
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     else:
         content = {'error': 'You dont have permissions to view products'}
         return Response(content, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 13
0
    def list(self, request):
        page = self.request.QUERY_PARAMS.get('page', None)
        search_query = request.QUERY_PARAMS.get('search', None)
        addresses_required = False
        
        if page is not None:
            page = int(page)
        else:
            page = 1    

        role = user_role(request.user)
        if role == constants.VENDOR:
            vendor_agent = get_object_or_404(VendorAgent, user = request.user)
            total_consumers_of_vendor = Consumer.objects.filter(vendor = vendor_agent.vendor).order_by(Lower('full_name'))
        
            # SEARCH KEYWORD FILTERING -------------------------------------------------
            if search_query is not None:
                total_consumers_of_vendor = total_consumers_of_vendor.filter(Q(full_name__icontains=search_query) | Q(phone_number=search_query))
                addresses_required = True
            # --------------------------------------------------------------------------

            # FETCH ADDRESSES OF CUSTOMER ----------------------------------------------
            if addresses_required:
                total_consumers_of_vendor = total_consumers_of_vendor.prefetch_related('addresses')
            # --------------------------------------------------------------------------            
            
            # PAGINATE -----------------------------------------------------------------
            total_customers_count = len(total_consumers_of_vendor)
            total_pages =  int(total_customers_count/constants.PAGINATION_PAGE_SIZE) + 1

            if page > total_pages or page<=0:
                response_content = {
                "error": "Invalid page number"
                }
                return Response(response_content, status = status.HTTP_400_BAD_REQUEST)
            else:
                customers = paginate(total_consumers_of_vendor, page)
            
            result = []
            for consumer in customers:
                if addresses_required:
                    consumer_dict = consumer_detail_dict(consumer)
                else:    
                    consumer_dict = consumer_list_dict(consumer)
                result.append(consumer_dict)
        
            response_content = { "data": result, "total_pages": total_pages }
            return Response(response_content, status = status.HTTP_200_OK)
        else:
            content = {'error':'You dont have permissions to view all Consumers'}
            return Response(content, status = status.HTTP_400_BAD_REQUEST)
 def pending(self, request):
     role = user_role(request.user)
     if role == constants.OPERATIONS:
         employee = get_object_or_404(Employee, user=request.user)
         notifications_count = employee.notifications.filter(
             read=False).count()
         response_content = {"count": notifications_count}
         return Response(response_content, status=status.HTTP_200_OK)
     else:
         content = {
             'description':
             'You dont have any pending notifications for now.'
         }
         return Response(status=status.HTTP_200_OK)
Exemplo n.º 15
0
 def retrieve(self, request, pk = None):        
     consumer = get_object_or_404(Consumer, id = pk)
     role = user_role(request.user)
     if role == constants.VENDOR:
         vendor_agent = get_object_or_404(VendorAgent, user = request.user)
         if consumer.vendor.id == vendor_agent.vendor.id:
             detail_dict = consumer_detail_dict(consumer)
             return Response(detail_dict, status = status.HTTP_200_OK)
         else:
             content = {'error':'You dont have permissions to view this consumer.'}
             return Response(content, status = status.HTTP_400_BAD_REQUEST)  
     else:
         content = {'error':'You dont have permissions to view this consumer.'}
         return Response(content, status = status.HTTP_400_BAD_REQUEST)  
Exemplo n.º 16
0
 def list(self, request):
     role = user_role(request.user)
     if (role == constants.SALES) or (role == constants.OPERATIONS):
         all_vendors = Vendor.objects.filter(verified=True).order_by(
             Lower('store_name'))
         serializer = VendorSerializer(all_vendors, many=True)
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     elif role == constants.VENDOR:
         vendor_agent = get_object_or_404(VendorAgent, user=request.user)
         serializer = VendorSerializer(vendor_agent.vendor)
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     else:
         content = {
             'error': 'You dont have permissions to view all vendors'
         }
         return Response(content, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 17
0
    def list(self, request):
        role = user_role(request.user)
        if role == constants.VENDOR:
            vendor_agent = get_object_or_404(VendorAgent, user=request.user)
            consumers_of_vendor = Consumer.objects.filter(
                vendor=vendor_agent.vendor).order_by(Lower('full_name'))

            serializer = ConsumerSerializer(consumers_of_vendor, many=True)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        elif role == constants.OPERATIONS:
            all_customers = Consumer.objects.all()
            serializer = ConsumerSerializer(all_customers, many=True)
        else:
            content = {
                'error': 'You dont have permissions to view all Consumers'
            }
            return Response(content, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 18
0
    def all_vendor_emails(self, request):
        role = user_role(request.user)
        if role == constants.OPERATIONS:
            vendors = Vendor.objects.filter(verified=True)
            all_emails = ''
            for vendor in vendors:
                all_emails = all_emails + vendor.email
                all_emails = all_emails + ','

            content = {'all_emails': all_emails}
            return Response(content, status=status.HTTP_200_OK)
        else:
            content = {
                'error': 'No permissions',
                'description': 'You dont have permissions to access this.'
            }
            return Response(content, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 19
0
    def requestedvendors(self, request):
        role = user_role(request.user)
        if (role == constants.SALES) or (role == constants.OPERATIONS):
            all_vendors = Vendor.objects.filter(verified=False).order_by(
                Lower('store_name'))
            all_vendors_array = []
            for vendor in all_vendors:
                vendor_dict = vendor_list_dict(vendor)
                all_vendors_array.append(vendor_dict)

            response_content = {"data": all_vendors_array}
            return Response(response_content, status=status.HTTP_200_OK)
        else:
            content = {
                'error': 'You dont have permissions to view all vendors'
            }
            return Response(content, status=status.HTTP_400_BAD_REQUEST)
    def create(self, request):
        role = user_role(request.user)
        if (role == constants.VENDOR) or (role == constants.SALES):
            try:
                vendor_id = request.data['vendor_id']
                phone_number = request.data['phone_number']
                name = request.data.get('name')
                password = request.data['password']
            except Exception, e:
                content = {
                    'error': 'Incomplete params',
                    'description': 'vendor_id, phone_number, name, password'
                }
                return Response(content, status=status.HTTP_400_BAD_REQUEST)

            try:
                vendor = Vendor.objects.get(id=vendor_id)
            except:
                content = {'error': 'Vendor with id doesnt exists'}
                return Response(content, status=status.HTTP_400_BAD_REQUEST)

            if is_userexists(phone_number) is True:
                user = User.objects.get(username=phone_number)
                if is_vendoragentexists(user) is True:
                    content = {
                        'error': 'Vendor Agent with same details exists'
                    }
                    return Response(content,
                                    status=status.HTTP_400_BAD_REQUEST)
                else:
                    vendor_agent = VendorAgent.objects.create(user=user)
            else:
                user = User.objects.create(username=phone_number,
                                           password=password)
                new_vendor_agent = VendorAgent.objects.create(user=user,
                                                              vendor=vendor)

            # GROUP SETTING
            group = Group.objects.get(name=constants.VENDOR)
            group.user_set.add(user)

            token = create_token(user, constants.VENDOR)
            content = {'auth_token': token.key}
            return Response(content, status=status.HTTP_201_CREATED)
Exemplo n.º 21
0
    def retrieve(self, request, pk=None):
        role = user_role(request.user)
        if role == constants.OPERATIONS:
            employee = get_object_or_404(Employee, user=request.user)
            notification = get_object_or_404(Notification, pk=pk)
            all_notifications = employee.notifications.all()
            is_permitted = False
            for notif in all_notifications:
                if notification.id == notif.id:
                    is_permitted = True
                    break

            if is_permitted == True:
                notif_dict = notification_dict(notification)
                return response_with_payload(notif_dict, None)
            else:
                return response_access_denied()
        else:
            return response_access_denied()
Exemplo n.º 22
0
def get_open_ticket_count(request):
    role = user_role(request.user)
    if role == constants.VENDOR:
        vendor_agent = get_object_or_404(VendorAgent, user=request.user)
        vendor = vendor_agent.vendor
        url = '{}/helpdesk/tickets.json?email={}&filter_name=new_and_my_open'.format(
            constants.FRESHDESK_BASEURL, vendor.email)
    elif role == constants.OPERATIONS:
        url = '{}/helpdesk/tickets/filter/new_and_my_open?format=json'.format(
            constants.FRESHDESK_BASEURL)
    else:
        return response_access_denied()
    try:
        r = requests.get(url, headers=auth_headers())
        content = r.json()
        response = {'count': len(content)}
        return Response(response, status=status.HTTP_200_OK)
    except Exception, e:
        content = {'error': 'Something went wrong'}
        return Response(content, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 23
0
 def read(self, request, pk):
     role = user_role(request.user)
     if role == constants.OPERATIONS:
         employee = get_object_or_404(Employee, user=request.user)
         notification = get_object_or_404(Notification, pk=pk)
         all_notifications = employee.notifications.all()
         is_permitted = False
         for notif in all_notifications:
             if notification.id == notif.id:
                 is_permitted = True
                 break
         if is_permitted == True:
             notification.read = True
             notification.save()
             success_message = 'Notification marked as read.'
             return response_success_with_message(success_message)
         else:
             return response_access_denied()
     else:
         return response_access_denied()
Exemplo n.º 24
0
def all_tickets(request):
    role = user_role(request.user)
    if role == constants.VENDOR:
        vendor_agent = get_object_or_404(VendorAgent, user=request.user)
        vendor = vendor_agent.vendor
        url = '{}/helpdesk/tickets.json?email={}&filter_name=all_tickets'.format(
            constants.FRESHDESK_BASEURL, vendor.email)
    elif role == constants.OPERATIONS:
        url = '{}/helpdesk/tickets/filter/all_tickets?format=json'.format(
            constants.FRESHDESK_BASEURL)
    else:
        content = {'error': 'You dont have permissions'}
        return Response(content, status=status.HTTP_400_BAD_REQUEST)

    try:
        r = requests.get(url, headers=auth_headers())
        return Response(r.json(), status=status.HTTP_200_OK)

    except Exception, e:
        content = {'error': 'Something went wrong'}
        return Response(content, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 25
0
 def file_download(self, request):
     role = user_role(request.user)
     if role == constants.VENDOR:
         vendor_agent = get_object_or_404(VendorAgent, user = request.user)
         all_consumers_of_vendor = Consumer.objects.filter(vendor = vendor_agent.vendor).order_by(Lower('full_name'))
         
         result = []
         for consumer in all_consumers_of_vendor:
             consumer_dict = excel_download_consumer_detail(consumer)
             result.append(consumer_dict)
         
         response_content = { 
         "data": result
         }
         return Response(response_content, status = status.HTTP_200_OK)
     else:
         content = {
         'error':'No permissions to access customers',
         'description':'You dont have permissions to fetch customers list'
         }
         return Response(content, status = status.HTTP_400_BAD_REQUEST)
Exemplo n.º 26
0
    def create(self, request):
        role = user_role(request.user)
        if (role == constants.VENDOR):
            vendor_agent = VendorAgent.objects.get(user=request.user)
            try:
                phone_number = request.data['phone_number']
                name = request.data['name']
            except Exception, e:
                content = {
                    'error': 'Incomplete params',
                    'description': 'Mandatory Fields: phone_number, name'
                }
                return Response(content, status=status.HTTP_400_BAD_REQUEST)

            ## ADDING ADDRESS
            try:
                flat_number = request.data['flat_number']
                building = request.data['building']
                street = request.data['street']
                area_code = request.data['area_code']
                area = get_object_or_404(Area, area_code=area_code)
            except:
                content = {
                    'error':
                    'Address details missing',
                    'description':
                    'Mandatory Fields: flat_number, building, street, area_code'
                }
                return Response(content, status=status.HTTP_400_BAD_REQUEST)

            consumer = fetch_or_create_consumer(phone_number, name, vendor)
            full_address = flat_number + building + street
            address = fetch_or_create_consumer_address(consumer, full_address,
                                                       None, None)

            serializer = ConsumerSerializer(consumer)
            content = {'consumer': serializer.data}

            return Response(content, status=status.HTTP_201_CREATED)
Exemplo n.º 27
0
    def add_address(self, request, pk):
        try:
            full_address = request.data['full_address']
            pin_code = request.data['pin_code']
            landmark = request.data.get('landmark')
        except:
            content = {
            'error':'Incomplete parameters', 
            'description':'full_address, pin_code, landmark [optional]'
            }
            return Response(content, status = status.HTTP_400_BAD_REQUEST)

        role = user_role(request.user)
        if role == constants.VENDOR:
            consumer = get_object_or_404(Consumer, pk = pk)
            new_address = fetch_or_create_consumer_address(consumer, full_address, pin_code, landmark)
            content = {
            'address_id': new_address.id
            }
            return Response(content, status = status.HTTP_200_OK)
        else:
            content = {'description': 'You dont have permissions to add address.'}
            return Response(content, status = status.HTTP_400_BAD_REQUEST)
Exemplo n.º 28
0
    def retrieve(self, request, pk=None):
        vendor = get_object_or_404(Vendor, id=pk)
        role = user_role(request.user)
        can_respond = False

        if role == 'vendor':
            vendor_agent = get_object_or_404(VendorAgent, user=request.user)
            if vendor.id == vendor_agent.vendor.id:
                can_respond = True
            else:
                can_respond = False
        else:
            can_respond = True

        if can_respond:
            vendor_detail = vendor_detail_dict(vendor)
            response_content = {"data": vendor_detail}
            return Response(response_content, status=status.HTTP_200_OK)
        else:
            content = {
                'error':
                'You dont have permissions to view this vendor details.'
            }
            return Response(content, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 29
0
        end_date_string = request.data['end_date']

        start_date = parse_datetime(start_date_string)
        start_date = ist_day_start(start_date)

        end_date = parse_datetime(end_date_string)
        end_date = ist_day_end(end_date)

    except Exception, e:
        content = {'error': 'Error in params: start_date, end_date'}
        return Response(content, status=status.HTTP_400_BAD_REQUEST)
    # ---------------------------------------------------------------

    # VENDOR INPUTS ---------------------------------------------------
    vendor = None
    role = user_role(request.user)
    if role == constants.VENDOR:
        vendor_agent = get_object_or_404(VendorAgent, user=request.user)
        vendor = vendor_agent.vendor
    else:
        vendor_id = request.data.get('vendor_id')
        if vendor_id is not None:
            vendor = get_object_or_404(Vendor, pk=vendor_id)
        else:
            pass
    # --------------------------------------------------------------------

    # VENDOR FILTERING ---------------------------------------------------
    if vendor is not None:
        delivery_status_queryset = OrderDeliveryStatus.objects.filter(
            order__vendor=vendor)