Commit 149dbe0ac561e5cfdb15bc2e0c9b0b27bbc7690a
1 parent
d44d52e5
Exists in
master
and in
13 other branches
Adding new user form
Showing
4 changed files
with
39 additions
and
20 deletions
Show diff stats
src/accounts/forms.py
| ... | ... | @@ -10,16 +10,35 @@ from super_archives.models import MailingList |
| 10 | 10 | User = get_user_model() |
| 11 | 11 | |
| 12 | 12 | |
| 13 | -class NewUserForm(forms.ModelForm): | |
| 13 | +class UserForm(forms.ModelForm): | |
| 14 | + required = ('first_name', 'last_name', 'email', 'username') | |
| 15 | + | |
| 14 | 16 | class Meta: |
| 15 | 17 | model = User |
| 16 | - fields = ('first_name', 'last_name', 'email', 'username') | |
| 17 | 18 | |
| 18 | 19 | def __init__(self, *args, **kwargs): |
| 19 | - super(NewUserForm, self).__init__(*args, **kwargs) | |
| 20 | - for field in self.fields.values(): | |
| 20 | + super(UserForm, self).__init__(*args, **kwargs) | |
| 21 | + for field_name, field in self.fields.items(): | |
| 22 | + # Adds form-control class to all form fields | |
| 21 | 23 | field.widget.attrs.update({'class': 'form-control'}) |
| 22 | - field.required = True | |
| 24 | + | |
| 25 | + # Set UserForm.required fields as required | |
| 26 | + if field_name in UserForm.required: | |
| 27 | + field.required = True | |
| 28 | + | |
| 29 | + | |
| 30 | +class UserCreationForm(UserForm): | |
| 31 | + class Meta: | |
| 32 | + model = User | |
| 33 | + fields = ('first_name', 'last_name', 'email', 'username') | |
| 34 | + | |
| 35 | + | |
| 36 | +class UserUpdateForm(UserForm): | |
| 37 | + class Meta: | |
| 38 | + model = User | |
| 39 | + fields = ('first_name', 'last_name', 'email', 'username', | |
| 40 | + 'institution', 'role', 'twitter', 'facebook', | |
| 41 | + 'google_talk', 'webpage') | |
| 23 | 42 | |
| 24 | 43 | |
| 25 | 44 | class ListsForm(forms.Form): | ... | ... |
| ... | ... | @@ -0,0 +1,11 @@ |
| 1 | +{% extends "base.html" %} | |
| 2 | +{% load i18n gravatar %} | |
| 3 | + | |
| 4 | +{% block main-content %} | |
| 5 | + <form method="post"> | |
| 6 | + {% csrf_token %} | |
| 7 | + {{ form.as_p }} | |
| 8 | + | |
| 9 | + <button type="submit" class="btn btn-primary">{% trans "Update" %}</button> | |
| 10 | + </form> | |
| 11 | +{% endblock %} | ... | ... |
src/accounts/views.py
| ... | ... | @@ -7,12 +7,13 @@ from django.contrib.auth import get_user_model |
| 7 | 7 | from django.views.generic import DetailView, UpdateView |
| 8 | 8 | from django.utils.translation import ugettext as _ |
| 9 | 9 | from django.shortcuts import render, redirect |
| 10 | +from django.core.urlresolvers import reverse | |
| 10 | 11 | |
| 11 | 12 | from colab.deprecated import solrutils |
| 12 | 13 | from colab.deprecated import signup as signup_ |
| 13 | 14 | |
| 14 | 15 | from super_archives.models import EmailAddress, Message |
| 15 | -from .forms import NewUserForm, ListsForm | |
| 16 | +from .forms import UserCreationForm, ListsForm, UserUpdateForm | |
| 16 | 17 | |
| 17 | 18 | |
| 18 | 19 | class UserProfileBaseMixin(object): |
| ... | ... | @@ -24,23 +25,11 @@ class UserProfileBaseMixin(object): |
| 24 | 25 | |
| 25 | 26 | class UserProfileUpdateView(UserProfileBaseMixin, UpdateView): |
| 26 | 27 | template_name = 'accounts/user_form.html' |
| 27 | - #form_class = UserUpdateForm | |
| 28 | + form_class = UserUpdateForm | |
| 28 | 29 | |
| 29 | 30 | def get_success_url(self): |
| 30 | 31 | return reverse('user_profile', kwargs={'username': self.object.username}) |
| 31 | 32 | |
| 32 | - def get_initial(self): | |
| 33 | - return { | |
| 34 | - 'first_name': self.object.first_name, | |
| 35 | - 'last_name': self.object.last_name, | |
| 36 | - 'email': self.object.email, | |
| 37 | - 'institution': self.object.profile.institution, | |
| 38 | - 'role': self.object.profile.role, | |
| 39 | - 'twitter': self.object.profile.twitter, | |
| 40 | - 'facebook': self.object.profile.facebook, | |
| 41 | - 'google_talk': self.object.profile.google_talk, | |
| 42 | - 'webpage': self.object.profile.webpage, | |
| 43 | - } | |
| 44 | 33 | |
| 45 | 34 | |
| 46 | 35 | class UserProfileDetailView(UserProfileBaseMixin, DetailView): |
| ... | ... | @@ -72,7 +61,7 @@ class UserProfileDetailView(UserProfileBaseMixin, DetailView): |
| 72 | 61 | def signup(request): |
| 73 | 62 | # If the request method is GET just return the form |
| 74 | 63 | if request.method == 'GET': |
| 75 | - user_form = NewUserForm() | |
| 64 | + user_form = UserCreationForm() | |
| 76 | 65 | lists_form = ListsForm() |
| 77 | 66 | return render(request, 'accounts/user_create_form.html', |
| 78 | 67 | {'user_form': user_form, 'lists_form': lists_form}) | ... | ... |
7.37 KB