Skip to content

Commit fb87177

Browse files
authored
Merge pull request #191 from ponder-lab/user-registration
adding new user registration form
2 parents 79a8f19 + e58cb21 commit fb87177

File tree

8 files changed

+43
-11
lines changed

8 files changed

+43
-11
lines changed

README.md

-9
Original file line numberDiff line numberDiff line change
@@ -127,12 +127,3 @@ To build the Docker image:
127127
## User Roles
128128

129129
The app has a complex relationship between different kinds of users. The roles are described in our [wiki](https://github.com/ponder-lab/Imperative-DL-Study-Web-App/wiki/Roles).
130-
131-
## Admin Account
132-
133-
Field | Value
134-
-- | --
135-
Username | admin
136-
Password | umjawaRZ7GY5C7Q
137-
138-
You can use this to register for accounts in the web app that is deployed on Heroku.

mysite/settings.py

+1
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@
9595
'default': dj_database_url.config(conn_max_age=600)
9696
}
9797

98+
# Custom DB config.
9899
# DATABASES = {
99100
# # 'default': {
100101
# # 'ENGINE': 'django.db.backends.mysql',

ponder/forms.py

+14
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,20 @@
66
from ponder.models import Categorization, ProblemCategory, ProblemCause, ProblemFix, ProblemSymptom, Categorizer
77

88

9+
class UserRegistrationForm(forms.ModelForm):
10+
password = forms.CharField(label='Password', widget=forms.PasswordInput)
11+
password2 = forms.CharField(label='Repeat password', widget=forms.PasswordInput)
12+
13+
class Meta:
14+
model = User
15+
fields = ('username', 'first_name', 'last_name', 'email')
16+
17+
def clean_password2(self):
18+
cd = self.cleaned_data
19+
if cd['password'] != cd['password2']:
20+
raise forms.ValidationError('Passwords don\'t match.')
21+
return cd['password2']
22+
923
class UserForm(forms.ModelForm):
1024
password = forms.CharField(widget=forms.PasswordInput())
1125
class Meta():

ponder/templates/ponder/base.html

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
<li><a href="{% url 'logout' %}">Logout</a></li>
2121
{% else %}
2222
<li><a class="navbar-link" href="{% url 'ponder:user_login' %}">Login</a></li>
23+
<li><a class="navbar-link" href="{% url 'ponder:register' %}">Register</a></li>
2324
{% endif %}
2425
</ul>
2526
</div>

ponder/templates/ponder/login.html

+1
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@ <h1>Login here :</h1>
1111
<input type="password" name="password" placeholder="Password"><input type="submit" name="" value="Login">
1212
</form>
1313
</div>
14+
<h1>Or Register <a href="/register">here</a></h1>
1415
</div>
1516
{% endblock %}

ponder/templates/ponder/register.html

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{% extends 'ponder/base.html' %}
2+
3+
{% block body_block %}
4+
<h2>Register</h2>
5+
<form method="post">
6+
{% csrf_token %}
7+
{{ form.as_p }}
8+
<button type="submit">Register</button>
9+
</form>
10+
{% endblock %}

ponder/urls.py

+1
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,5 @@
1818
path('success_categorization/<str:pk>', views.success_categorization, name='success_categorization'),
1919
path('forbidden/', views.permission_denied, name='permission_denied'),
2020
path('categorizers/new', views.AddCategorizer, name='categorizers_add'),
21+
path('register/', views.register, name='register'),
2122
]

ponder/views.py

+15-2
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
from django_filters import FilterSet
88
from django_filters.views import FilterView
99
from django.http import HttpResponse, HttpResponseRedirect
10-
from django.shortcuts import render
10+
from django.shortcuts import render, redirect
1111
from django.urls import reverse
1212
from django.utils.html import format_html
1313
from django_tables2 import SingleTableView, SingleTableMixin
1414

15-
from ponder.forms import CategorizationForm, CategorizerForm
15+
from ponder.forms import CategorizationForm, CategorizerForm, UserRegistrationForm
1616
from .models import Categorization, User, BugFix, Categorizer, CommitDetail, Commit, ProblemCategory, ProblemCause, \
1717
ProblemFix, ProblemSymptom
1818
from .tables import Categorizations_FilterTable, BugFixes_FilterTable, BugFixesTable, CommitDetailsTable, CommitsTable
@@ -41,6 +41,19 @@ def index(request):
4141
context = {'projects': parts, 'groups': groups}
4242
return render(request, 'ponder/index.html', context)
4343

44+
def register(request):
45+
if request.method == 'POST':
46+
form = UserRegistrationForm(request.POST)
47+
if form.is_valid():
48+
new_user = form.save(commit=False)
49+
new_user.set_password(form.cleaned_data['password'])
50+
new_user.save()
51+
login(request, new_user)
52+
return redirect('index')
53+
else:
54+
form = UserRegistrationForm()
55+
return render(request, 'ponder/register.html', {'form': form})
56+
4457
@login_required
4558
def special(request):
4659
return HttpResponse("You are logged in")

0 commit comments

Comments
 (0)