Merge pull request #113 from jedie/req_update_20220816

Update requirements
pull/114/head
Jens Diemer 2022-08-19 09:15:54 +02:00 zatwierdzone przez GitHub
commit 8c4d3c8d83
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
10 zmienionych plików z 844 dodań i 263 usunięć

924
poetry.lock wygenerowano

Plik diff jest za duży Load Diff

Wyświetl plik

@ -1,27 +1,5 @@
import os
from django.core.management import call_command
from django.core.management.commands.runserver import Command as RunServerCommand
from django_tools.management.commands.run_testserver import Command as RunServerCommand
class Command(RunServerCommand):
help = "Run Django dev. Server"
def verbose_call(self, command, **kwargs):
self.stdout.write("\n")
self.stdout.write("_" * 79)
self.stdout.write(self.style.NOTICE(f" *** call '{command}' command with {kwargs}:"))
self.stdout.write("\n")
call_command(command, **kwargs)
def handle(self, *args, **options):
"""
INFO: The django reloader will call this multiple times!
We check RUN_MAIN, that will be set in django.utils.autoreload
So we can skip the first migrate run.
"""
if os.environ.get("RUN_MAIN"):
self.verbose_call("migrate", run_syncdb=True, interactive=False, verbosity=1)
self.verbose_call("showmigrations", verbosity=1)
self.verbose_call("runserver", **options)
pass

Wyświetl plik

@ -13,9 +13,6 @@ from inventory_project.settings.base import * # noqa
DEBUG = True
TEMPLATE_DEBUG = True
# Serve static/media files for local development:
SERVE_FILES = True
# Disable caches:
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache'}}
@ -53,11 +50,11 @@ DEFAULT_USERPASS = 'test'
DEFAULT_USEREMAIL = 'nobody@local.intranet'
MIDDLEWARE = MIDDLEWARE.copy()
MIDDLEWARE.append('inventory_project.tests.middleware.AlwaysLoggedInAsSuperUser')
MIDDLEWARE.append('django_tools.middlewares.local_auto_login.AlwaysLoggedInAsSuperUserMiddleware')
# _____________________________________________________________________________
# Django-Debug-Toolbar
INSTALLED_APPS.copy()
INSTALLED_APPS += ['debug_toolbar']
MIDDLEWARE.append('debug_toolbar.middleware.DebugToolbarMiddleware')

Wyświetl plik

@ -1,63 +0,0 @@
import os
import sys
from django.conf import settings
from django.contrib import messages
from django.contrib.auth import authenticate, login
from django.contrib.auth.models import User
def _print_and_message(request, msg, level=messages.WARNING):
print(f' *** {msg} ***', file=sys.stderr)
messages.add_message(request, level, msg)
class AlwaysLoggedInAsSuperUser:
"""
Auto login all users as default superuser.
Default user will be created, if not exist.
Disable it by deactivate the default user.
"""
def __init__(self, get_response):
assert 'RUN_MAIN' in os.environ, 'Only allowed running by Django dev. server !'
self.get_response = get_response
def __call__(self, request):
self._auto_login(request)
response = self.get_response(request)
return response
def _auto_login(self, request):
if request.user.is_authenticated:
return
try:
user = User.objects.get(username=settings.DEFAULT_USERNAME)
except User.DoesNotExist:
_print_and_message(request, f'Create test django user: {settings.DEFAULT_USERNAME!r}')
User.objects.create_superuser(
username=settings.DEFAULT_USERNAME,
email=settings.DEFAULT_USEREMAIL,
password=settings.DEFAULT_USERPASS
)
else:
if not user.is_active:
_print_and_message(request, 'Default User was deactivated!', level=messages.ERROR)
return
user.set_password(settings.DEFAULT_USERPASS)
user.save()
_print_and_message(
request,
f'Autologin applied. Your logged in as {settings.DEFAULT_USERNAME!r}'
)
user = authenticate(
request=request,
username=settings.DEFAULT_USERNAME,
password=settings.DEFAULT_USERPASS
)
login(request, user)

Wyświetl plik

