diff --git a/src/c3nav/site/static/site/css/c3nav.css b/src/c3nav/site/static/site/css/c3nav.css index 032f7e1c..0606549c 100644 --- a/src/c3nav/site/static/site/css/c3nav.css +++ b/src/c3nav/site/static/site/css/c3nav.css @@ -64,6 +64,10 @@ main.map { main.account form { max-width: 400px; } +#modal-content form button[type=submit] { + display: block; + width: 100%; +} #modal-content :last-child { margin: 0; } diff --git a/src/c3nav/site/templates/site/login.html b/src/c3nav/site/templates/site/login.html index 20159189..e2fd96d8 100644 --- a/src/c3nav/site/templates/site/login.html +++ b/src/c3nav/site/templates/site/login.html @@ -9,6 +9,7 @@ {% csrf_token %} {{ form }} + {% trans 'Create new account' %} {% endblock %} diff --git a/src/c3nav/site/templates/site/register.html b/src/c3nav/site/templates/site/register.html new file mode 100644 index 00000000..21eaba78 --- /dev/null +++ b/src/c3nav/site/templates/site/register.html @@ -0,0 +1,14 @@ +{% extends 'site/base.html' %} +{% load i18n %} + +{% block content %} +
+

{% trans 'Create new account' %}

+ +
+ {% csrf_token %} + {{ form }} + +
+
+{% endblock %} diff --git a/src/c3nav/site/urls.py b/src/c3nav/site/urls.py index dd7a92d4..3db585b7 100644 --- a/src/c3nav/site/urls.py +++ b/src/c3nav/site/urls.py @@ -1,6 +1,6 @@ from django.conf.urls import url -from c3nav.site.views import account_view, login_view, logout_view, map_index, qr_code +from c3nav.site.views import account_view, login_view, logout_view, map_index, qr_code, register_view slug = r'(?P[a-z0-9-_.:]+)' slug2 = r'(?P[a-z0-9-_.:]+)' @@ -17,5 +17,6 @@ urlpatterns = [ url(r'^qr/(?P.*)$', qr_code, name='site.qr'), url(r'^login$', login_view, name='site.login'), url(r'^logout$', logout_view, name='site.logout'), + url(r'^register$', register_view, name='site.register'), url(r'^account/$', account_view, name='site.account'), ] diff --git a/src/c3nav/site/views.py b/src/c3nav/site/views.py index 1162b954..cce05fcc 100644 --- a/src/c3nav/site/views.py +++ b/src/c3nav/site/views.py @@ -5,7 +5,7 @@ import qrcode from django.conf import settings from django.contrib.auth import login, logout from django.contrib.auth.decorators import login_required -from django.contrib.auth.forms import AuthenticationForm +from django.contrib.auth.forms import AuthenticationForm, UserCreationForm from django.core.serializers.json import DjangoJSONEncoder from django.http import HttpResponse, HttpResponseBadRequest from django.shortcuts import redirect, render @@ -148,6 +148,26 @@ def logout_view(request): return close_response(request) +@never_cache +def register_view(request): + if request.user.is_authenticated: + return close_response(request) + + if request.method == 'POST': + form = UserCreationForm(data=request.POST) + if form.is_valid(): + user = form.save() + login(request, user) + return close_response(request) + else: + form = UserCreationForm() + + for field in form.fields.values(): + field.help_text = None + + return render(request, 'site/register.html', {'form': form}) + + @never_cache @login_required(login_url='site.login') def account_view(request):