]> git.parisson.com Git - telemeta.git/commitdiff
add profile edit form and views
authoryomguy <yomguy@parisson.com>
Tue, 29 Mar 2011 14:08:44 +0000 (16:08 +0200)
committeryomguy <yomguy@parisson.com>
Tue, 29 Mar 2011 14:08:44 +0000 (16:08 +0200)
telemeta/models/system.py
telemeta/templates/telemeta/profile_edit.html [new file with mode: 0644]
telemeta/templates/telemeta_default/profile_detail.html
telemeta/templates/telemeta_default/profile_edit.html [new file with mode: 0644]
telemeta/urls.py
telemeta/web/base.py

index 71ebc0cc4c5062224df8db125e2e16eff364f5bb..1d5beaa1a7e6d94f1d67ee916fd775d6d19963ee 100644 (file)
@@ -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 (file)
index 0000000..5b95280
--- /dev/null
@@ -0,0 +1 @@
+{% extends "telemeta_default/profile_edit.html" %}
index 742625dd4b906c6ff3f58d1d9f980521cc0ee262..8664ef761fceb8a5949e95f6dca5bb469b5dc3b8 100644 (file)
@@ -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 %}
     <div>
     {% block tools %}
     {% if user.is_authenticated %}
-      {% trans "Edit" %}
+      <a href="{% url telemeta-profile-edit usr.username %}" class="component_icon button icon_edit">{% trans "Edit" %}</a>
      {% endif %}
     {% endblock tools %}
     </div>
 {% endblock %}
 
 {% block content %}
-    <h3>{% trans "User profile" %} : {{ user.username }}</h3>
-    <div style="padding-top: 1em;">
+    <h3>{% trans "User profile" %} : {{ usr.username }}</h3>
+    <div class="infos" style="padding-top: 1em;">
      <dl class="listing">
       <dt>{% trans "First Name" %}</dt><dd>{{ usr.first_name }}</dd>
       <dt>{% trans "Last Name" %}</dt><dd>{{ usr.last_name }}</dd>
diff --git a/telemeta/templates/telemeta_default/profile_edit.html b/telemeta/templates/telemeta_default/profile_edit.html
new file mode 100644 (file)
index 0000000..3d8859e
--- /dev/null
@@ -0,0 +1,34 @@
+{% extends "telemeta/profile_detail.html" %}
+{% load i18n %}
+{% load telemeta_utils %}
+
+{% block tools %}
+     <a href="{% url telemeta-profile-detail usr.username %}" class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
+{% endblock %}
+
+{% block content %}
+       <h3>{% trans "User profile" %} : {{ usr.username }}</h3>
+       <div class="infos" style="padding-top: 1em;">
+        <form method="POST" id="_editUserProfileForm" action="">{% csrf_token %}
+       <table>
+       {% for field in form %}
+       {% if field.html_name != "user" %}
+        <tr>
+            <tr><td class="error">{{ field.errors }}</td></tr>
+            <td>{{ field.label_tag }}:</td><td> {{ field }}</td>
+        </tr>
+        {% else %}
+        <tr style="display:none;">
+          <td>{{ field.label_tag }}:</td><td> {{ field }}</td>
+        </tr>
+        {% endif %}
+       {% endfor %}
+       </table>
+        <div align="center">
+         <a href="{% url telemeta-profile-detail usr.username %}" class="component_icon button icon_cancel">{% trans "Cancel" %}</a>
+         <a href="#" class="component_icon button icon_save"
+   onclick="document.getElementById('_editUserProfileForm').submit(); return false;">{% trans "Save" %}</a>
+        </div>
+        </form>
+        </div>
+{% endblock %}
index 7eb9475f2fa590f95ee19fa4b0286967e80cb196..aad6e6f23db2db82da5a92a65b48a414d0bf4565 100644 (file)
@@ -196,6 +196,7 @@ urlpatterns = patterns('',
     
     # Profile
     url(r'^accounts/(?P<username>[A-Za-z0-9._-]+)/profile/$', web_view.profile_detail, name="telemeta-profile-detail"),
+    url(r'^accounts/(?P<username>[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
index 9b150278a51a88561fd1b906bbb8197d53b3ef36..17e8dc5afdb480029f3ec9abd54a20c6b4134dc2 100644 (file)
@@ -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})
+