@ -42,7 +42,7 @@
</a>
</li>
<li>
<a href="?create_dt__day=1&create_dt__month=1&create_dt__year=2000">
<a href="?create_dt__day=1&amp;create_dt__month=1&amp;create_dt__year=2000">
January 1
</a>
</li>

Wyświetl plik

@ -160,13 +160,13 @@
---------
</option>
</select>
<a class="related-widget-wrapper-link change-related" data-href-template="/admin/inventory/itemmodel/__fk__/change/?_to_field=id&_popup=1" id="change_id_parent" title="Change selected Item">
<a class="related-widget-wrapper-link change-related" data-href-template="/admin/inventory/itemmodel/__fk__/change/?_to_field=id&amp;_popup=1" id="change_id_parent" title="Change selected Item">
<img alt="Change" src="/static/admin/img/icon-changelink.svg"/>
</a>
<a class="related-widget-wrapper-link add-related" href="/admin/inventory/itemmodel/add/?_to_field=id&_popup=1" id="add_id_parent" title="Add another Item">
<a class="related-widget-wrapper-link add-related" href="/admin/inventory/itemmodel/add/?_to_field=id&amp;_popup=1" id="add_id_parent" title="Add another Item">
<img alt="Add" src="/static/admin/img/icon-addlink.svg"/>
</a>
<a class="related-widget-wrapper-link delete-related" data-href-template="/admin/inventory/itemmodel/__fk__/delete/?_to_field=id&_popup=1" id="delete_id_parent" title="Delete selected Item">
<a class="related-widget-wrapper-link delete-related" data-href-template="/admin/inventory/itemmodel/__fk__/delete/?_to_field=id&amp;_popup=1" id="delete_id_parent" title="Delete selected Item">
<img alt="Delete" src="/static/admin/img/icon-deletelink.svg"/>
</a>
</div>
@ -186,13 +186,13 @@
---------
</option>
</select>
<a class="related-widget-wrapper-link change-related" data-href-template="/admin/inventory/locationmodel/__fk__/change/?_to_field=id&_popup=1" id="change_id_location" title="Change selected Location">
<a class="related-widget-wrapper-link change-related" data-href-template="/admin/inventory/locationmodel/__fk__/change/?_to_field=id&amp;_popup=1" id="change_id_location" title="Change selected Location">
<img alt="Change" src="/static/admin/img/icon-changelink.svg"/>
</a>
<a class="related-widget-wrapper-link add-related" href="/admin/inventory/locationmodel/add/?_to_field=id&_popup=1" id="add_id_location" title="Add another Location">
<a class="related-widget-wrapper-link add-related" href="/admin/inventory/locationmodel/add/?_to_field=id&amp;_popup=1" id="add_id_location" title="Add another Location">
<img alt="Add" src="/static/admin/img/icon-addlink.svg"/>
</a>
<a class="related-widget-wrapper-link delete-related" data-href-template="/admin/inventory/locationmodel/__fk__/delete/?_to_field=id&_popup=1" id="delete_id_location" title="Delete selected Location">
<a class="related-widget-wrapper-link delete-related" data-href-template="/admin/inventory/locationmodel/__fk__/delete/?_to_field=id&amp;_popup=1" id="delete_id_location" title="Delete selected Location">
<img alt="Delete" src="/static/admin/img/icon-deletelink.svg"/>
</a>
</div>

Wyświetl plik

