More cleanup
moved login, logout and password change from website app to musicians
This commit is contained in:
33
musicians/templates/musicians/change_password.html
Normal file
33
musicians/templates/musicians/change_password.html
Normal 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 %}
|
||||
107
musicians/templates/musicians/login.html
Normal file
107
musicians/templates/musicians/login.html
Normal 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 %}
|
||||
|
||||
@@ -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),
|
||||
)
|
||||
|
||||
|
||||
@@ -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 } )
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user