Add user profile editing form

This form allows the user to change their email address, first and last
name.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
This commit is contained in:
Paul Eggleton 2013-05-13 13:26:08 +01:00
parent 611ed1dece
commit 4502a38946
5 changed files with 80 additions and 2 deletions

View File

@ -9,6 +9,7 @@ from django import forms
from django.core.validators import URLValidator, RegexValidator, email_re
from django.forms.models import inlineformset_factory
from captcha.fields import CaptchaField
from django.contrib.auth.models import User
import re
@ -140,3 +141,9 @@ class EditNoteForm(forms.ModelForm):
def clean_text(self):
text = self.cleaned_data['text'].strip()
return text
class EditProfileForm(forms.ModelForm):
class Meta:
model = User
fields = ('first_name', 'last_name', 'email')

View File

@ -8,7 +8,7 @@ from django.conf.urls.defaults import *
from django.views.generic import TemplateView, DetailView, ListView
from django.views.defaults import page_not_found
from layerindex.models import LayerItem, Recipe
from layerindex.views import LayerListView, LayerReviewListView, LayerReviewDetailView, RecipeSearchView, MachineSearchView, PlainTextListView, LayerDetailView, edit_layer_view, delete_layer_view, edit_layernote_view, delete_layernote_view, switch_branch_view, HistoryListView
from layerindex.views import LayerListView, LayerReviewListView, LayerReviewDetailView, RecipeSearchView, MachineSearchView, PlainTextListView, LayerDetailView, edit_layer_view, delete_layer_view, edit_layernote_view, delete_layernote_view, switch_branch_view, HistoryListView, EditProfileFormView
urlpatterns = patterns('',
url(r'^$',
@ -71,6 +71,10 @@ urlpatterns = patterns('',
HistoryListView.as_view(
template_name='layerindex/history.html'),
name='history_list'),
url(r'^profile/$',
EditProfileFormView.as_view(
template_name='layerindex/profile.html'),
name="profile"),
url(r'^about$',
TemplateView.as_view(
template_name='layerindex/about.html'),

View File

@ -12,7 +12,8 @@ from django.template import RequestContext
from layerindex.models import Branch, LayerItem, LayerMaintainer, LayerBranch, LayerDependency, LayerNote, Recipe, Machine
from datetime import datetime
from django.views.generic import DetailView, ListView
from layerindex.forms import EditLayerForm, LayerMaintainerFormSet, EditNoteForm
from django.views.generic.edit import UpdateView
from layerindex.forms import EditLayerForm, LayerMaintainerFormSet, EditNoteForm, EditProfileForm
from django.db import transaction
from django.contrib.auth.models import User, Permission
from django.db.models import Q
@ -320,3 +321,17 @@ class HistoryListView(ListView):
def get_queryset(self):
return Revision.objects.all().order_by('-date_created')
class EditProfileFormView(UpdateView):
form_class = EditProfileForm
def dispatch(self, request, *args, **kwargs):
self.user = request.user
return super(EditProfileFormView, self).dispatch(request, *args, **kwargs)
def get_object(self, queryset=None):
return self.user
def get_success_url(self):
return reverse('frontpage')

View File

@ -72,6 +72,7 @@
<ul class="dropdown-menu">
<li><a href="{% url auth_logout %}">{% trans "Log out" %}</a></li>
<li><a href="{% url auth_password_change %}">{% trans "Change password" %}</a></li>
<li><a href="{% url profile %}">{% trans "Edit profile" %}</a></li>
</ul>
</li>
{% else %}

View File

@ -0,0 +1,51 @@
{% extends "base.html" %}
{% load i18n %}
{% comment %}
layerindex-web - profile page template
Copyright (C) 2013 Intel Corporation
Licensed under the MIT license, see COPYING.MIT for details
{% endcomment %}
<!--
{% autoescape on %}
{% block title_append %} - profile{% endblock %}
{% endautoescape %}
-->
{% block content %}
{% autoescape on %}
<form method="post" action=".">
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
{% for field in form.visible_fields %}
{% if field.errors %}
<div class="control-group alert alert-error">
{{ field.errors }}
{% else %}
<div class="control-group">
{% endif %}
<div class="control-label {% if field.required %}requiredlabel{% endif %}">
{{ field.label_tag }}
</div>
<div class="controls">
{{ field }}
</div>
</div>
{% endfor %}
<input type="submit" class="btn" value="{% trans 'Save' %}" />
<a class="btn" href="{% url frontpage %}">{% trans 'Cancel' %}</a>
{% csrf_token %}
</form>
{% endautoescape %}
{% endblock %}