kopia lustrzana https://github.com/jedie/PyInventory
rodzic
36e700f4d0
commit
8685e29a5d
|
@ -31,6 +31,7 @@ INSTALLED_APPS = [
|
||||||
'django.contrib.sessions',
|
'django.contrib.sessions',
|
||||||
'django.contrib.messages',
|
'django.contrib.messages',
|
||||||
'django.contrib.staticfiles',
|
'django.contrib.staticfiles',
|
||||||
|
'django.contrib.sites',
|
||||||
|
|
||||||
'bx_py_utils', # https://github.com/boxine/bx_py_utils
|
'bx_py_utils', # https://github.com/boxine/bx_py_utils
|
||||||
'import_export', # https://github.com/django-import-export/django-import-export
|
'import_export', # https://github.com/django-import-export/django-import-export
|
||||||
|
@ -41,12 +42,14 @@ INSTALLED_APPS = [
|
||||||
'tagulous', # https://github.com/radiac/django-tagulous
|
'tagulous', # https://github.com/radiac/django-tagulous
|
||||||
'adminsortable2', # https://github.com/jrief/django-admin-sortable2
|
'adminsortable2', # https://github.com/jrief/django-admin-sortable2
|
||||||
'axes', # https://github.com/jazzband/django-axes
|
'axes', # https://github.com/jazzband/django-axes
|
||||||
|
'django_processinfo', # https://github.com/jedie/django-processinfo/
|
||||||
|
|
||||||
'inventory.apps.InventoryConfig',
|
'inventory.apps.InventoryConfig',
|
||||||
]
|
]
|
||||||
|
|
||||||
ROOT_URLCONF = 'inventory_project.urls'
|
ROOT_URLCONF = 'inventory_project.urls'
|
||||||
WSGI_APPLICATION = 'inventory_project.wsgi.application'
|
WSGI_APPLICATION = 'inventory_project.wsgi.application'
|
||||||
|
SITE_ID = 1
|
||||||
|
|
||||||
AUTHENTICATION_BACKENDS = [
|
AUTHENTICATION_BACKENDS = [
|
||||||
'axes.backends.AxesBackend',
|
'axes.backends.AxesBackend',
|
||||||
|
@ -54,6 +57,8 @@ AUTHENTICATION_BACKENDS = [
|
||||||
]
|
]
|
||||||
|
|
||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
|
'django_processinfo.middlewares.ProcessInfoMiddleware',
|
||||||
|
|
||||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
'django.middleware.locale.LocaleMiddleware',
|
'django.middleware.locale.LocaleMiddleware',
|
||||||
'django.middleware.common.CommonMiddleware',
|
'django.middleware.common.CommonMiddleware',
|
||||||
|
@ -109,6 +114,14 @@ STATIC_ROOT = str(__Path(BASE_PATH, 'static'))
|
||||||
MEDIA_URL = '/media/'
|
MEDIA_URL = '/media/'
|
||||||
MEDIA_ROOT = str(__Path(BASE_PATH, 'media'))
|
MEDIA_ROOT = str(__Path(BASE_PATH, 'media'))
|
||||||
|
|
||||||
|
# _____________________________________________________________________________
|
||||||
|
# django-processinfo
|
||||||
|
|
||||||
|
from django_processinfo import app_settings as PROCESSINFO # noqa
|
||||||
|
|
||||||
|
|
||||||
|
PROCESSINFO.ADD_INFO = False # Don't add info in HTML page
|
||||||
|
|
||||||
# _____________________________________________________________________________
|
# _____________________________________________________________________________
|
||||||
# Django-dbbackup
|
# Django-dbbackup
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
import pytest
|
from django.contrib.auth.models import User
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
from django_processinfo.models import ProcessInfo, SiteStatistics
|
||||||
|
from model_bakery import baker
|
||||||
|
|
||||||
|
from inventory.permissions import get_or_create_normal_user_group
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
|
||||||
class AdminAnonymousTests(TestCase):
|
class AdminAnonymousTests(TestCase):
|
||||||
"""
|
"""
|
||||||
Anonymous will be redirected to the login page.
|
Anonymous will be redirected to the login page.
|
||||||
|
@ -15,3 +18,58 @@ class AdminAnonymousTests(TestCase):
|
||||||
def test_login_de(self):
|
def test_login_de(self):
|
||||||
response = self.client.get("/admin/", HTTP_ACCEPT_LANGUAGE="de")
|
response = self.client.get("/admin/", HTTP_ACCEPT_LANGUAGE="de")
|
||||||
self.assertRedirects(response, expected_url="/admin/login/?next=/admin/")
|
self.assertRedirects(response, expected_url="/admin/login/?next=/admin/")
|
||||||
|
|
||||||
|
|
||||||
|
class ProcessinfoAdminTestCase(TestCase):
|
||||||
|
@classmethod
|
||||||
|
def setUpTestData(cls):
|
||||||
|
cls.superuser = baker.make(
|
||||||
|
User, is_staff=True, is_active=True, is_superuser=True
|
||||||
|
)
|
||||||
|
cls.normaluser = baker.make(
|
||||||
|
User, is_staff=True, is_active=True, is_superuser=False
|
||||||
|
)
|
||||||
|
assert cls.normaluser.user_permissions.count() == 0
|
||||||
|
group = get_or_create_normal_user_group()[0]
|
||||||
|
cls.normaluser.groups.set([group])
|
||||||
|
|
||||||
|
def test_superuser_access(self):
|
||||||
|
self.client.force_login(self.superuser)
|
||||||
|
|
||||||
|
assert SiteStatistics.objects.count() == 0
|
||||||
|
assert ProcessInfo.objects.count() == 0
|
||||||
|
|
||||||
|
response = self.client.get('/admin/django_processinfo/sitestatistics/')
|
||||||
|
self.assertTemplateUsed(response, 'admin/django_processinfo/change_list.html')
|
||||||
|
|
||||||
|
response = response.content.decode("utf-8")
|
||||||
|
self.assertInHTML('<h2>System information</h2>', response)
|
||||||
|
self.assertInHTML('<dt>Living processes (current/avg/max)</dt>', response)
|
||||||
|
|
||||||
|
assert SiteStatistics.objects.count() == 1
|
||||||
|
assert ProcessInfo.objects.count() == 1
|
||||||
|
|
||||||
|
response = self.client.get('/admin/django_processinfo/processinfo/')
|
||||||
|
self.assertTemplateUsed(response, 'admin/django_processinfo/change_list.html')
|
||||||
|
|
||||||
|
response = response.content.decode("utf-8")
|
||||||
|
self.assertInHTML('<h2>System information</h2>', response)
|
||||||
|
self.assertInHTML('<dt>Living processes (current/avg/max)</dt>', response)
|
||||||
|
|
||||||
|
assert SiteStatistics.objects.count() == 1
|
||||||
|
assert ProcessInfo.objects.count() == 1
|
||||||
|
|
||||||
|
def test_normal_user_access(self):
|
||||||
|
self.client.force_login(self.normaluser)
|
||||||
|
|
||||||
|
assert SiteStatistics.objects.count() == 0
|
||||||
|
assert ProcessInfo.objects.count() == 0
|
||||||
|
|
||||||
|
response = self.client.get('/admin/django_processinfo/sitestatistics/')
|
||||||
|
assert response.status_code == 403
|
||||||
|
|
||||||
|
response = self.client.get('/admin/django_processinfo/processinfo/')
|
||||||
|
assert response.status_code == 403
|
||||||
|
|
||||||
|
assert SiteStatistics.objects.count() == 1
|
||||||
|
assert ProcessInfo.objects.count() == 1
|
||||||
|
|
|
@ -324,6 +324,17 @@ category = "main"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "django-processinfo"
|
||||||
|
version = "1.0.0"
|
||||||
|
description = "Django application to collect information about the running server processes."
|
||||||
|
category = "main"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.7,<4.0.0"
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
Django = "*"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "django-reversion"
|
name = "django-reversion"
|
||||||
version = "3.0.8"
|
version = "3.0.8"
|
||||||
|
@ -614,6 +625,17 @@ category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "model-bakery"
|
||||||
|
version = "1.2.0"
|
||||||
|
description = "Smart object creation facility for Django."
|
||||||
|
category = "dev"
|
||||||
|
optional = false
|
||||||
|
python-versions = "*"
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
django = ">=1.11.0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "odfpy"
|
name = "odfpy"
|
||||||
version = "1.4.1"
|
version = "1.4.1"
|
||||||
|
@ -1205,7 +1227,7 @@ postgres = ["psycopg2-binary"]
|
||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "1.1"
|
lock-version = "1.1"
|
||||||
python-versions = ">=3.7,<4.0.0"
|
python-versions = ">=3.7,<4.0.0"
|
||||||
content-hash = "c9de646c31e5e1f0b0ff9b003d6290da61eca039c78aef8e6786894584fa37cf"
|
content-hash = "745c33aa94cad303222f51896f0a9a11abdb4896cb00f87f522fe7eaa8c2325a"
|
||||||
|
|
||||||
[metadata.files]
|
[metadata.files]
|
||||||
appdirs = [
|
appdirs = [
|
||||||
|
@ -1414,6 +1436,10 @@ django-js-asset = [
|
||||||
{file = "django-js-asset-1.2.2.tar.gz", hash = "sha256:c163ae80d2e0b22d8fb598047cd0dcef31f81830e127cfecae278ad574167260"},
|
{file = "django-js-asset-1.2.2.tar.gz", hash = "sha256:c163ae80d2e0b22d8fb598047cd0dcef31f81830e127cfecae278ad574167260"},
|
||||||
{file = "django_js_asset-1.2.2-py2.py3-none-any.whl", hash = "sha256:8ec12017f26eec524cab436c64ae73033368a372970af4cf42d9354fcb166bdd"},
|
{file = "django_js_asset-1.2.2-py2.py3-none-any.whl", hash = "sha256:8ec12017f26eec524cab436c64ae73033368a372970af4cf42d9354fcb166bdd"},
|
||||||
]
|
]
|
||||||
|
django-processinfo = [
|
||||||
|
{file = "django-processinfo-1.0.0.tar.gz", hash = "sha256:0df4b3a011a7adb1f6b722964aca4693e79fa003b7f780025cc0d04073f00c49"},
|
||||||
|
{file = "django_processinfo-1.0.0-py3-none-any.whl", hash = "sha256:829e2937a9fae54ef8c0a3cb5e99a09490cf66252cee498de833377839d7e497"},
|
||||||
|
]
|
||||||
django-reversion = [
|
django-reversion = [
|
||||||
{file = "django-reversion-3.0.8.tar.gz", hash = "sha256:49e9930f90322dc6a2754dd26144285cfcc1c5bd0c1c39ca95d5602c5054ae32"},
|
{file = "django-reversion-3.0.8.tar.gz", hash = "sha256:49e9930f90322dc6a2754dd26144285cfcc1c5bd0c1c39ca95d5602c5054ae32"},
|
||||||
{file = "django_reversion-3.0.8-py3-none-any.whl", hash = "sha256:9cfadeec2df37cb53d795ab79f6792f9eed8e70363dcf3a275dc19a58b971a8f"},
|
{file = "django_reversion-3.0.8-py3-none-any.whl", hash = "sha256:9cfadeec2df37cb53d795ab79f6792f9eed8e70363dcf3a275dc19a58b971a8f"},
|
||||||
|
@ -1503,6 +1529,10 @@ mccabe = [
|
||||||
{file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"},
|
{file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"},
|
||||||
{file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"},
|
{file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"},
|
||||||
]
|
]
|
||||||
|
model-bakery = [
|
||||||
|
{file = "model_bakery-1.2.0-py2.py3-none-any.whl", hash = "sha256:b25f400b392067f02d841a0ef33e861543c04b1702dc004020bdd50e1dbce05f"},
|
||||||
|
{file = "model_bakery-1.2.0.tar.gz", hash = "sha256:088698cdf62e5ccedeb97e55ceb966c974cc79e2514928aec9beab27a8c1faf4"},
|
||||||
|
]
|
||||||
odfpy = [
|
odfpy = [
|
||||||
{file = "odfpy-1.4.1-py2.7.egg", hash = "sha256:fc3b8d1bc098eba4a0fda865a76d9d1e577c4ceec771426bcb169a82c5e9dfe0"},
|
{file = "odfpy-1.4.1-py2.7.egg", hash = "sha256:fc3b8d1bc098eba4a0fda865a76d9d1e577c4ceec771426bcb169a82c5e9dfe0"},
|
||||||
{file = "odfpy-1.4.1.tar.gz", hash = "sha256:db766a6e59c5103212f3cc92ec8dd50a0f3a02790233ed0b52148b70d3c438ec"},
|
{file = "odfpy-1.4.1.tar.gz", hash = "sha256:db766a6e59c5103212f3cc92ec8dd50a0f3a02790233ed0b52148b70d3c438ec"},
|
||||||
|
|
|
@ -40,6 +40,7 @@ uWSGI = "*"
|
||||||
# https://www.djangoproject.com/download/#supported-versions
|
# https://www.djangoproject.com/download/#supported-versions
|
||||||
# v2.2 LTS - extended support until April 2022
|
# v2.2 LTS - extended support until April 2022
|
||||||
django = "2.2.*"
|
django = "2.2.*"
|
||||||
|
django-processinfo = "*" # https://github.com/jedie/django-processinfo/
|
||||||
django-debug-toolbar = "*" # http://django-debug-toolbar.readthedocs.io/en/stable/changes.html
|
django-debug-toolbar = "*" # http://django-debug-toolbar.readthedocs.io/en/stable/changes.html
|
||||||
django-import-export = "*" # https://github.com/django-import-export/django-import-export
|
django-import-export = "*" # https://github.com/django-import-export/django-import-export
|
||||||
django-dbbackup = "*" # https://github.com/django-dbbackup/django-dbbackup
|
django-dbbackup = "*" # https://github.com/django-dbbackup/django-dbbackup
|
||||||
|
@ -72,6 +73,7 @@ flake8 = "*"
|
||||||
flynt = "*"
|
flynt = "*"
|
||||||
autopep8 = "*"
|
autopep8 = "*"
|
||||||
pyupgrade = "*"
|
pyupgrade = "*"
|
||||||
|
model_bakery = "*" # https://github.com/model-bakers/model_bakery
|
||||||
|
|
||||||
[tool.poetry.scripts]
|
[tool.poetry.scripts]
|
||||||
manage = "inventory_project.manage:main"
|
manage = "inventory_project.manage:main"
|
||||||
|
|
Ładowanie…
Reference in New Issue