def get_context_data(self, **kwargs): full_box_url = self.get_box_url_by_filters(product__isnull=False) empty_box_url = self.get_box_url_by_filters(product__isnull=True) new_box_url = self.get_box_scanned_url(BoxNumber.get_next_box_number()) # schema http or https schema = 'http' if settings.DEBUG is False and hasattr(self.request, 'schema'): schema = self.request.schema protocol_and_host = "{}://{}".format( schema, self.request.META.get('HTTP_HOST', '')) full_box_url = protocol_and_host + full_box_url empty_box_url = protocol_and_host + empty_box_url new_box_url = protocol_and_host + new_box_url empty_box = Box.objects.filter(product__isnull=True).first() full_box = Box.objects.filter(product__isnull=False).first() return { 'full_box_url': full_box_url, 'empty_box_url': empty_box_url, 'new_box_url': new_box_url, 'empty_box': empty_box, 'full_box': full_box, 'next_box_number': BoxNumber.get_next_box_number(), }
def test_post_box_number_form(self): client = self.setup_user_and_client('john', 'doe4') box_number = BoxNumber.get_next_box_number() response = client.post( self.url, { 'mode': ManualMoveBoxView.MODE_ENTER_BOX_NUMBER, 'box_number': box_number }, ) self.assertEqual(404, response.status_code) self.assertEqual( ManualMoveBoxView.MODE_ENTER_BOX_NUMBER, response.context['mode'], ) self.assertIsInstance( response.context['box_number_form'], FilledBoxNumberForm, ) box = Box.objects.create( box_number=box_number, box_type=BoxType.objects.get(box_type_code='Evans'), product=Product.objects.get(prod_name='Canned Potatoes'), )
def test_post_box_number_form(self): user = User.objects.create_user('jdoe4', '*****@*****.**', 'abc123') client = Client() client.force_login(user) box_number = BoxNumber.get_next_box_number() response = client.post( self.url, { 'mode': ManualMoveBoxView.MODE_ENTER_BOX_NUMBER, 'box_number': box_number }, ) self.assertEqual(404, response.status_code) self.assertEqual( ManualMoveBoxView.MODE_ENTER_BOX_NUMBER, response.context['mode'], ) self.assertIsInstance( response.context['box_number_form'], FilledBoxNumberForm, ) box = Box.objects.create( box_number=box_number, box_type=BoxType.objects.get(box_type_code='Evans'), product=Product.objects.get(prod_name='Canned Potatoes'), )
def test_prepare_pallet_and_pallet_boxes__duplicate_box_numbers(self): pallet = Pallet.objects.create( name='duplicate_box_numbers' ) location = Location.get_location('01', '02', 'B1') box_number = BoxNumber.get_next_box_number() product1, product2 = Product.objects.all()[:2] pallet_form = self.get_pallet_form(pallet) build_pallet_form = self.get_build_pallet_form(location) post_data = management_form_post_data( BuildPalletView.formset_prefix, 2 ) post_data.update( formset_form_post_data( BuildPalletView.formset_prefix, 0, self.get_box_item_form_data( box_number, product1, ) ) ) post_data.update( formset_form_post_data( BuildPalletView.formset_prefix, 1, self.get_box_item_form_data( box_number, product2, ) ) ) box_forms = BuildPalletView.BoxFormFactory( post_data, prefix=BuildPalletView.formset_prefix ) self.assertTrue(pallet_form.is_valid()) self.assertTrue(build_pallet_form.is_valid()) self.assertTrue(box_forms.is_valid()) view = BuildPalletView() pattern = f"Duplicate box numbers: {box_number}" with self.assertRaisesRegex(BuildPalletError, pattern): view.prepare_pallet_and_pallet_boxes( pallet_form, build_pallet_form, box_forms, )
def get_context_data(self, **kwargs): full_box_url = self.get_box_url_by_filters(product__isnull=False) empty_box_url = self.get_box_url_by_filters(product__isnull=True) new_box_url = self.get_box_scanned_url(BoxNumber.get_next_box_number()) empty_box = Box.objects.filter(product__isnull=True).first() full_box = Box.objects.filter(product__isnull=False).first() return { 'full_box_url': full_box_url, 'empty_box_url': empty_box_url, 'new_box_url': new_box_url, 'empty_box': empty_box, 'full_box': full_box, 'next_box_number': BoxNumber.get_next_box_number() }
def build_boxes(number_of_boxes): boxes = [] default_box_type = Box.box_type_default() for i in range(number_of_boxes): box_number = BoxNumber.get_next_box_number() box = Box.objects.create( box_number=box_number, box_type=default_box_type, ) boxes.append(box) return boxes
def test_post_location_form(self): user = User.objects.create_user('jdoe5', '*****@*****.**', 'abc123') client = Client() client.force_login(user) box = Box.objects.create( box_number=BoxNumber.get_next_box_number(), box_type=BoxType.objects.get(box_type_code='Evans'), product=Product.objects.get(prod_name='Canned Potatoes'), date_filled=timezone.now(), exp_year=2022, quantity=0, ) self.assertIsNone(box.location) location = Location.objects.first() response = client.post( self.url, { 'mode': ManualMoveBoxView.MODE_ENTER_LOCATION, 'loc_row': location.loc_row_id, 'loc_bin': location.loc_bin_id, 'loc_tier': location.loc_tier_id, 'box_pk': box.pk, }) self.assertEqual(200, response.status_code, response.content) context_box = response.context.get('box') self.assertIsNotNone(context_box) self.assertEqual( box.pk, context_box.pk, ) self.assertEqual( location.pk, context_box.location.pk, )
def test_prepare_pallet_and_pallet_boxes__successful_run(self): pallet = Pallet.objects.create( name='prepare pallet & boxes' ) location = Location.get_location('01', '02', 'C1') pallet_form = self.get_pallet_form(pallet) build_pallet_form = self.get_build_pallet_form(location) product1, product2 = Product.objects.all()[2:4] box_number1 = BoxNumber.get_next_box_number() Box.objects.create( box_number=box_number1, box_type=Box.box_type_default(), ) exp_year1 = timezone.now().year + 1 box_number2 = BoxNumber.get_next_box_number() Box.objects.create( box_number=box_number2, box_type=Box.box_type_default(), ) exp_year2 = timezone.now().year + 2 post_data = management_form_post_data( BuildPalletView.formset_prefix, 2 ) post_data.update( formset_form_post_data( BuildPalletView.formset_prefix, 0, self.get_box_item_form_data( box_number1, product1, exp_year=exp_year1, ) ) ) post_data.update( formset_form_post_data( BuildPalletView.formset_prefix, 1, self.get_box_item_form_data( box_number2, product2, exp_year=exp_year2, ) ) ) box_forms = BuildPalletView.BoxFormFactory( post_data, prefix=BuildPalletView.formset_prefix ) self.assertTrue(pallet_form.is_valid()) self.assertTrue(build_pallet_form.is_valid()) self.assertTrue(box_forms.is_valid()) self.assertNotEqual(box_number1, box_number2) view = BuildPalletView() pallet_out, location_out, boxes_by_box_number = \ view.prepare_pallet_and_pallet_boxes( pallet_form, build_pallet_form, box_forms, ) self.assertEqual(location, pallet_out.location) self.assertEqual(Pallet.FILL, pallet_out.pallet_status) self.assertEqual(location, location_out) self.assertEqual( {box_number1, box_number2}, boxes_by_box_number.keys(), ) pallet_box1 = boxes_by_box_number[box_number1] self.assertEqual(box_number1, pallet_box1.box_number) self.assertEqual(pallet, pallet_box1.pallet) self.assertEqual(box_number1, pallet_box1.box.box_number) self.assertEqual(product1, pallet_box1.product) self.assertEqual(exp_year1, pallet_box1.exp_year) pallet_box2 = boxes_by_box_number[box_number2] self.assertEqual(box_number2, pallet_box2.box_number) self.assertEqual(pallet, pallet_box2.pallet) self.assertEqual(box_number2, pallet_box2.box.box_number) self.assertEqual(product2, pallet_box2.product) self.assertEqual(exp_year2, pallet_box2.exp_year)