Example #1
0
File: views.py Project: kfarr2/ITS
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,
        })
Example #2
0
File: tests.py Project: kfarr2/ITS
    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)
Example #3
0
File: tests.py Project: kfarr2/ITS
    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)
Example #4
0
File: tests.py Project: kfarr2/ITS
    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])
Example #5
0
File: tests.py Project: kfarr2/ITS
    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)