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()
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 {}
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
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