diff --git a/layerindex/forms.py b/layerindex/forms.py index dd6ebf1..0b98d47 100644 --- a/layerindex/forms.py +++ b/layerindex/forms.py @@ -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') diff --git a/layerindex/urls.py b/layerindex/urls.py index eaea790..668b7c4 100644 --- a/layerindex/urls.py +++ b/layerindex/urls.py @@ -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'), diff --git a/layerindex/views.py b/layerindex/views.py index 1499651..5ef2316 100644 --- a/layerindex/views.py +++ b/layerindex/views.py @@ -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') diff --git a/templates/base.html b/templates/base.html index 9d3e9ce..6a8cb84 100644 --- a/templates/base.html +++ b/templates/base.html @@ -72,6 +72,7 @@ {% else %} diff --git a/templates/layerindex/profile.html b/templates/layerindex/profile.html new file mode 100644 index 0000000..8edc451 --- /dev/null +++ b/templates/layerindex/profile.html @@ -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 %} + + + + +{% block content %} +{% autoescape on %} + +
+ {% for hidden in form.hidden_fields %} + {{ hidden }} + {% endfor %} + + {% for field in form.visible_fields %} + {% if field.errors %} +
+ {{ field.errors }} + {% else %} +
+ {% endif %} +
+ {{ field.label_tag }} +
+
+ {{ field }} +
+
+ {% endfor %} + + + {% trans 'Cancel' %} + {% csrf_token %} + + +{% endautoescape %} + +{% endblock %}