From: yomguy Date: Tue, 29 Mar 2011 14:08:44 +0000 (+0200) Subject: add profile edit form and views X-Git-Tag: 1.1~321 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=45dc70cdb5860402cc347896d06b476242cd49e6;p=telemeta.git add profile edit form and views --- diff --git a/telemeta/models/system.py b/telemeta/models/system.py index 71ebc0cc..1d5beaa1 100644 --- a/telemeta/models/system.py +++ b/telemeta/models/system.py @@ -38,6 +38,7 @@ from telemeta.models.core import * from django.core.exceptions import ObjectDoesNotExist from django.utils.translation import ugettext_lazy as _ import django.db.models +from django.forms import ModelForm class Revision(ModelCore): @@ -83,4 +84,7 @@ class UserProfile(django.db.models.Model): class Meta(MetaCore): db_table = 'profiles' - + +class UserProfileForm(ModelForm): + class Meta: + model = UserProfile diff --git a/telemeta/templates/telemeta/profile_edit.html b/telemeta/templates/telemeta/profile_edit.html new file mode 100644 index 00000000..5b952804 --- /dev/null +++ b/telemeta/templates/telemeta/profile_edit.html @@ -0,0 +1 @@ +{% extends "telemeta_default/profile_edit.html" %} diff --git a/telemeta/templates/telemeta_default/profile_detail.html b/telemeta/templates/telemeta_default/profile_detail.html index 742625dd..8664ef76 100644 --- a/telemeta/templates/telemeta_default/profile_detail.html +++ b/telemeta/templates/telemeta_default/profile_detail.html @@ -2,21 +2,21 @@ {% load i18n %} {% load telemeta_utils %} -{% block head_title %}{% trans "User Profile" %} : {{ user.username }}{% endblock %} +{% block head_title %}{% trans "User Profile" %} : {{ usr.username }}{% endblock %} {% block submenu %}
{% block tools %} {% if user.is_authenticated %} - {% trans "Edit" %} + {% trans "Edit" %} {% endif %} {% endblock tools %}
{% endblock %} {% block content %} -

{% trans "User profile" %} : {{ user.username }}

-
+

{% trans "User profile" %} : {{ usr.username }}

+
{% trans "First Name" %}
{{ usr.first_name }}
{% trans "Last Name" %}
{{ usr.last_name }}
diff --git a/telemeta/templates/telemeta_default/profile_edit.html b/telemeta/templates/telemeta_default/profile_edit.html new file mode 100644 index 00000000..3d8859e6 --- /dev/null +++ b/telemeta/templates/telemeta_default/profile_edit.html @@ -0,0 +1,34 @@ +{% extends "telemeta/profile_detail.html" %} +{% load i18n %} +{% load telemeta_utils %} + +{% block tools %} + {% trans "Cancel" %} +{% endblock %} + +{% block content %} +

{% trans "User profile" %} : {{ usr.username }}

+
+
{% csrf_token %} + + {% for field in form %} + {% if field.html_name != "user" %} + + + + + {% else %} + + + + {% endif %} + {% endfor %} +
{{ field.errors }}
{{ field.label_tag }}: {{ field }}
{{ field.label_tag }}: {{ field }}
+ +
+
+{% endblock %} diff --git a/telemeta/urls.py b/telemeta/urls.py index 7eb9475f..aad6e6f2 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -196,6 +196,7 @@ urlpatterns = patterns('', # Profile url(r'^accounts/(?P[A-Za-z0-9._-]+)/profile/$', web_view.profile_detail, name="telemeta-profile-detail"), + url(r'^accounts/(?P[A-Za-z0-9._-]+)/profile/edit/$', web_view.profile_edit, name="telemeta-profile-edit"), # JSON RPC url(r'^json/browse/', 'jsonrpc.views.browse', name="jsonrpc_browser"), # for the graphical browser/web console only, omissible diff --git a/telemeta/web/base.py b/telemeta/web/base.py index 9b150278..17e8dc5a 100644 --- a/telemeta/web/base.py +++ b/telemeta/web/base.py @@ -1008,7 +1008,7 @@ class WebView(object): def not_allowed(self, request, public_id = None): mess = ugettext('Access not allowed') title = public_id + ' : ' + mess - description = 'Please login or contact the website administator to get private access.' + description = 'Please login or contact the website administator to get admin or private access.' messages.error(request, title) return render(request, 'telemeta/messages.html', {'description' : description}) @@ -1020,3 +1020,24 @@ class WebView(object): except: profile = None return render(request, template, {'profile' : profile, 'usr': user}) + + def profile_edit(self, request, username, template='telemeta/profile_edit.html'): + user = User.objects.get(username=username) + if user != request.user and not request.user.is_staff: + return HttpResponseRedirect('/accounts/'+username+'/not_allowed/') + + try: + profile = user.get_profile() + except: + profile = UserProfile(user=user) +# profile.save() + + if request.method == 'POST': + form = UserProfileForm(data=request.POST, instance=profile) + if form.is_valid(): + form.save() + return HttpResponseRedirect('/accounts/'+username+'/profile/') + else: + form = UserProfileForm(instance=profile) + return render(request, template, {"form": form, 'usr': user}) +