Temp commit for register feature

This commit is contained in:
brett 2017-10-04 17:31:16 +01:00
parent dae32a0bba
commit bd87789d88
11 changed files with 121 additions and 0 deletions

View File

@ -42,6 +42,8 @@ ST_ALLOWED_URL_PROTOCOLS = {
ST_UNICODE_SLUGS = True
ST_UNIQUE_EMAILS = True
ST_CASE_INSENSITIVE_EMAILS = True
ST_UPLOAD_IMAGE_ENABLED = True
ST_UPLOAD_FILE_ENABLED = True
# Tests helpers
ST_TESTS_RATELIMIT_NEVER_EXPIRE = False
@ -138,6 +140,7 @@ LOCAL_APPS = (
'mhackspace.blog',
'mhackspace.core',
'mhackspace.requests',
'mhackspace.register',
)
# See: https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps

View File

@ -20,6 +20,7 @@ from mhackspace.blog.views import PostViewSet, CategoryViewSet, BlogPost, PostLi
from mhackspace.blog.sitemaps import PostSitemap, CategorySitemap
from mhackspace.feeds.views import FeedViewSet, ArticleViewSet
from mhackspace.requests.views import RequestsForm, RequestsList
from mhackspace.register.views import RegisterForm
from wiki.urls import get_pattern as get_wiki_pattern
from django_nyt.urls import get_pattern as get_nyt_pattern
@ -83,6 +84,9 @@ urlpatterns = [
url(r'^admin/password_reset/done/$', auth_views.password_reset_done, name='password_reset_done'),
url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>.+)/$', auth_views.password_reset_confirm, name='password_reset_confirm'),
url(r'^reset/done/$', auth_views.password_reset_complete, name='password_reset_complete'),
url(r'^register/$', RegisterForm.as_view(), name='register_form'),
url(r'^register/success$', TemplateView.as_view(template_name='pages/register.html'), name='register_success'),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += [

View File

View File

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

View File

@ -0,0 +1,5 @@
from django.apps import AppConfig
class RegisterConfig(AppConfig):
name = 'register'

View File

@ -0,0 +1,8 @@
from django import forms
from mhackspace.register.models import RegisteredUser
class RegisteredUserForm(forms.ModelForm):
class Meta:
model = RegisteredUser
exclude = ['user', 'created_at']

View File

@ -0,0 +1,12 @@
from django.db import models
import datetime
class RegisteredUserManager(models.Manager):
def is_registered(self, name):
if name is None:
return False
today = datetime.date.today() - datetime.timedelta(days=1)
return super(RegisteredUserManager, self).get_queryset().filter(name=name, created_at__gt=today).exists()

View File

@ -0,0 +1,15 @@
from django.db import models
from django.conf import settings
from django.utils import timezone
from mhackspace.register.managers import RegisteredUserManager
class RegisteredUser(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='+')
name = models.CharField(max_length=100)
created_at = models.DateTimeField(default=timezone.now)
objects = RegisteredUserManager()
class Meta:
ordering = ('-created_at',)

View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

View File

@ -0,0 +1,30 @@
from django.views.generic.edit import FormView
from mhackspace.register.forms import RegisteredUserForm
from mhackspace.register.models import RegisteredUser
class RegisterForm(FormView):
template_name = 'pages/register.html'
form_class = RegisteredUserForm
success_url = '/register/success'
def get(self, request, *args, **kwargs):
name = request.POST.get('name')
if RegisteredUser.objects.is_registered(name):
return self.form_valid()
if request.user.is_authenticated():
form_kwargs = self.get_form_kwargs()
form_kwargs['data'] = {
'user': request.user,
'name': request.user.name
}
form = self.get_form_class(**form_kwargs)
return self.form_valid(form)
return super(RegisterForm, self).get(self, request, *args, **kwargs)
# Need to prevent a user registering twice
# Need to think of a way to prevent people registering multiple times with different names

View File

@ -0,0 +1,38 @@
{% extends "base.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% load recapture %}
{% block head-open-graph %}
<meta property="og:title" content="Register attendance" />
<meta property="og:type" content="website" />
<meta property="og:url" content="{{ request.build_absolute_uri }}" />
<meta property="og:image" content="https://maidstone-hackspace.org.uk/static/images/android-chrome-192x192.png" />
{% endblock head-open-graph %}
{% block content %}
<h2>Register</h2>
{% if form %}
<form method="POST" action="{% url 'register_form' %}" class="register_form">
{% csrf_token %}
{{ form|crispy }}
{{ google_capture }}
<button class="btn btn-primary " type="submit" name="action">
<span class="fa fa-submit" ></span>
{% trans "Send" %}</button>
</form>
{% else %}
<div class="row">
<div class="col">
Thanks for registering!
</div>
</div>
{% endif %}
{% endblock content %}
{% block javascript %}
{{ block.super }}
<script src='https://www.google.com/recaptcha/api.js'></script>
{% endblock %}