def admin_itemlist(request): """ Administrative item listing, allows for viewing of items, taking actions on items, and archiving items. """ # Built item list from filter. item_filter_form = AdminItemFilterForm(request.GET if "action" in request.GET else None) item_list = item_filter_form.filter() # Process archive request if request.method == 'POST': item_archive_form = ItemArchiveForm(request.POST, item_list=item_list) if item_archive_form.is_valid(): item_archive_form.save() messages.success(request, "Item successfully changed") return HttpResponseRedirect(request.get_full_path()) else: item_archive_form = ItemArchiveForm(item_list=item_list) return render(request, 'items/admin-itemlist.html', { 'items': item_list, 'item_filter': item_filter_form, 'archive_form': item_archive_form, })
def test_save(self): """ Checks that the archived status of items is updated. """ user = create_staff() self.client.login(username=user.username, password="******") new_item = make(Item, is_archived=False) new_action = Action.objects.get(machine_name=Action.CHECKED_IN) make(Status, action_taken=new_action, item=new_item) make(Category) make(Location) item_filter_form = AdminItemFilterForm(None) item_list = item_filter_form.filter() request = self.client.post(reverse("admin-itemlist")) archive_key = 'archive-' + str(new_item.pk) item_archive_form = ItemArchiveForm(request, item_list=item_list) self.assertTrue(item_archive_form.is_valid()) item_archive_form.cleaned_data[archive_key] = True item_archive_form.save() new_item = Item.objects.get(pk=new_item.pk) self.assertTrue(new_item.is_archived)
def test_iter(self): """ Checks that the iter method updates the requested page with the correct archive fields. """ user = create_staff() self.client.login(username=user.username, password="******") new_item = make(Item, is_archived=False) new_action = Action.objects.get(machine_name=Action.CHECKED_IN) make(Status, action_taken=new_action, item=new_item) make(Category) make(Location) request = self.client.post(reverse("admin-itemlist")) item_filter_form = AdminItemFilterForm(None) item_filter_form.filter() request = self.client.get(reverse("admin-itemlist")) expected_text = "archive-" + str(new_item.pk) self.assertContains(request, expected_text, status_code=200, html=False)
def test_init(self): """ Tests that the fields of the form are appended with archive fields. """ user = create_staff() self.client.login(username=user.username, password="******") new_item = make(Item) new_action = Action.objects.get(machine_name=Action.CHECKED_IN) make(Status, action_taken=new_action, item=new_item) make(Category) make(Location) item_filter_form = AdminItemFilterForm(None) item_list = item_filter_form.filter() request = self.client.post(reverse("admin-itemlist")) archive_key = 'archive-' + str(new_item.pk) item_archive_form = ItemArchiveForm(request, item_list=item_list) self.assertTrue(item_archive_form.fields[archive_key])
def test_filter(self): """ Test 1 - Checks that valuable items will be displayed when filtering for valuable items. Also Checks that searches based on location and category work. Test 2 - Checks that archived items are displayed when filtering for archived items. Test 3 - Checks that a non-valuable and non-archived items are displayed when filtering for non-valuable and non-archived items. Test 4 - Checks that items are sorted in the order specified. Test 5 - Search on last name """ # Test 1 - Valuable item / Search on location and category. new_item1 = make(Item, is_archived=False, is_valuable=True) new_action = Action.objects.get(machine_name=Action.CHECKED_IN) make(Status, action_taken=new_action, item=new_item1) data = {'select_items': "valuable", 'select_location': new_item1.location.name, 'select_category': new_item1.category.name, 'keyword_or_last_name': new_item1.description, 'sort_by': '', } item_filter_form = AdminItemFilterForm(data) item_list = item_filter_form.filter() values = item_list.values() self.assertEqual(values.get()['item_id'], new_item1.pk) # Test 2 - Archived item new_item2 = make(Item, is_archived=True, is_valuable=True) data = {'select_items': "archived", 'select_location': None, 'select_category': None, 'keyword_or_last_name': new_item2.description, 'sort_by': '', } with patch('its.items.forms.AdminItemFilterForm.is_valid', return_value=True): item_filter_form = AdminItemFilterForm(data) item_filter_form.cleaned_data = data item_list = item_filter_form.filter() values = item_list.values() self.assertEqual(values.get()['item_id'], new_item2.pk) # Test 3 - not valuable, not archived item new_item3 = make(Item, is_archived=False, is_valuable=False) data = {'select_items': "", 'select_location': None, 'select_category': None, 'keyword_or_last_name': new_item3.description, 'sort_by': '', } with patch('its.items.forms.AdminItemFilterForm.is_valid', return_value=True): item_filter_form = AdminItemFilterForm(data) item_filter_form.cleaned_data = data item_list = item_filter_form.filter() values = item_list.values() self.assertEqual(values.get()['item_id'], new_item3.pk) # Test 4 - test item sorting make(Item, is_archived=False, is_valuable=False) data = {'select_items': "", 'select_location': None, 'select_category': None, 'keyword_or_last_name': '', 'sort_by': 'pk', } with patch('its.items.forms.AdminItemFilterForm.is_valid', return_value=True): item_filter_form = AdminItemFilterForm(data) item_filter_form.cleaned_data = data item_list = item_filter_form.filter() values = item_list.values() self.assertLess(values[0]['item_id'], values[1]['item_id']) self.assertLess(values[1]['item_id'], values[2]['item_id']) # Test 5 - Search on last name user = create_full_user("test", "test", "*****@*****.**") new_item5 = make(Item, is_archived=False, is_valuable=False, possible_owner=user) data = {'select_items': "", 'select_location': None, 'select_category': None, 'keyword_or_last_name': user.last_name, 'sort_by': '', } with patch('its.items.forms.AdminItemFilterForm.is_valid', return_value=True): item_filter_form = AdminItemFilterForm(data) item_filter_form.cleaned_data = data item_list = item_filter_form.filter() values = item_list.values() self.assertEqual(values.get()['item_id'], new_item5.pk)