From 69d5a098f830128414f178d9382c65221f06e4bb Mon Sep 17 00:00:00 2001 From: Mitch Riedstra Date: Fri, 10 Nov 2017 15:25:29 -0500 Subject: Initial version of registration system--needs work --- app/app/settings.py | 4 ++++ app/app/urls.py | 11 +++++++++++ app/config-example.yml | 2 +- app/dispatch/templates/dispatch/drivers/edit.html | 6 +++++- app/dispatch/templates/registration/activate.html | 12 +++++++++++ .../registration/activation_complete.html | 14 +++++++++++++ .../templates/registration/activation_email.txt | 4 ++++ .../registration/activation_email_subject.txt | 1 + .../registration/registration_complete.html | 12 +++++++++++ .../templates/registration/registration_form.html | 23 ++++++++++++++++++++++ app/dispatchAuth/admin.py | 4 ++-- app/dispatchAuth/forms.py | 11 +++++++++++ app/dispatchAuth/models.py | 6 ++++++ app/requirements.txt | 1 + 14 files changed, 107 insertions(+), 4 deletions(-) create mode 100644 app/dispatch/templates/registration/activate.html create mode 100644 app/dispatch/templates/registration/activation_complete.html create mode 100644 app/dispatch/templates/registration/activation_email.txt create mode 100644 app/dispatch/templates/registration/activation_email_subject.txt create mode 100644 app/dispatch/templates/registration/registration_complete.html create mode 100644 app/dispatch/templates/registration/registration_form.html create mode 100644 app/dispatchAuth/forms.py diff --git a/app/app/settings.py b/app/app/settings.py index 7e41f74..e19afa5 100644 --- a/app/app/settings.py +++ b/app/app/settings.py @@ -57,7 +57,11 @@ if CONFIG.get('SET_EMAIL'): EMAIL_HOST_USER = CONFIG['EMAIL_HOST_USER'] EMAIL_PORT = CONFIG['EMAIL_PORT'] EMAIL_USE_TLS = CONFIG['EMAIL_USE_TLS'] +else: + print("WARNING EMAIL SETTINGS NOT APPLIED. CHECK CONFIG") + +ACCOUNT_ACTIVATION_DAYS = CONFIG['ACCOUNT_ACTIVATION_DAYS'] AUTH_USER_MODEL = 'dispatchAuth.User' diff --git a/app/app/urls.py b/app/app/urls.py index 19b4449..78d4239 100644 --- a/app/app/urls.py +++ b/app/app/urls.py @@ -18,7 +18,18 @@ from django.conf.urls import include, url from django.conf.urls.static import static from django.contrib import admin +from registration.backends.hmac.views import RegistrationView +from dispatchAuth.forms import UserForm + urlpatterns = [ url(r'^', include('dispatch.urls')), + # Override registration form + url(r'^accounts/register/$', + RegistrationView.as_view( + form_class=UserForm + ), + name='registration_register', + ), + url(r'^accounts/', include('registration.backends.hmac.urls')), url(r'^admin/', admin.site.urls), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/app/config-example.yml b/app/config-example.yml index 7954e08..361ae28 100644 --- a/app/config-example.yml +++ b/app/config-example.yml @@ -35,7 +35,7 @@ SECRET_KEY: 'h$r_bwlp@#h#y#%&qhw-n=gb2%wva1d_h65+o94u&!a#%iv&lo' admins: - 'bob@example.com' - +ACCOUNT_ACTIVATION_DAYS: 7 # Email settings won't be loaded from this file if this is false SET_EMAIL: False diff --git a/app/dispatch/templates/dispatch/drivers/edit.html b/app/dispatch/templates/dispatch/drivers/edit.html index ef27923..35dc15f 100644 --- a/app/dispatch/templates/dispatch/drivers/edit.html +++ b/app/dispatch/templates/dispatch/drivers/edit.html @@ -10,7 +10,11 @@
{% csrf_token %} - {{ form.as_p }} + {% for field in form %} +

+ {{field.label_tag}} {{field}} +

+ {% endfor %}
{% endblock %} diff --git a/app/dispatch/templates/registration/activate.html b/app/dispatch/templates/registration/activate.html new file mode 100644 index 0000000..f8da830 --- /dev/null +++ b/app/dispatch/templates/registration/activate.html @@ -0,0 +1,12 @@ +{% extends 'dispatch/base.html' %} + +{% block title %}Register{% endblock %} + +{% block content %} +
+
+

Sorry, we do not have an activation key that matches what you've + provided. Please submit a new registration request.

+
+ +{% endblock %} diff --git a/app/dispatch/templates/registration/activation_complete.html b/app/dispatch/templates/registration/activation_complete.html new file mode 100644 index 0000000..6f8929e --- /dev/null +++ b/app/dispatch/templates/registration/activation_complete.html @@ -0,0 +1,14 @@ +{% extends 'dispatch/base.html' %} + +{% block title %}Register{% endblock %} + +{% block content %} +
+
+

+ Your Account activation was successful! +

+
+
+ +{% endblock %} diff --git a/app/dispatch/templates/registration/activation_email.txt b/app/dispatch/templates/registration/activation_email.txt new file mode 100644 index 0000000..66b7b05 --- /dev/null +++ b/app/dispatch/templates/registration/activation_email.txt @@ -0,0 +1,4 @@ +Activation key: {{activation_key}} +Site: {{site}} +Expiration date: {{expiration_days}} +User model {{user}} diff --git a/app/dispatch/templates/registration/activation_email_subject.txt b/app/dispatch/templates/registration/activation_email_subject.txt new file mode 100644 index 0000000..5c9c72f --- /dev/null +++ b/app/dispatch/templates/registration/activation_email_subject.txt @@ -0,0 +1 @@ +Activation request for {{user.first_name}} {{user.last_name}} at {{site}} diff --git a/app/dispatch/templates/registration/registration_complete.html b/app/dispatch/templates/registration/registration_complete.html new file mode 100644 index 0000000..579b914 --- /dev/null +++ b/app/dispatch/templates/registration/registration_complete.html @@ -0,0 +1,12 @@ +{% extends 'dispatch/base.html' %} + +{% block title %}Register{% endblock %} + +{% block content %} +
+
+

A registration request has been sent. Please check the email you provided for further instructions

+
+
+ +{% endblock %} diff --git a/app/dispatch/templates/registration/registration_form.html b/app/dispatch/templates/registration/registration_form.html new file mode 100644 index 0000000..eda9294 --- /dev/null +++ b/app/dispatch/templates/registration/registration_form.html @@ -0,0 +1,23 @@ +{% extends 'dispatch/base.html' %} + +{% block title %}Register{% endblock %} + +{% block content %} +
+
+

Send a registration request with the following form

+
+
+ +
{% csrf_token %} + {% for field in form %} +

+ {{field.label_tag}} {{field}} +

+ {% endfor %} +
+ +
+
+ +{% endblock %} diff --git a/app/dispatchAuth/admin.py b/app/dispatchAuth/admin.py index 38ec7a6..d65390c 100644 --- a/app/dispatchAuth/admin.py +++ b/app/dispatchAuth/admin.py @@ -1,7 +1,7 @@ from django import forms from django.contrib import admin from django.contrib.auth.models import Group -from django.contrib.auth.admin import UserAdmin as BaseUserAdmin +from django.contrib.auth.admin import UserAdmin as BaseUserAdmin, UserAdmin from django.contrib.auth.forms import ReadOnlyPasswordHashField # Register your models here. @@ -55,7 +55,7 @@ class UserChangeForm(forms.ModelForm): return self.initial["password"] -class UserAdmin(BaseUserAdmin): +class UserAdmin(UserAdmin): # The forms to add and change user instances form = UserChangeForm add_form = UserCreationForm diff --git a/app/dispatchAuth/forms.py b/app/dispatchAuth/forms.py new file mode 100644 index 0000000..99781f7 --- /dev/null +++ b/app/dispatchAuth/forms.py @@ -0,0 +1,11 @@ +from registration.forms import RegistrationForm +from .models import User + + +class UserForm(RegistrationForm): + # fields = ['email', 'first_name', 'last_name'] + # model = User + + class Meta: + fields = ['email', 'first_name', 'last_name'] + model = User diff --git a/app/dispatchAuth/models.py b/app/dispatchAuth/models.py index 49e0a41..3132f1d 100644 --- a/app/dispatchAuth/models.py +++ b/app/dispatchAuth/models.py @@ -1,4 +1,5 @@ from django.contrib.auth.models import AbstractUser, AbstractBaseUser, PermissionsMixin, BaseUserManager +from django.core.mail import send_mail from django.core.urlresolvers import reverse from django.db import models @@ -66,6 +67,11 @@ class User(PermissionsMixin, AbstractBaseUser): def __str__(self): return self.email + def email_user(self, subject, message, from_email=None, **kwargs): + """Send an email to this user.""" + send_mail(subject, message, from_email, [self.email], **kwargs) + + @property def is_staff(self): return self.is_superuser diff --git a/app/requirements.txt b/app/requirements.txt index 54570ed..32af6d8 100644 --- a/app/requirements.txt +++ b/app/requirements.txt @@ -9,3 +9,4 @@ pytz==2017.2 PyYAML==3.12 six==1.10.0 mysqlclient==1.3.12 +git+git://github.com/ubernostrum/django-registration@1347aeb7347a62b2dc7ba1a225d3a1cd031a4b42 -- cgit v1.2.3