Compare commits
	
		
			No commits in common. "f2c1a76a1bffe9c42b63e0bb7a0900552b867f5c" and "7c1cd322ed8e8e55ca8a1e9ad9ea25d9945dc184" have entirely different histories.
		
	
	
		
			f2c1a76a1b
			...
			7c1cd322ed
		
	
		| 
						 | 
				
			
			@ -1,15 +1,8 @@
 | 
			
		|||
Changelog
 | 
			
		||||
=========
 | 
			
		||||
 | 
			
		||||
0.7.1
 | 
			
		||||
-----
 | 
			
		||||
 | 
			
		||||
* Fix login view
 | 
			
		||||
* Fix initial roles in user form
 | 
			
		||||
 | 
			
		||||
0.7
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
* Enhance sidebar menu
 | 
			
		||||
* Use all css files on login template
 | 
			
		||||
* Make user admin section optional
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,6 @@
 | 
			
		|||
from django.apps import AppConfig
 | 
			
		||||
from django.utils.translation import gettext_lazy as _
 | 
			
		||||
from django.db.models.signals import post_migrate
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class GASConfig(AppConfig):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,6 @@ class UserForm(forms.ModelForm):
 | 
			
		|||
        label=_('roles'),
 | 
			
		||||
        required=False,
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
        model = User
 | 
			
		||||
        fields = (
 | 
			
		||||
| 
						 | 
				
			
			@ -34,8 +33,8 @@ class UserForm(forms.ModelForm):
 | 
			
		|||
 | 
			
		||||
    def __init__(self, *args, **kwargs):
 | 
			
		||||
        super().__init__(*args, **kwargs)
 | 
			
		||||
        if self.instance.pk is not None:
 | 
			
		||||
            self.initial['roles'] = list(self.instance.user_roles.values_list('role', flat=True))
 | 
			
		||||
        if 'roles' not in self.initial and self.instance.pk is not None:
 | 
			
		||||
            self.initial['roles'] = self.instance.user_roles.values_list('role', flat=True)
 | 
			
		||||
 | 
			
		||||
    def save(self, commit=True):
 | 
			
		||||
        obj = super().save(commit=False)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,30 +6,14 @@ from django.views.generic import TemplateView
 | 
			
		|||
 | 
			
		||||
from gas.views import GASMixin
 | 
			
		||||
 | 
			
		||||
from gas import gas_settings
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class GASLoginView(LoginView):
 | 
			
		||||
class GASLoginView(GASMixin, LoginView):
 | 
			
		||||
    template_name = "gas/login.html"
 | 
			
		||||
 | 
			
		||||
    def get_success_url(self):
 | 
			
		||||
        url = self.get_redirect_url()
 | 
			
		||||
        return url or resolve_url('gas:index')
 | 
			
		||||
 | 
			
		||||
    def get_context_data(self, **kwargs):
 | 
			
		||||
        ctx = super().get_context_data(**kwargs)
 | 
			
		||||
        css = gas_settings.MEDIA['css']
 | 
			
		||||
        js = gas_settings.MEDIA['js']
 | 
			
		||||
        if gas_settings.EXTRA_MEDIA:
 | 
			
		||||
            css = css + gas_settings.EXTRA_MEDIA.get('css', [])
 | 
			
		||||
            js = js + gas_settings.EXTRA_MEDIA.get('js', [])
 | 
			
		||||
        ctx.update({
 | 
			
		||||
            'logo_static_url': gas_settings.LOGO,
 | 
			
		||||
            'css': css,
 | 
			
		||||
            'js': js,
 | 
			
		||||
        })
 | 
			
		||||
        return ctx
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class GASPasswordChangeView(GASMixin, PasswordChangeView):
 | 
			
		||||
    template_name = 'gas/base_form.html'
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +21,6 @@ class GASPasswordChangeView(GASMixin, PasswordChangeView):
 | 
			
		|||
    title = _('Change your password')
 | 
			
		||||
    success_message = _('Password changed.')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Index(GASMixin, TemplateView):
 | 
			
		||||
    main_menu = 'index'
 | 
			
		||||
    template_name = "gas/index.html"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,9 @@
 | 
			
		|||
from collections import namedtuple
 | 
			
		||||
 | 
			
		||||
from django.urls import include, re_path
 | 
			
		||||
from django.core.exceptions import ImproperlyConfigured
 | 
			
		||||
from django.utils.module_loading import autodiscover_modules
 | 
			
		||||
from django.utils.translation import gettext_lazy as _
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Entry:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -148,7 +148,13 @@ class SiteTestCase(TestCase):
 | 
			
		|||
class SampleAppIntegrationTest(TestCase):
 | 
			
		||||
    def test_gas_autodiscover(self):
 | 
			
		||||
        # urls registered
 | 
			
		||||
        reverse('gas:index')
 | 
			
		||||
        reverse('gas:user_list')
 | 
			
		||||
 | 
			
		||||
        # menu registered
 | 
			
		||||
        self.assertIn(
 | 
			
		||||
            'users',
 | 
			
		||||
            site._registry['menu'],
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        # role registered
 | 
			
		||||
        self.assertIn(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,10 +1,11 @@
 | 
			
		|||
import datetime
 | 
			
		||||
import json
 | 
			
		||||
 | 
			
		||||
from django.contrib import messages
 | 
			
		||||
from django.contrib.admin.utils import NestedObjects
 | 
			
		||||
from django.core.exceptions import ImproperlyConfigured
 | 
			
		||||
from django.db import router
 | 
			
		||||
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseBadRequest
 | 
			
		||||
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseBadRequest, HttpResponseNotAllowed
 | 
			
		||||
from django.urls import reverse
 | 
			
		||||
from django.utils.encoding import force_text
 | 
			
		||||
from django.utils.html import escape, escapejs
 | 
			
		||||
| 
						 | 
				
			
			@ -12,7 +13,9 @@ from django.utils.text import capfirst
 | 
			
		|||
from django.utils.translation import gettext_lazy as _
 | 
			
		||||
from django.views.generic import ListView, CreateView, UpdateView, DeleteView
 | 
			
		||||
 | 
			
		||||
from . import forms
 | 
			
		||||
from . import gas_settings
 | 
			
		||||
from .sites import site
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class AjaxCommandsMixin:
 | 
			
		||||
| 
						 | 
				
			
			@ -49,8 +52,8 @@ class GASMixin:
 | 
			
		|||
        roles.add(self.base_role)
 | 
			
		||||
        access_denied = (
 | 
			
		||||
            not user.is_authenticated or (
 | 
			
		||||
                not user.is_superuser
 | 
			
		||||
                and user.user_roles.filter(role__in=roles).count() == 0
 | 
			
		||||
                 not user.is_superuser 
 | 
			
		||||
                 and user.user_roles.filter(role__in=roles).count() == 0
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
        if access_denied:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue