From 149dbe0ac561e5cfdb15bc2e0c9b0b27bbc7690a Mon Sep 17 00:00:00 2001 From: Sergio Oliveira Date: Wed, 25 Sep 2013 12:09:35 -0300 Subject: [PATCH] Adding new user form --- src/accounts/forms.py | 29 ++++++++++++++++++++++++----- src/accounts/templates/accounts/user_update_form.html | 11 +++++++++++ src/accounts/views.py | 19 ++++--------------- src/colab/static/img/logo_nav.png | Bin 0 -> 7551 bytes 4 files changed, 39 insertions(+), 20 deletions(-) create mode 100644 src/accounts/templates/accounts/user_update_form.html create mode 100644 src/colab/static/img/logo_nav.png diff --git a/src/accounts/forms.py b/src/accounts/forms.py index 8286102..74972d4 100644 --- a/src/accounts/forms.py +++ b/src/accounts/forms.py @@ -10,16 +10,35 @@ from super_archives.models import MailingList User = get_user_model() -class NewUserForm(forms.ModelForm): +class UserForm(forms.ModelForm): + required = ('first_name', 'last_name', 'email', 'username') + class Meta: model = User - fields = ('first_name', 'last_name', 'email', 'username') def __init__(self, *args, **kwargs): - super(NewUserForm, self).__init__(*args, **kwargs) - for field in self.fields.values(): + super(UserForm, self).__init__(*args, **kwargs) + for field_name, field in self.fields.items(): + # Adds form-control class to all form fields field.widget.attrs.update({'class': 'form-control'}) - field.required = True + + # Set UserForm.required fields as required + if field_name in UserForm.required: + field.required = True + + +class UserCreationForm(UserForm): + class Meta: + model = User + fields = ('first_name', 'last_name', 'email', 'username') + + +class UserUpdateForm(UserForm): + class Meta: + model = User + fields = ('first_name', 'last_name', 'email', 'username', + 'institution', 'role', 'twitter', 'facebook', + 'google_talk', 'webpage') class ListsForm(forms.Form): diff --git a/src/accounts/templates/accounts/user_update_form.html b/src/accounts/templates/accounts/user_update_form.html new file mode 100644 index 0000000..650f2c9 --- /dev/null +++ b/src/accounts/templates/accounts/user_update_form.html @@ -0,0 +1,11 @@ +{% extends "base.html" %} +{% load i18n gravatar %} + +{% block main-content %} +
+ {% csrf_token %} + {{ form.as_p }} + + +
+{% endblock %} diff --git a/src/accounts/views.py b/src/accounts/views.py index ecc6116..be77ec9 100644 --- a/src/accounts/views.py +++ b/src/accounts/views.py @@ -7,12 +7,13 @@ from django.contrib.auth import get_user_model from django.views.generic import DetailView, UpdateView from django.utils.translation import ugettext as _ from django.shortcuts import render, redirect +from django.core.urlresolvers import reverse from colab.deprecated import solrutils from colab.deprecated import signup as signup_ from super_archives.models import EmailAddress, Message -from .forms import NewUserForm, ListsForm +from .forms import UserCreationForm, ListsForm, UserUpdateForm class UserProfileBaseMixin(object): @@ -24,23 +25,11 @@ class UserProfileBaseMixin(object): class UserProfileUpdateView(UserProfileBaseMixin, UpdateView): template_name = 'accounts/user_form.html' - #form_class = UserUpdateForm + form_class = UserUpdateForm def get_success_url(self): return reverse('user_profile', kwargs={'username': self.object.username}) - def get_initial(self): - return { - 'first_name': self.object.first_name, - 'last_name': self.object.last_name, - 'email': self.object.email, - 'institution': self.object.profile.institution, - 'role': self.object.profile.role, - 'twitter': self.object.profile.twitter, - 'facebook': self.object.profile.facebook, - 'google_talk': self.object.profile.google_talk, - 'webpage': self.object.profile.webpage, - } class UserProfileDetailView(UserProfileBaseMixin, DetailView): @@ -72,7 +61,7 @@ class UserProfileDetailView(UserProfileBaseMixin, DetailView): def signup(request): # If the request method is GET just return the form if request.method == 'GET': - user_form = NewUserForm() + user_form = UserCreationForm() lists_form = ListsForm() return render(request, 'accounts/user_create_form.html', {'user_form': user_form, 'lists_form': lists_form}) diff --git a/src/colab/static/img/logo_nav.png b/src/colab/static/img/logo_nav.png new file mode 100644 index 0000000..31fdc9f Binary files /dev/null and b/src/colab/static/img/logo_nav.png differ -- libgit2 0.21.2