From: yomguy Date: Tue, 29 Mar 2011 13:12:57 +0000 (+0200) Subject: add user profile model and view X-Git-Tag: 1.1~322 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=aaac98d204bf57943dfb6ff3a3c2f509c5f774fc;p=telemeta.git add user profile model and view --- diff --git a/telemeta/models/core.py b/telemeta/models/core.py index 7c568004..266985c1 100644 --- a/telemeta/models/core.py +++ b/telemeta/models/core.py @@ -49,6 +49,7 @@ from django.utils.translation import ugettext_lazy as _ import re from django.core.exceptions import ObjectDoesNotExist + class Duration(object): """Represent a time duration""" def __init__(self, *args, **kwargs): diff --git a/telemeta/models/system.py b/telemeta/models/system.py index 0b2d8633..71ebc0cc 100644 --- a/telemeta/models/system.py +++ b/telemeta/models/system.py @@ -35,9 +35,9 @@ from django.contrib.auth.models import User from telemeta.models.core import * -import django.db.models from django.core.exceptions import ObjectDoesNotExist from django.utils.translation import ugettext_lazy as _ +import django.db.models class Revision(ModelCore): @@ -74,10 +74,13 @@ class Revision(ModelCore): class UserProfile(django.db.models.Model): "User profile extension" - user = django.db.models.ForeignKey(User, unique=True) + user = ForeignKey(User, unique=True) institution = CharField(_('institution')) function = CharField(_('function')) address = TextField(_('address')) telephone = CharField(_('function')) expiration_date = DateField(_('expiration_date')) + class Meta(MetaCore): + db_table = 'profiles' + diff --git a/telemeta/templates/telemeta/profile_detail.html b/telemeta/templates/telemeta/profile_detail.html new file mode 100644 index 00000000..45611525 --- /dev/null +++ b/telemeta/templates/telemeta/profile_detail.html @@ -0,0 +1 @@ +{% extends "telemeta_default/profile_detail.html" %} diff --git a/telemeta/templates/telemeta_default/base.html b/telemeta/templates/telemeta_default/base.html index 50836abc..fe00eaed 100644 --- a/telemeta/templates/telemeta_default/base.html +++ b/telemeta/templates/telemeta_default/base.html @@ -47,7 +47,7 @@ {% else %} {{ user.username }}. {% endif %} -{% trans "Account" %} | +{% trans "Account" %} | {% trans "Help" %} | {% trans "Sign out" %} diff --git a/telemeta/templates/telemeta_default/home.html b/telemeta/templates/telemeta_default/home.html index 3f8e2496..afb2a37d 100644 --- a/telemeta/templates/telemeta_default/home.html +++ b/telemeta/templates/telemeta_default/home.html @@ -47,7 +47,8 @@ {% endif %} {{ r.revision.element_type }} - {{ r.revision.user.username }} + {% if r.revision.user %}{{ r.revision.user.username }}{% endif %} + {% endfor %} @@ -65,7 +66,7 @@

{{ playlist.playlist.title }}

CSV - {% trans "Delete" %} + {% trans "Delete" %}
@@ -114,7 +115,7 @@ {% endif %} - {% trans "Delete" %} + {% endfor %} diff --git a/telemeta/templates/telemeta_default/profile_detail.html b/telemeta/templates/telemeta_default/profile_detail.html new file mode 100644 index 00000000..742625dd --- /dev/null +++ b/telemeta/templates/telemeta_default/profile_detail.html @@ -0,0 +1,37 @@ +{% extends "telemeta/base.html" %} +{% load i18n %} +{% load telemeta_utils %} + +{% block head_title %}{% trans "User Profile" %} : {{ user.username }}{% endblock %} + +{% block submenu %} +
+ {% block tools %} + {% if user.is_authenticated %} + {% trans "Edit" %} + {% endif %} + {% endblock tools %} +
+{% endblock %} + +{% block content %} +

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

+
+
+
{% trans "First Name" %}
{{ usr.first_name }}
+
{% trans "Last Name" %}
{{ usr.last_name }}
+
{% trans "Email" %}
{{ usr.email }}
+ +
{% trans "Institution" %}
{% if profile %}{{ profile.institution }}{% endif %}
+
{% trans "Function" %}
{% if profile %}{{ profile.function }}{% endif %}
+
{% trans "Address" %}
{% if profile %}{{ profile.address }}{% endif %}
+
{% trans "Telephone" %}
{% if profile %}{{ profile.telephone }}{% endif %}
+
{% trans "Expiration date" %}
{% if profile %}{{ profile.expiration_date }}{% endif %}
+ +
{% trans "Is admin" %}
{{ usr.is_staff }}
+
{% trans "Is superuser" %}
{{ usr.is_superuser }}
+
{% trans "Last login" %}
{{ usr.last_login }}
+
+
+{% endblock %} + diff --git a/telemeta/urls.py b/telemeta/urls.py index c554ed88..7eb9475f 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -190,10 +190,13 @@ urlpatterns = patterns('', url(r'^oai/.*$', web_view.handle_oai_request, name="telemeta-oai"), # Authentication - url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'telemeta/login.html'}, + url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'telemeta/login.html'}, name="telemeta-login"), url(r'^logout/$', web_view.logout, name="telemeta-logout"), + # Profile + url(r'^accounts/(?P[A-Za-z0-9._-]+)/profile/$', web_view.profile_detail, name="telemeta-profile-detail"), + # JSON RPC url(r'^json/browse/', 'jsonrpc.views.browse', name="jsonrpc_browser"), # for the graphical browser/web console only, omissible url(r'^json/$', jsonrpc_site.dispatch, name='jsonrpc_mountpoint'), diff --git a/telemeta/web/base.py b/telemeta/web/base.py index ed39f634..9b150278 100644 --- a/telemeta/web/base.py +++ b/telemeta/web/base.py @@ -1011,3 +1011,12 @@ class WebView(object): description = 'Please login or contact the website administator to get private access.' messages.error(request, title) return render(request, 'telemeta/messages.html', {'description' : description}) + + @method_decorator(login_required) + def profile_detail(self, request, username, template='telemeta/profile_detail.html'): + user = User.objects.get(username=username) + try: + profile = user.get_profile() + except: + profile = None + return render(request, template, {'profile' : profile, 'usr': user})