Compare commits

...

3 Commits

6 changed files with 24 additions and 6 deletions

View File

@ -1,6 +1,11 @@
Changelog Changelog
========= =========
0.8.6
-----
* Allow overriding home url
0.8.5 0.8.5
----- -----

View File

@ -15,7 +15,7 @@
{% if not is_popup %} {% if not is_popup %}
<nav id="navbar-main" role="navigation"> <nav id="navbar-main" role="navigation">
<div class="navbar-header"> <div class="navbar-header">
<a class="navbar-brand" href="{% url "gas:index" %}"><img id="logo" src="{% static logo_static_url %}"></a> <a class="navbar-brand" href="{{ home_url }}"><img id="logo" src="{% static logo_static_url %}"></a>
</div> </div>
<ul id="main-navigation"> <ul id="main-navigation">
<li>{{ user }}</li> <li>{{ user }}</li>
@ -41,7 +41,7 @@
{% if not is_popup %} {% if not is_popup %}
<nav class="breadcrumb"> <nav class="breadcrumb">
<ol> <ol>
<li><a href="{% url "gas:index" %}" title="{% trans "Home" %}"><i class="fas fa-home fa-fw"></i></a></li> <li><a href="{{ home_url }}" title="{% trans "Home" %}"><i class="fas fa-home fa-fw"></i></a></li>
{% for bc_url, bc_label in breadcrumbs %} {% for bc_url, bc_label in breadcrumbs %}
{% if bc_url %} {% if bc_url %}
<li><a href="{{ bc_url }}">{{ bc_label }}</a></li> <li><a href="{{ bc_url }}">{{ bc_label }}</a></li>

View File

@ -228,10 +228,14 @@ class GASMixinTestCase(TestCase):
] ]
template_name = 'gas/base.html' template_name = 'gas/base.html'
def get_home_url(self):
return 'home_url'
view = SampleView.as_view() view = SampleView.as_view()
request = self.request_factory.get('some_url') request = self.request_factory.get('some_url')
request.user = self.admin_user request.user = self.admin_user
response = view(request) response = view(request)
self.assertEqual(response.context_data['home_url'], 'home_url')
self.assertEqual(response.context_data['title'], SampleView.title) self.assertEqual(response.context_data['title'], SampleView.title)
self.assertEqual(response.context_data['header_title'], SampleView.header_title) self.assertEqual(response.context_data['header_title'], SampleView.header_title)
self.assertEqual(response.context_data['help_text'], SampleView.help_text) self.assertEqual(response.context_data['help_text'], SampleView.help_text)
@ -428,7 +432,7 @@ class GASDeleteTestCase(TestCase):
success_url = 'success' success_url = 'success'
confirmation_text = 'delete {object.username}' confirmation_text = 'delete {object.username}'
deleted_text = '{object.username} deleted' deleted_text = '{object.username} deleted'
view = SampleDeleteView.as_view() view = SampleDeleteView.as_view()
request = request_factory.get('some_url') request = request_factory.get('some_url')

View File

@ -83,7 +83,7 @@ class GASMixin:
breadcrumbs = [] breadcrumbs = []
actions = None actions = None
def dispatch(self, *args, **kwargs): def check_user_forbidden(self):
user = self.request.user user = self.request.user
roles = set(self.roles) roles = set(self.roles)
roles.add(self.base_role) roles.add(self.base_role)
@ -93,7 +93,10 @@ class GASMixin:
and user.user_roles.filter(role__in=roles).count() == 0 and user.user_roles.filter(role__in=roles).count() == 0
) )
) )
if access_denied: return access_denied
def dispatch(self, *args, **kwargs):
if self.check_user_forbidden():
return HttpResponseRedirect(reverse('gas:login') + '?next={}'.format(self.request.path)) return HttpResponseRedirect(reverse('gas:login') + '?next={}'.format(self.request.path))
return super().dispatch(*args, **kwargs) return super().dispatch(*args, **kwargs)
@ -107,6 +110,10 @@ class GASMixin:
def get_success_message(self): def get_success_message(self):
return self.success_message return self.success_message
def get_home_url(self):
""" Url for the home of the control panel """
return reverse('gas:index')
def get_cancel_url(self): def get_cancel_url(self):
if self.cancel_url: if self.cancel_url:
# Forcing possible reverse_lazy evaluation # Forcing possible reverse_lazy evaluation
@ -151,6 +158,7 @@ class GASMixin:
js = js + gas_settings.EXTRA_MEDIA.get('js', []) js = js + gas_settings.EXTRA_MEDIA.get('js', [])
ctx.update({ ctx.update({
'base_template': self.base_template, 'base_template': self.base_template,
'home_url': self.get_home_url(),
'header_title': self.get_header_title(), 'header_title': self.get_header_title(),
'title': self.get_title(), 'title': self.get_title(),
'help_text': self.get_help_text(), 'help_text': self.get_help_text(),

View File

@ -10,6 +10,7 @@ def runtests():
if not settings.configured: if not settings.configured:
# Configure test environment # Configure test environment
settings.configure( settings.configure(
SECRET_KEY="test-secret",
DATABASES={ DATABASES={
'default': { 'default': {
'ENGINE': 'django.db.backends.sqlite3', 'ENGINE': 'django.db.backends.sqlite3',

View File

@ -1,6 +1,6 @@
[metadata] [metadata]
name = django-gas name = django-gas
version = 0.8.5 version = 0.8.6
description = An alternative to django admin description = An alternative to django admin
long_description = file: readme.md, changelog.md, collaborators.md long_description = file: readme.md, changelog.md, collaborators.md
long_description_content_type = text/markdown long_description_content_type = text/markdown