More cleanup

moved login, logout and password change from website app to musicians
This commit is contained in:
Martin Bauer
2014-01-11 15:01:40 +01:00
parent 1aa97e53d3
commit 010efe137e
13 changed files with 202 additions and 163 deletions

View File

@@ -0,0 +1,33 @@
{% extends "website/base.html" %}
{% load crispy_forms_tags %}
<!-- No Feature slider -->
{% block feature_slider %}
{% endblock %}
<!-- Static Navbar at top -->
{% block navbar_options %} navbar navbar-inverse navbar-static-top {% endblock %}
{% block content %}
<div class="container">
<div class="row">
<h3>Passwort ändern</h3>
<div class="span12">
<form method="post">
{% csrf_token %}
{{ form }}
<br>
<input type="submit" class="btn btn-primary" value="Speichern"></input>
</form>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,107 @@
{% extends "website/base.html" %}
{% load sekizai_tags staticfiles %}
<!-- Static Navbar at top -->
{% block navbar_options %} navbar navbar-inverse navbar-static-top {% endblock %}
<!-- No Feature slider -->
{% block feature_slider %}
{% endblock %}
{% block menu_contents %}
{% endblock %}
{% block content %}
{% addtoblock "css" strip %}<link rel="stylesheet" href="{{STATIC_URL}}/css/lib/animate.css" type="text/css" media="screen, projection">{% endaddtoblock %}
{% addtoblock "css" strip %}<link rel="stylesheet" href="{{STATIC_URL}}/css/sign-in.css" type="text/css" media="screen" /> {% endaddtoblock %}
{% addtoblock "js" strip %} <script src="{{STATIC_URL}}/js/jquery.noty.js"></script> {% endaddtoblock %}
{% addtoblock "css" strip %}<link rel="stylesheet" href="{{STATIC_URL}}/css/jquery.noty.css" type="text/css" media="screen" /> {% endaddtoblock %}
{% addtoblock "css" strip %}<link rel="stylesheet" href="{{STATIC_URL}}/css/noty_theme_default.css" type="text/css" media="screen" /> {% endaddtoblock %}
<!-- For Autocompete -->
{% addtoblock "js" strip %} <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script> {% endaddtoblock %}
{% addtoblock "css" strip %}<link rel="stylesheet" href="{{STATIC_URL}}/css/jquery-ui-1.8.21.custom.css" type="text/css" media="screen" /> {% endaddtoblock %}
<!-- Notifications -->
{% addtoblock "js" %}
<script>
$(document).ready(function(){
$('#loginform').submit(function(e){
$.ajax({
type:"POST",
url:"",
data:$('#loginform').serialize(),
dataType: "json",
success: function( data )
{
if ( data['err'] ) {
noty ( { "text": data['err'],"layout":"top","type":"error" } )
}
if ( data['redirect']) {
window.location.href = data['redirect'];
}
}
});
e.preventDefault();
});
$.get( "/musicians/login/usernames", function( data ) {
$("#username").autocomplete( { source: data } );
});
});
</script>
{% endaddtoblock %}
<div id="sign_in">
<div class="container">
<div class="row">
<div class="span12 header">
<h4>Login zum internen Bereich</h4>
<p>Hier dürfen nur Ensemble Mitglieder rein... </p>
</div>
<div class="span12 footer" action="index.html" method="post">
<form id="loginform">
{% csrf_token %}
<input name="username" type="text" placeholder="Benutzername" id="username">
<input name="password" type="password" placeholder="Passwort">
<input name="next" type="hidden" value="{{next}}" >
<input type="submit" placeholder="OK" value="einloggen">
</form>
</div>
<div class="span12 proof">
<div class="span6 remember">
<label class="checkbox">
<input id="remember" type="checkbox"> Eingeloggt bleiben
</label>
</div>
<!--
<div class="span3 dosnt">
<a href="reset.html">Passwort vergessen?</a>
</div> -->
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -6,6 +6,9 @@ import musicians.views
urlpatterns = patterns('',
url(r'^$', musicians.views.addressbook ),
url(r'^profile$', musicians.views.own_profile ),
#url(r'^(?P<username>[\w]+)$$', musicians.views.user_edit ),
url(r'^changePassword/$', musicians.views.change_password ),
url(r'^login/$', musicians.views.login_view),
url(r'^login/usernames$', musicians.views.userlistForAutocompletion),
url(r'^logout/$', musicians.views.logout_view),
)

View File

@@ -79,9 +79,76 @@ def addressbook( request ):
return render( request, 'musicians/addressbook.html', context )
############################################################################################################
######################### User Management Views ############################################################
############################################################################################################
from django.contrib.auth.views import password_change
from django.contrib.auth import authenticate, login, logout
from django.shortcuts import redirect
from django.http import HttpResponse
from django.utils import simplejson
from django.contrib.auth.models import User
from datetime import timedelta
def change_password( request ):
return password_change(request, "musicians/change_password.html", post_change_redirect= "/" )
def logout_view(request):
logout( request )
return redirect( login_view )
def userlistForAutocompletion(request):
result = [ u.username for u in User.objects.all() ]
return HttpResponse( simplejson.dumps(result), mimetype='application/json' )
def login_view( request ):
if request.method == 'POST': # If the form has been submitted...
raiseFirstLetter = lambda s: s[:1].upper() + s[1:] if s else ''
username = raiseFirstLetter( request.POST['username'] )
password = request.POST['password']
user = authenticate( username=username, password=password )
result = dict()
result['err'] = ""
if user is not None:
if user.is_active:
if not request.POST.get('remember', None):
# Expire in one year
request.session.set_expiry( timedelta( weeks=52 ) )
else:
# Expire on browser close
request.session.set_expiry( 0 )
login(request, user)
result['redirect'] = "/"
print ( "Setting Redirect" )
if 'next' in request.POST :
result['redirect'] = request.POST["next"]
print ( "Using " + request.POST["next"] )
else:
result['err'] = "Dein Account wurde deaktiviert."
# Return a 'disabled account' error message
else:
result['err'] = "Falscher Benutzername oder falsches Kennwort."
return HttpResponse( simplejson.dumps(result), mimetype='application/json' )
else:
# Check if user already logged in
if request.user.is_authenticated():
return redirect( "/")
if 'next' in request.GET:
nextPage = request.GET['next']
else:
nextPage = "/"
return render( request, 'musicians/login.html', { 'next' : nextPage } )