@ -180,7 +180,7 @@
<div id="content-main">
<ul class="object-tools">
<li>
<a class="historylink" href="/admin/inventory/itemmodel/<removed-UUID>/history/">
<a class="historylink" href="/admin/inventory/itemmodel/&lt;removed-UUID&gt;/history/">
History
</a>
</li>
@ -366,17 +366,17 @@
<option selected="" value="">
---------
</option>
<option value="<removed-UUID>">
<option value="&lt;removed-UUID&gt;">
name
</option>
</select>
<a class="related-widget-wrapper-link change-related" data-href-template="/admin/inventory/itemmodel/__fk__/change/?_to_field=id&_popup=1" id="change_id_parent" title="Change selected Item">
<a class="related-widget-wrapper-link change-related" data-href-template="/admin/inventory/itemmodel/__fk__/change/?_to_field=id&amp;_popup=1" id="change_id_parent" title="Change selected Item">
<img alt="Change" src="/static/admin/img/icon-changelink.svg"/>
</a>
<a class="related-widget-wrapper-link add-related" href="/admin/inventory/itemmodel/add/?_to_field=id&_popup=1" id="add_id_parent" title="Add another Item">
<a class="related-widget-wrapper-link add-related" href="/admin/inventory/itemmodel/add/?_to_field=id&amp;_popup=1" id="add_id_parent" title="Add another Item">
<img alt="Add" src="/static/admin/img/icon-addlink.svg"/>
</a>
<a class="related-widget-wrapper-link delete-related" data-href-template="/admin/inventory/itemmodel/__fk__/delete/?_to_field=id&_popup=1" id="delete_id_parent" title="Delete selected Item">
<a class="related-widget-wrapper-link delete-related" data-href-template="/admin/inventory/itemmodel/__fk__/delete/?_to_field=id&amp;_popup=1" id="delete_id_parent" title="Delete selected Item">
<img alt="Delete" src="/static/admin/img/icon-deletelink.svg"/>
</a>
</div>
@ -396,13 +396,13 @@
---------
</option>
</select>
<a class="related-widget-wrapper-link change-related" data-href-template="/admin/inventory/locationmodel/__fk__/change/?_to_field=id&_popup=1" id="change_id_location" title="Change selected Location">
<a class="related-widget-wrapper-link change-related" data-href-template="/admin/inventory/locationmodel/__fk__/change/?_to_field=id&amp;_popup=1" id="change_id_location" title="Change selected Location">
<img alt="Change" src="/static/admin/img/icon-changelink.svg"/>
</a>
<a class="related-widget-wrapper-link add-related" href="/admin/inventory/locationmodel/add/?_to_field=id&_popup=1" id="add_id_location" title="Add another Location">
<a class="related-widget-wrapper-link add-related" href="/admin/inventory/locationmodel/add/?_to_field=id&amp;_popup=1" id="add_id_location" title="Add another Location">
<img alt="Add" src="/static/admin/img/icon-addlink.svg"/>
</a>
<a class="related-widget-wrapper-link delete-related" data-href-template="/admin/inventory/locationmodel/__fk__/delete/?_to_field=id&_popup=1" id="delete_id_location" title="Delete selected Location">
<a class="related-widget-wrapper-link delete-related" data-href-template="/admin/inventory/locationmodel/__fk__/delete/?_to_field=id&amp;_popup=1" id="delete_id_location" title="Delete selected Location">
<img alt="Delete" src="/static/admin/img/icon-deletelink.svg"/>
</a>
</div>
@ -551,7 +551,7 @@
</td>
<td class="original">
<input id="id_itemimagemodel_set-__prefix__-id" name="itemimagemodel_set-__prefix__-id" type="hidden"/>
<input id="id_itemimagemodel_set-__prefix__-item" name="itemimagemodel_set-__prefix__-item" type="hidden" value="<removed-UUID>"/>
<input id="id_itemimagemodel_set-__prefix__-item" name="itemimagemodel_set-__prefix__-item" type="hidden" value="&lt;removed-UUID&gt;"/>
<input id="id_itemimagemodel_set-__prefix__-position" name="itemimagemodel_set-__prefix__-position" type="hidden" value="0"/>
</td>
<td class="field-preview">
@ -629,7 +629,7 @@
</td>
<td class="original">
<input id="id_itemfilemodel_set-__prefix__-id" name="itemfilemodel_set-__prefix__-id" type="hidden"/>
<input id="id_itemfilemodel_set-__prefix__-item" name="itemfilemodel_set-__prefix__-item" type="hidden" value="<removed-UUID>"/>
<input id="id_itemfilemodel_set-__prefix__-item" name="itemfilemodel_set-__prefix__-item" type="hidden" value="&lt;removed-UUID&gt;"/>
<input id="id_itemfilemodel_set-__prefix__-position" name="itemfilemodel_set-__prefix__-position" type="hidden" value="0"/>
</td>
<td class="field-file">
@ -699,7 +699,7 @@
</td>
<td class="original">
<input id="id_itemlinkmodel_set-__prefix__-id" name="itemlinkmodel_set-__prefix__-id" type="hidden"/>
<input id="id_itemlinkmodel_set-__prefix__-item" name="itemlinkmodel_set-__prefix__-item" type="hidden" value="<removed-UUID>"/>
<input id="id_itemlinkmodel_set-__prefix__-item" name="itemlinkmodel_set-__prefix__-item" type="hidden" value="&lt;removed-UUID&gt;"/>
<input id="id_itemlinkmodel_set-__prefix__-position" name="itemlinkmodel_set-__prefix__-position" type="hidden" value="0"/>
</td>
<td class="field-tags">
@ -733,7 +733,7 @@
<div class="submit-row">
<input class="default" name="_save" type="submit" value="Save"/>
<p class="deletelink-box">
<a class="deletelink" href="/admin/inventory/itemmodel/<removed-UUID>/delete/">
<a class="deletelink" href="/admin/inventory/itemmodel/&lt;removed-UUID&gt;/delete/">
Delete
</a>
</p>

