Browse Source

Cria o Login

pull/328/head^2
Eduardo Calil 10 years ago
parent
commit
9954890316
  1. 12
      base/forms.py
  2. 11
      base/urls.py
  3. 39
      base/views.py
  4. 1
      sapl/settings.py
  5. 13
      templates/base.html
  6. 67
      templates/base/login.html

12
base/forms.py

@ -1,6 +1,7 @@
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Fieldset, Layout from crispy_forms.layout import HTML, Fieldset, Layout
from django import forms from django import forms
from django.contrib.auth.forms import AuthenticationForm
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.forms import ModelForm from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
@ -108,3 +109,14 @@ class CasaLegislativaTabelaAuxForm(ModelForm):
) )
) )
super(CasaLegislativaTabelaAuxForm, self).__init__(*args, **kwargs) super(CasaLegislativaTabelaAuxForm, self).__init__(*args, **kwargs)
class LoginForm(AuthenticationForm):
username = forms.CharField(label="Username", max_length=30,
widget=forms.TextInput(
attrs={
'class': 'form-control', 'name': 'username'}))
password = forms.CharField(label="Password", max_length=30,
widget=forms.TextInput(
attrs={
'class': 'form-control', 'name': 'password'}))

11
base/urls.py

@ -1,12 +1,15 @@
from django.conf.urls import url from django.conf.urls import url
from django.contrib.auth import views
from django.contrib.staticfiles.urls import staticfiles_urlpatterns from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.views.generic.base import TemplateView from django.views.generic.base import TemplateView
from .apps import AppConfig from .apps import AppConfig
from .views import CasaLegislativaTableAuxView, HelpView, login, logout from .forms import LoginForm
from .views import CasaLegislativaTableAuxView, HelpView
app_name = AppConfig.name app_name = AppConfig.name
urlpatterns = [ urlpatterns = [
url(r'^sistema/', TemplateView.as_view(template_name='sistema.html')), url(r'^sistema/', TemplateView.as_view(template_name='sistema.html')),
url(r'^ajuda/(?P<topic>\w+)$', HelpView.as_view(), name='help_topic'), url(r'^ajuda/(?P<topic>\w+)$', HelpView.as_view(), name='help_topic'),
@ -15,8 +18,10 @@ urlpatterns = [
url(r'^casa-legislativa$', url(r'^casa-legislativa$',
CasaLegislativaTableAuxView.as_view(), name='casa_legislativa'), CasaLegislativaTableAuxView.as_view(), name='casa_legislativa'),
url(r'^login/$', login, name='login'), url(r'^login/$', views.login, {
url(r'^logout/$', logout, name='logout'), 'template_name': 'base/login.html', 'authentication_form': LoginForm},
name='login'),
url(r'^logout/$', views.logout, {'next_page': '/login'}, name='logout')
] ]
# Fix a static asset finding error on Django 1.9 + gunicorn: # Fix a static asset finding error on Django 1.9 + gunicorn:

39
base/views.py

@ -1,17 +1,11 @@
import os import os
from functools import lru_cache from functools import lru_cache
import django.contrib.auth.views
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Hidden, Submit
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.views.generic import FormView from django.views.generic import FormView
from django.views.generic.base import TemplateView from django.views.generic.base import TemplateView
from .areas import areas_em_pares
from .forms import CasaLegislativaTabelaAuxForm from .forms import CasaLegislativaTabelaAuxForm
from .models import CasaLegislativa from .models import CasaLegislativa
@ -72,36 +66,3 @@ class CasaLegislativaTableAuxView(FormView):
def get_success_url(self): def get_success_url(self):
return reverse('base:casa_legislativa') return reverse('base:casa_legislativa')
def index(request):
"""Página Inicial"""
return render(request, 'home.html', {'areas': areas_em_pares})
def login(request):
"""Página de Login"""
helper = FormHelper()
helper.form_id = 'login-form'
helper.form_class = 'form-horizontal'
helper.label_class = 'col-lg-1'
helper.field_class = 'col-lg-3'
helper.form_method = 'post'
login_path = reverse('base:login')
helper.form_action = login_path
next_path = request.REQUEST.get('next', '/')
if next_path == login_path:
next_path = '/'
helper.add_input(Hidden('next', next_path))
helper.add_input(Submit('submit', 'Submit'))
return django.contrib.auth.views.login(request,
extra_context={'helper': helper})
def logout(request):
django.contrib.auth.views.logout(request)
return HttpResponseRedirect(request.GET.get('next', '/'))

1
sapl/settings.py

@ -30,6 +30,7 @@ DEBUG = config('DEBUG', default=False, cast=bool)
ALLOWED_HOSTS = ['*'] ALLOWED_HOSTS = ['*']
LOGIN_REDIRECT_URL = '/'
# SAPL business apps in dependency order # SAPL business apps in dependency order
SAPL_APPS = ( SAPL_APPS = (

13
templates/base.html

@ -103,14 +103,21 @@
</ul> </ul>
<ul class="nav navbar-nav navbar-right"> <ul class="nav navbar-nav navbar-right">
<li><a href="#">Login</a></li> {% if not user.is_authenticated %}
<li><a href="{% url 'base:login' %}?next={{ current_path }}">Login</a></li>
{% else %}
<li class="dropdown"> <li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
João da Silva {% if user.first_name or user.last_name %}
{{ user.get_full_name }}
{% else %}
{{ user.username }}
{% endif %}
<span class="caret"></span> <span class="caret"></span>
</a> </a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="#">Sair</a></li> <li><a href="{% url 'base:logout' %}?next={{ current_path }}">Sair</a></li>
{% endif %}
</ul> </ul>
</li> </li>
</ul> </ul>

67
templates/base/login.html

@ -0,0 +1,67 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% block base_content %}
{% if form.errors %}
<p>Usuário e/ou Senha inexistente. Tente novamente.</p>
{% endif %}
{% if next %}
{% if user.is_authenticated %}
<p>Você não tem acesso a esta página. Se quiser continuar, faça o Login.</p>
{% else %}
<p>Por favor, faça o Login para acessar esta página.</p>
{% endif %}
{% endif %}
<div class="container">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="login-panel panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Entrar</h3>
</div>
<div class="panel-body">
<form method="post" action="{% url 'base:login' %}">
{% csrf_token %}
<p class="bs-component">
<table>
<tr>
<td><b>Usuário</b></td>
<td>{{ form.username }}</td>
</tr>
<tr>
<td><b>Senha</b></td>
<td>{{ form.password }}</td>
</tr>
</table>
</p>
<p class="bs-component">
<center>
<input class="btn btn-success btn-sm" type="submit" value="login" />
</center>
</p>
<input type="hidden" name="next" value="{{ next }}" />
</form>
</div>
</div>
</div>
</div>
</div>
{% endblock base_content %}
{% block javascript %}
<script>
{% if not user.is_authenticated %}
$("ul.nav.navbar-nav.navbar-right").css("display","none");
{% endif %}
</script>
{% endblock %}
Loading…
Cancel
Save