Release as v0.19.0

pull/139/head
JensDiemer 2023-07-21 07:02:45 +02:00
rodzic f1c10f1d4a
commit 7da60dfe8a
8 zmienionych plików z 60 dodań i 48 usunięć

Wyświetl plik

@ -154,11 +154,12 @@ Files are separated into: "/src/" and "/development/"
## history
* [**dev**](https://github.com/jedie/PyInventory/compare/v0.18.1...main)
* [**dev**](https://github.com/jedie/PyInventory/compare/v0.19.0...main)
* tbc
* [v0.19.0 - 15.06.2023](https://github.com/jedie/PyInventory/compare/v0.18.1...v0.19.0)
* Update to Django 4.2
* remove django-processinfo
* Bugfix ItemModelAdmin
* tbc
* [v0.18.1 - 15.06.2023](https://github.com/jedie/PyInventory/compare/v0.18.0...v0.18.1)
* Update requirements
* [v0.18.0 - 04.04.2023](https://github.com/jedie/PyInventory/compare/v0.17.0...v0.18.0)

Wyświetl plik

@ -1,3 +1,3 @@
export PROJECT_NAME=pyinventory
export PROJECT_PACKAGE_NAME=pyinventory
export PROJECT_VERSION=0.18.1
export PROJECT_VERSION=0.19.0

Wyświetl plik

@ -1,6 +1,6 @@
[tool.poetry]
name = "PyInventory"
version = "0.18.1"
version = "0.19.0"
description = "Web based management to catalog things including state and location etc. using Python/Django."
authors = [
"Jens Diemer <PyInventory@jensdiemer.de>",

Wyświetl plik

@ -4,8 +4,8 @@ from bx_django_utils.test_utils.html_assertion import HtmlAssertionMixin, assert
from django.template.defaulttags import CsrfTokenNode, NowNode
from django.test import TestCase, override_settings
from inventory import __version__
from inventory_project.tests.fixtures import get_normal_user
from inventory_project.tests.mocks import MockInventoryVersionString
@override_settings(SECURE_SSL_REDIRECT=False)
@ -18,7 +18,7 @@ class AdminTestCase(HtmlAssertionMixin, TestCase):
self.client.force_login(self.normaluser)
with mock.patch.object(NowNode, 'render', return_value='MockedNowNode'), mock.patch.object(
CsrfTokenNode, 'render', return_value='MockedCsrfTokenNode'
):
), MockInventoryVersionString():
response = self.client.get(
path='/admin/inventory/locationmodel/',
)
@ -26,7 +26,7 @@ class AdminTestCase(HtmlAssertionMixin, TestCase):
self.assert_html_parts(
response,
parts=(
f'<title>Select Location to change | PyInventory v{__version__}</title>',
'<title>Select Location to change | PyInventory vMockedVersionString</title>',
'<a href="/admin/inventory/locationmodel/add/" class="addlink">Add Location</a>',
'<p class="paginator">0 Locations</p>',
),

Wyświetl plik

@ -0,0 +1,15 @@
from unittest import mock
from bx_py_utils.test_utils.context_managers import MassContextManager
from inventory import context_processors
class MockInventoryVersionString(MassContextManager):
def __init__(self):
self.mocks = [
mock.patch.object(context_processors, '__version__', self),
]
def __repr__(self):
return 'MockedVersionString'

Wyświetl plik

@ -10,16 +10,15 @@ from django.utils import timezone
from django_tools.unittest_utils.mockup import ImageDummy
from reversion.models import Revision
from inventory import __version__
from inventory.models import ItemImageModel, ItemModel
from inventory_project.tests.fixtures import get_normal_user
from inventory_project.tests.mocks import MockInventoryVersionString
ITEM_FORM_DEFAULTS = {
'version': 0, # VersionProtectBaseModel field
'kind': 'kind',
'name': 'name',
'itemimagemodel_set-TOTAL_FORMS': '0',
'itemimagemodel_set-INITIAL_FORMS': '0',
'itemimagemodel_set-MIN_NUM_FORMS': '0',
@ -55,27 +54,22 @@ class AdminAnonymousTests(HtmlAssertionMixin, TestCase):
fetch_redirect_response=False
)
response = self.client.get(
path='/admin/inventory/itemmodel/add/',
secure=True,
HTTP_ACCEPT_LANGUAGE='en'
)
response = self.client.get(path='/admin/inventory/itemmodel/add/', secure=True, HTTP_ACCEPT_LANGUAGE='en')
self.assertRedirects(
response,
expected_url='/admin/login/?next=/admin/inventory/itemmodel/add/',
fetch_redirect_response=False
response, expected_url='/admin/login/?next=/admin/inventory/itemmodel/add/', fetch_redirect_response=False
)
with mock.patch.object(CsrfTokenNode, 'render', return_value='MockedCsrfTokenNode'):
response = self.client.get(
path='/admin/login/',
secure=True,
HTTP_ACCEPT_LANGUAGE='en'
with mock.patch.object(
CsrfTokenNode, 'render', return_value='MockedCsrfTokenNode'
), MockInventoryVersionString():
response = self.client.get(path='/admin/login/', secure=True, HTTP_ACCEPT_LANGUAGE='en')
self.assert_html_parts(
response,
parts=(
'<title>Log in | PyInventory vMockedVersionString</title>',
'<label class="required" for="id_username">Username:</label>',
'<label class="required" for="id_password">Password:</label>',
),
)
self.assert_html_parts(response, parts=(
f'<title>Log in | PyInventory v{__version__}</title>',
'<label class="required" for="id_username">Username:</label>',
'<label class="required" for="id_password">Password:</label>',
))
assert_html_response_snapshot(response, validate=False)
@ -87,16 +81,16 @@ class AdminTestCase(HtmlAssertionMixin, TestCase):
def test_normal_user_create_minimal_item(self):
offset = datetime.timedelta(minutes=1)
with mock.patch.object(timezone, 'now', MockDatetimeGenerator(offset=offset)),\
mock.patch.object(NowNode, 'render', return_value='MockedNowNode'), \
mock.patch.object(CsrfTokenNode, 'render', return_value='MockedCsrfTokenNode'):
with mock.patch.object(timezone, 'now', MockDatetimeGenerator(offset=offset)), mock.patch.object(
NowNode, 'render', return_value='MockedNowNode'
), mock.patch.object(
CsrfTokenNode, 'render', return_value='MockedCsrfTokenNode'
), MockInventoryVersionString():
self.client.force_login(self.normaluser)
response = self.client.get('/admin/inventory/itemmodel/add/')
assert response.status_code == 200
self.assert_html_parts(response, parts=(
f'<title>Add Item | PyInventory v{__version__}</title>',
))
self.assert_html_parts(response, parts=('<title>Add Item | PyInventory vMockedVersionString</title>',))
assert_html_response_snapshot(response=response, validate=False)
assert ItemModel.objects.count() == 0
@ -133,11 +127,14 @@ class AdminTestCase(HtmlAssertionMixin, TestCase):
path=f'/admin/inventory/itemmodel/{item.pk}/change/',
data=post_data,
)
self.assert_html_parts(response, parts=(
f'<title>Change Item | PyInventory v{__version__}</title>',
'<li>Version error: Overwrite version 2 with 1 is forbidden!</li>',
'<pre>- &quot;name&quot;\n+ &quot;A new Name!&quot;</pre>'
))
self.assert_html_parts(
response,
parts=(
'<title>Change Item | PyInventory vMockedVersionString</title>',
'<li>Version error: Overwrite version 2 with 1 is forbidden!</li>',
'<pre>- &quot;name&quot;\n+ &quot;A new Name!&quot;</pre>',
),
)
html = response.content.decode('utf-8')
html = html.replace(str(item.pk), '<removed-UUID>')
assert_html_snapshot(got=html, validate=False)
@ -217,7 +214,7 @@ class AdminTestCase(HtmlAssertionMixin, TestCase):
with mock.patch.object(NowNode, 'render', return_value='MockedNowNode'), mock.patch.object(
CsrfTokenNode, 'render', return_value='MockedCsrfTokenNode'
):
), MockInventoryVersionString():
response = self.client.get(
path='/admin/inventory/itemmodel/',
)
@ -225,7 +222,7 @@ class AdminTestCase(HtmlAssertionMixin, TestCase):
self.assert_html_parts(
response,
parts=(
f'<title>Select Item to change | PyInventory v{__version__}</title>',
'<title>Select Item to change | PyInventory vMockedVersionString</title>',
'<a href="/admin/inventory/itemmodel/00000000-0001-0000-0000-000000000000/change/">'
'<strong>main item 1</strong></a>',
'<a href="/admin/inventory/itemmodel/00000000-0001-0001-0000-000000000000/change/">'

Wyświetl plik

@ -2,7 +2,7 @@
<html dir="ltr" lang="en">
<head>
<title>
Change Item | PyInventory v0.18.1
Change Item | PyInventory vMockedVersionString
</title>
<link href="/static/admin/css/base.css" rel="stylesheet"/>
<link href="/static/admin/css/dark_mode.css" rel="stylesheet"/>
@ -77,7 +77,7 @@
<div id="branding">
<h1 id="site-name">
<a href="/admin/">
PyInventory v0.18.1
PyInventory vMockedVersionString
</a>
</h1>
</div>

Wyświetl plik

@ -8,9 +8,9 @@ from django_tools.unittest_utils.mockup import ImageDummy
from model_bakery import baker
from reversion.models import Revision
from inventory import __version__
from inventory.models import MemoImageModel, MemoModel
from inventory.permissions import get_or_create_normal_user_group
from inventory_project.tests.mocks import MockInventoryVersionString
class AdminAnonymousTests(TestCase):
@ -42,13 +42,12 @@ class AdminTestCase(HtmlAssertionMixin, TestCase):
def test_normal_user_create_minimal_item(self):
self.client.force_login(self.normaluser)
with mock.patch.object(NowNode, 'render', return_value='MockedNowNode'), \
mock.patch.object(CsrfTokenNode, 'render', return_value='MockedCsrfTokenNode'):
with mock.patch.object(NowNode, 'render', return_value='MockedNowNode'), mock.patch.object(
CsrfTokenNode, 'render', return_value='MockedCsrfTokenNode'
), MockInventoryVersionString():
response = self.client.get('/admin/inventory/memomodel/add/')
assert response.status_code == 200
self.assert_html_parts(response, parts=(
f'<title>Add Memo | PyInventory v{__version__}</title>',
))
self.assert_html_parts(response, parts=('<title>Add Memo | PyInventory vMockedVersionString</title>',))
assert_html_response_snapshot(response=response, validate=False)
assert MemoModel.objects.count() == 0