Added new registration system

This commit is contained in:
2018-01-25 00:18:13 -05:00
parent ae663a1ef9
commit f3dca67ec4
11 changed files with 214 additions and 72 deletions

View File

@ -141,7 +141,7 @@
<a class="col-4 text-center pt-5" href="{% url 'attorney' attorney.id %}">
<div>
<img class="pb-3" src="/media/{{ attorney.image }}" style="width: auto; max-width: 100%; height: 200px"/>
<h5 class="text-dark-primary">{{ attorney.name }}</h5>
<h5 class="text-dark-primary">{{ attorney.first_name }} {{ attorney.last_name }}</h5>
<span class="text-light-primary">{{ attorney.position }}</span>
<hr>
</div>

View File

@ -1,5 +1,6 @@
{% extends 'base.html' %}
{% load static %}
{% load widget_tweaks %}
{% block head %}
<style>
@ -19,20 +20,20 @@
</style>
<script>
$(function() {
$('#register-mode').click(function() {
$(function () {
$('#register-mode').click(function () {
$('#login-form').collapse('hide');
$('#register-form').collapse('show');
$('#reset-form').collapse('hide');
});
$('#login-mode').click(function() {
$('#login-mode').click(function () {
$('#login-form').collapse('show');
$('#register-form').collapse('hide');
$('#reset-form').collapse('hide');
});
$('#forgot-password').click(function() {
$('#forgot-password').click(function () {
$('#login-form').collapse('hide');
$('#register-form').collapse('hide');
$('#reset-form').collapse('show');
@ -42,12 +43,18 @@
$('#login-form input[name="username"]').css('border-color', '#ff0000').effect('shake');
$('#login-form input[name="password"]').css('border-color', '#ff0000').effect('shake');
{% endif %}
{% if register.errors %}
$('#login-form').collapse('hide');
$('#register-form').collapse('show');
$('#reset-form').collapse('hide');
{% endif %}
});
</script>
{% endblock %}
{% block body %}
<div class="col-sm-11 col-md-6 col-lg-4 col-xl-2 mx-auto mt-5 p-5 login">
<div class="col-11 col-md-8 col-lg-6 col-xl-4 mx-auto mt-5 p-5 login">
<div class="form">
<div class="my-4">
<img src="{% static 'main/img/logo.png' %}" height="30px" width="auto">
@ -62,32 +69,96 @@
<form id="login-form" class="collapse show" method="post">
{% csrf_token %}
<input type="hidden" name="request" value="login">
<input type="text" class="form-control mb-2 p-2" name="username" placeholder="Username"/>
<input type="text" class="form-control mb-2 p-2" name="username" placeholder="Email"/>
<input type="password" class="form-control mb-2 p-2" name="password" placeholder="Password"/>
<button class="btn btn-primary col-12 mb-2 p-2">login</button>
<p class="d-inline-block text-muted curs-pointer"><a id="register-mode">Register</a></p>
{% if failed %}
<p class="d-inline-block text-muted curs-pointer float-right"><a id="forgot-password">Forgot Password</a></p>
<p class="d-inline-block text-muted curs-pointer float-right"><a id="forgot-password">Forgot
Password</a></p>
{% endif %}
</form>
<form id="register-form" class="collapse" method="post">
<form id="register-form" class="collapse" method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="hidden" name="request" value="register">
<input type="text" class="form-control mb-2 p-2" name="username" placeholder="Username"/>
<input type="text" class="form-control mb-2 p-2" name="email" placeholder="Email"/>
<input type="password" class="form-control mb-2 p-2" name="password" placeholder="Password"/>
<input type="password" class="form-control mb-2 p-2" placeholder="Confirm Password"/>
<div class="col-12 px-0">
<input id="newsletter" type="checkbox" class="mb-2 curs-pointer" name="newsletter">
<label for="newsletter" class="curs-pointer">Newsletter</label>
{% if register.errors %}
<div class="alert alert-danger" role="alert">
{% for key, value in register.errors.items %}
{{ value }}
{% endfor %}
</div>
{% endif %}
<h3>General Information</h3>
<div class="form-row">
<div class="form-group col-6">
{{ register.first_name|add_class:"form-control"|attr:"placeholder:First Name" }}
</div>
<div class="form-group col-6">
{{ register.last_name|add_class:"form-control"|attr:"placeholder:Last Name" }}
</div>
<div class="form-group col-6">
{{ register.password1|add_class:"form-control"|attr:"placeholder:Password" }}
</div>
<div class="form-group col-6">
{{ register.password2|add_class:"form-control"|attr:"placeholder:Confirm Password" }}
</div>
<div class="form-group col-6">
{{ register.phone|add_class:"form-control"|attr:"placeholder:Phone Number" }}
</div>
<div class="form-group col-6">
{{ register.email|add_class:"form-control"|attr:"placeholder:Email" }}
</div>
<div class="form-group col-8">
{{ register.address|add_class:"form-control"|attr:"placeholder:Address" }}
</div>
<div class="form-group col-4">
{{ register.region|add_class:"form-control"}}
</div>
<div class="form-group col-12">
{{ register.website|add_class:"form-control"|attr:"placeholder:Website" }}
</div>
</div>
<div class="col-12 px-0">
<input id="caselaw" type="checkbox" class="mb-2 curs-pointer" name="caselaw">
<label for="caselaw" class="curs-pointer">Case Law Access</label>
<h3>Attorney Information</h3>
<div class="form-row">
<div class="form-group col-6">
{{ register.call_to_bar|add_class:"form-control"|attr:"placeholder:Year of Call to Bar" }}
</div>
<div class="form-group col-6">
{{ register.lso|add_class:"form-control"|attr:"placeholder:LSO #" }}
</div>
<div class="form-group col-12">
Portrait
{{ register.image|add_class:"form-control" }}
</div>
<div class="form-group col-12">
{{ register.biography|add_class:"form-control"|attr:"placeholder:Biography" }}
</div>
</div>
<h3>Other</h3>
<div class="form-row">
<div class="form-group col-12">
<div class="form-check">
{{ register.newsletter|add_class:"form-check-input" }} <label class="form-check-label">Receive
newsletters</label>
</div>
</div>
<div class="form-group col-12">
<div class="form-check">
{{ register.case_law|add_class:"form-check-input" }} <label class="form-check-label">Request
access to case law database</label>
</div>
</div>
<div class="form-group col-12">
{{ register.provide_training|add_class:"form-control"|attr:"placeholder:Training I am willing to provide..." }}
</div>
<div class="form-group col-12">
{{ register.request_training|add_class:"form-control"|attr:"placeholder:Training I would like to recieve..." }}
</div>
</div>
<button class="btn btn-primary col-12 mb-2 p-2">Register</button>
<p class="text-muted curs-pointer"><a id="login-mode">Login</a></p>
<p class="d-inline-block text-muted curs-pointer"><a id="login-mode">Login</a></p>
</form>
<form id="reset-form" class="collapse" method="post">

View File

@ -1,14 +1,11 @@
from django.http import JsonResponse
from django.contrib import auth
from django.contrib.auth.models import Group, User, Permission
from django.core import mail
from django.db.models import Q
from django.shortcuts import render, redirect
from django.template.loader import render_to_string
from charter_members.forms import RegisterForm
from OACPL.utils import url_fix_render_to_string
from charter_members.models import Attorney
from newsletters.models import Subscriber
from OACPL import settings
@ -33,33 +30,23 @@ def contact(request):
def login(request):
if request.method == 'POST':
if request.POST.get('request') == 'login':
if request.POST.get('request') == 'register':
register_form = RegisterForm(request.POST, request.FILES)
if register_form.is_valid():
user = register_form.save()
auth.login(request, user)
return redirect('/')
elif request.POST.get('request') == 'login':
user = auth.authenticate(request, username=request.POST.get('username'), password=request.POST.get('password'))
if user:
auth.login(request, user)
return redirect('/')
else:
return render(request, 'login.html', {'navbar': False, 'footer': False, 'failed': True})
elif request.POST.get('request') == 'register':
user = User.objects.create_user(request.POST.get('username'), email=request.POST.get('email'), password=request.POST.get('password'))
user.save()
default_group = Group.objects.filter(name='default')
if default_group:
default_group[0].user_set.add(user)
if settings.EMAIL_HOST:
mail.send_mail('OACPL Registration', 'You have successfully registered to the Ontario Association of Child Protection Lawyers!', settings.EMAIL_HOST_USER, [request.POST.get('email')], html_message=render_to_string('email.html', {'content': 'You have successfully registered to the Ontario Association of Child Protection Lawyers!', 'name': user.username, 'base_url': settings.BASE_URL}))
if request.POST.get('newsletter'):
Subscriber.objects.create(email=request.POST.get('email'))
if request.POST.get('caselaw'):
perm = Permission.objects.get(codename='change_user')
admins = User.objects.filter(Q(groups__permissions=perm) | Q(user_permissions=perm) | Q(is_superuser=True)).distinct().values_list('email', flat=True)
mail.send_mail('OACPL Case Law Request', '{} {} ({}) has requested access to case law'.format(user.first_name, user.last_name, user.email), settings.EMAIL_HOST_USER, admins, html_message=render_to_string('email.html', {'content': '{} {} ({}) has requested access to case law'.format(user.first_name, user.last_name, user.email), 'base_url': settings.BASE_URL}))
auth.login(request, user)
return redirect('/')
else:
return render(request, 'login.html', {'navbar': False, 'footer': False})
if 'register_form' not in vars():
register_form = RegisterForm()
return render(request, 'login.html', {'navbar': False, 'footer': False, 'register': register_form})
def logout(request):