Wyświetl plik

@ -23,16 +23,25 @@ def call_devshell_commands(*args):
class DevShellTestCase(TestCase):
def test_run_testserver(self):
output = call_devshell_commands('run_testserver', '--help')
assert 'usage: manage.py run_testserver' in output
assert 'Run Django dev. Server' in output
assert 'Optional port number, or ipaddr:port' in output
assert 'Setup test project and run django developer server' in output
def test_pass_wrong_addrport(self):
output = call_devshell_commands('run_testserver', 'not-ip:no-port')
assert "call 'runserver' command with" in output
assert (
'CommandError: "not-ip:no-port" is not a valid port number or address:port pair.'
) in output
# From own run_testserver command:
assert '--nomakemigrations' in output
assert '--nomigrate' in output
# From django.core.management.commands.runserver command:
assert '[addrport]' in output
def test_run_testserver_invalid_addr(self):
output = call_devshell_commands(
'run_testserver',
'--nomigrate',
'--nomakemigrations',
'invalid:addr',
)
assert 'Call "runserver"' in output
assert 'is not a valid port number or address' in output
def test_manage_command(self):
output = call_devshell_commands('manage', 'diffsettings')

Wyświetl plik

@ -6,6 +6,7 @@ from pathlib import Path
from creole.setup_utils import update_rst_readme
from django.conf import settings
from django.core import checks
from django.core.cache import cache
from django.test import TestCase
from django_tools.unittest_utils.project_setup import check_editor_config
@ -115,6 +116,21 @@ class ProjectSettingsTestCase(TestCase):
print('=' * 100)
raise AssertionError('There are check issues!')
def test_cache(self):
# django cache should work in tests, because some tests "depends" on it
cache_key = 'a-cache-key'
assert cache.get(cache_key) is None
cache.set(cache_key, 'the cache content', timeout=1)
assert cache.get(cache_key) == 'the cache content'
cache.delete(cache_key)
assert cache.get(cache_key) is None
def test_settings(self):
assert settings.SETTINGS_MODULE == 'inventory_project.settings.tests'
middlewares = [entry.rsplit('.', 1)[-1] for entry in settings.MIDDLEWARE]
assert 'AlwaysLoggedInAsSuperUserMiddleware' not in middlewares
assert 'DebugToolbarMiddleware' not in middlewares
def test_check_editor_config():
check_editor_config(package_root=PACKAGE_ROOT)

Wyświetl plik

@ -1,5 +1,5 @@
from django.conf import settings
from django.conf.urls import include, re_path, static
from django.conf.urls import include, re_path
from django.contrib import admin
from django.urls import path
from django.views.generic import RedirectView
@ -17,10 +17,6 @@ urlpatterns = [ # Don't use i18n_patterns() here
]
if settings.SERVE_FILES:
urlpatterns += static.static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
if settings.DEBUG:
import debug_toolbar
urlpatterns = [re_path(r'^__debug__/', include(debug_toolbar.urls))] + urlpatterns