Пример #1
0
 def setUpClass(cls):
     super(ReceiptTest, cls).setUpClass()
     EMG_AND_REC_SMS_HANDLERS.set('ils-test-domain', True, namespace=NAMESPACE_DOMAIN)
     cls.order = EmergencyOrder(
         domain=TEST_DOMAIN,
         requesting_user_id=cls.user1.get_id,
         requesting_phone_number='5551234',
         location=cls.user1.sql_location,
         location_code=cls.user1.sql_location.site_code,
         timestamp=datetime.utcnow()
     )
     update_product_quantity_json_field(
         cls.order.products_requested, [ProductQuantity('dp', 100), ProductQuantity('fs', 50)]
     )
     cls.order.save()
Пример #2
0
 def carry_forward_dispatched_data(self, order, package_number):
     dispatched_status = self.get_dispatched_status_or_none(order, package_number)
     if dispatched_status:
         return {
             'package_id': dispatched_status.package_id,
             'vehicle_id': dispatched_status.vehicle_id,
             'products': [ProductQuantity(code, data.get('quantity'))
                          for code, data in six.iteritems(dispatched_status.products)],
         }
     else:
         return {}
Пример #3
0
    def handle(self):
        content = self.msg.text.split(' ', 1)[1]
        quantities_list = []
        try:
            parsed_report = self.parse_message(content)
        except ParseError as e:
            self.respond(e.message)
            return True

        for product_code, quantity in parsed_report:
            quantities_list.append(ProductQuantity(product_code, quantity))

        self.invoke_api_function(quantities_list)
        self.send_success_message()
        return True
Пример #4
0
    def validate_and_clean_products(self, data, field_name):
        value = data.get(field_name)
        result = []
        data_type_error = \
            "Field '{}' is required and expected to be a non-empty list of JSON objects".format(field_name)

        if not isinstance(value, list):
            raise OrderStatusValidationError(data_type_error)

        if len(value) == 0:
            raise OrderStatusValidationError(data_type_error)

        for item in value:
            if not isinstance(item, dict):
                raise OrderStatusValidationError(data_type_error)

            self.validate_string(item, 'productCode')
            self.validate_decimal(item, 'quantity')
            result.append(ProductQuantity(item['productCode'], item['quantity']))

        data[field_name] = result