mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Fixes bug introduced by moving to pathlib (#3419)
* Fix typo * Fix bug which prevented rendering of settings page if neither user-agent or user-device was available * Add unit testing for settings page
This commit is contained in:
parent
ab654c3ae7
commit
851683a456
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
from django.contrib.auth import get_user_model
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from InvenTree.helpers import InvenTreeTestCase
|
from InvenTree.helpers import InvenTreeTestCase
|
||||||
@ -41,3 +42,80 @@ class ViewTests(InvenTreeTestCase):
|
|||||||
self.assertIn("<div id='detail-panels'>", content)
|
self.assertIn("<div id='detail-panels'>", content)
|
||||||
|
|
||||||
# TODO: In future, run the javascript and ensure that the panels get created!
|
# TODO: In future, run the javascript and ensure that the panels get created!
|
||||||
|
|
||||||
|
def test_settings_page(self):
|
||||||
|
"""Test that the 'settings' page loads correctly"""
|
||||||
|
|
||||||
|
# Settings page loads
|
||||||
|
url = reverse('settings')
|
||||||
|
|
||||||
|
# Attempt without login
|
||||||
|
self.client.logout()
|
||||||
|
response = self.client.get(url)
|
||||||
|
self.assertEqual(response.status_code, 302)
|
||||||
|
|
||||||
|
# Login with default client
|
||||||
|
self.client.login(username=self.username, password=self.password)
|
||||||
|
|
||||||
|
response = self.client.get(url)
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
content = response.content.decode()
|
||||||
|
|
||||||
|
user_panels = [
|
||||||
|
'account',
|
||||||
|
'user-display',
|
||||||
|
'user-home',
|
||||||
|
'user-reports',
|
||||||
|
]
|
||||||
|
|
||||||
|
staff_panels = [
|
||||||
|
'server',
|
||||||
|
'login',
|
||||||
|
'barcodes',
|
||||||
|
'currencies',
|
||||||
|
'parts',
|
||||||
|
'stock',
|
||||||
|
]
|
||||||
|
|
||||||
|
plugin_panels = [
|
||||||
|
'plugin',
|
||||||
|
]
|
||||||
|
|
||||||
|
# Default user has staff access, so all panels will be present
|
||||||
|
for panel in user_panels + staff_panels + plugin_panels:
|
||||||
|
self.assertIn(f"select-{panel}", content)
|
||||||
|
self.assertIn(f"panel-{panel}", content)
|
||||||
|
|
||||||
|
# Now create a user who does not have staff access
|
||||||
|
pleb_user = get_user_model().objects.create_user(
|
||||||
|
username='pleb',
|
||||||
|
password='notstaff',
|
||||||
|
)
|
||||||
|
|
||||||
|
pleb_user.groups.add(self.group)
|
||||||
|
pleb_user.is_superuser = False
|
||||||
|
pleb_user.is_staff = False
|
||||||
|
pleb_user.save()
|
||||||
|
|
||||||
|
self.client.logout()
|
||||||
|
|
||||||
|
result = self.client.login(
|
||||||
|
username='pleb',
|
||||||
|
password='notstaff',
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertTrue(result)
|
||||||
|
|
||||||
|
response = self.client.get(url)
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
content = response.content.decode()
|
||||||
|
|
||||||
|
# Normal user still has access to user-specific panels
|
||||||
|
for panel in user_panels:
|
||||||
|
self.assertIn(f"select-{panel}", content)
|
||||||
|
self.assertIn(f"panel-{panel}", content)
|
||||||
|
|
||||||
|
# Normal user does NOT have access to global or plugin settings
|
||||||
|
for panel in staff_panels + plugin_panels:
|
||||||
|
self.assertNotIn(f"select-{panel}", content)
|
||||||
|
self.assertNotIn(f"panel-{panel}", content)
|
||||||
|
@ -637,7 +637,8 @@ class SettingsView(TemplateView):
|
|||||||
ctx["rates_updated"] = None
|
ctx["rates_updated"] = None
|
||||||
|
|
||||||
# load locale stats
|
# load locale stats
|
||||||
STAT_FILE = settings.BASE_DIR.joinpath('InvenTree/locale_stats.json').abolute()
|
STAT_FILE = settings.BASE_DIR.joinpath('InvenTree/locale_stats.json').absolute()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
ctx["locale_stats"] = json.load(open(STAT_FILE, 'r'))
|
ctx["locale_stats"] = json.load(open(STAT_FILE, 'r'))
|
||||||
except Exception:
|
except Exception:
|
||||||
|
@ -248,7 +248,11 @@
|
|||||||
{% for object in session_list %}
|
{% for object in session_list %}
|
||||||
<tr {% if object.session_key == session_key %}class="active"{% endif %}>
|
<tr {% if object.session_key == session_key %}class="active"{% endif %}>
|
||||||
<td>{{ object.ip }}</td>
|
<td>{{ object.ip }}</td>
|
||||||
|
{% if object.user_agent or object.device %}
|
||||||
<td>{{ object.user_agent|device|default_if_none:unknown_on_unknown|safe }}</td>
|
<td>{{ object.user_agent|device|default_if_none:unknown_on_unknown|safe }}</td>
|
||||||
|
{% else %}
|
||||||
|
<td>{{ unknown_on_unknown }}</td>
|
||||||
|
{% endif %}
|
||||||
<td>
|
<td>
|
||||||
{% if object.session_key == session_key %}
|
{% if object.session_key == session_key %}
|
||||||
{% blocktrans with time=object.last_activity|timesince %}{{ time }} ago (this session){% endblocktrans %}
|
{% blocktrans with time=object.last_activity|timesince %}{{ time }} ago (this session){% endblocktrans %}
|
||||||
|
Loading…
Reference in New Issue
Block a user