diff --git a/src/accounts/templates/accounts/user-profile.html b/src/accounts/templates/accounts/user-profile.html
index 659f9cc..8668f39 100644
--- a/src/accounts/templates/accounts/user-profile.html
+++ b/src/accounts/templates/accounts/user-profile.html
@@ -7,51 +7,44 @@
{% endblock %}
{% block main-content %}
- {% if not user_profile %}
-
- {% gravatar email_address.address 200 %}
+ {% gravatar user_.email 200 %}
- {{ email_address.get_full_name }}
- {{ email_address.user.username }}
+ {{ user_.get_full_name }}
+ {{ user_.username }}
- {% ifequal request.user user_profile.user %}
-
{% trans "update your profile"|title %}
+ {% ifequal request.user user_ %}
+
{% trans "update your profile"|title %}
{% endifequal %}
- {% if user_profile.institution or user_profile.role %}
+ {% if user_.profile.institution or user_.profile.role %}
-
- {{ user_profile.role }}
- {% if user_profile.institution and user_profile.role %}-{% endif %}
- {{ user_profile.institution }}
+ {{ user_.profile.role }}
+ {% if user_.profile.institution and user_.profile.role %}-{% endif %}
+ {{ user_.profile.institution }}
{% endif %}
- {% if user_profile.twitter %}
- - {{ user_profile.twitter }}
+ {% if user_.profile.twitter %}
+ - {{ user_.profile.twitter }}
{% endif %}
- {% if user_profile.facebook %}
- - {{ user_profile.facebook }}
+ {% if user_.profile.facebook %}
+ - {{ user_.profile.facebook }}
{% endif %}
- {% if user_profile.google_talk %}
- - {{ user_profile.google_talk }}
+ {% if user_.profile.google_talk %}
+ - {{ user_.profile.google_talk }}
{% endif %}
- {% if user_profile.webpage %}
- - {{ user_profile.webpage }}
+ {% if user_.profile.webpage %}
+ - {{ user_.profile.webpage }}
{% endif %}
diff --git a/src/accounts/urls.py b/src/accounts/urls.py
index df57c68..d6d455e 100644
--- a/src/accounts/urls.py
+++ b/src/accounts/urls.py
@@ -1,25 +1,18 @@
from django.conf.urls import patterns, include, url
+from .views import UserProfileDetailView
-urlpatterns = patterns('',
+urlpatterns = patterns('',
url(r'^$', 'accounts.views.signup', name='signup'),
url(r'^verify/(?P
[\w]{32})/$',
'accounts.views.verify_email', name='email_verification'),
- # TODO: review and redo those weird views from
- # colab.deprecated.views.userprofile moving them to accounts.views
- url(r'^user/(?P[\w@+.-]+)/?$',
- 'colab.deprecated.views.userprofile.by_username', name='user_profile'),
-
- url(r'^user/$', 'colab.deprecated.views.userprofile.by_request_user',
- name='user_profile_by_request_user'),
-
- url(r'^user/hash/(?P[\w]+)$',
- 'colab.deprecated.views.userprofile.by_emailhash'),
+ url(r'^(?P[\w@+.-]+)/?$',
+ UserProfileDetailView.as_view(), name='user_profile'),
- url(r'^user/(?P[\w@+.-]+)/edit/?$',
- 'colab.deprecated.views.userprofile.update', name='user_profile_update'),
+ #url(r'^user/(?P[\w@+.-]+)/edit/?$',
+ # 'colab.deprecated.views.userprofile.update', name='user_profile_update'),
)
diff --git a/src/accounts/views.py b/src/accounts/views.py
index 9067f73..d96ecf4 100644
--- a/src/accounts/views.py
+++ b/src/accounts/views.py
@@ -6,11 +6,15 @@ from colab.deprecated import signup as signup_
from django.template import RequestContext
from django.contrib.auth.models import User
+from django.views.generic import DetailView
from django.utils.translation import ugettext as _
from django.shortcuts import render, get_object_or_404
+from colab.deprecated import solrutils
+
from .forms import UserCreationForm
-from super_archives.models import UserProfile, EmailAddress
+from super_archives.models import UserProfile, EmailAddress, Message
+
# helper
def get_field_set(form):
@@ -109,3 +113,33 @@ def verify_email(request, hash):
}
return render(request, 'accounts/account_message.html', template_data)
+
+
+class UserProfileDetailView(DetailView):
+ model = User
+ slug_field = 'username'
+ slug_url_kwarg = 'username'
+ context_object_name = 'user_'
+ template_name = 'accounts/user-profile.html'
+
+ def get_context_data(self, **kwargs):
+ user = self.object
+ context = {}
+
+ # TODO: Use haystack instead of solrutils
+ context['type_count'] = solrutils.count_types(
+ filters={'collaborator': user.username}
+ )
+
+ # TODO: Use haystack instead of solrutils
+ context['docs'] = solrutils.get_latest_collaborations(
+ username=user.username
+ )
+
+ email_pks = [addr.pk for addr in user.emails.iterator()]
+ query = Message.objects.filter(from_address__in=email_pks)
+ query = query.order_by('-received_time')
+ context['emails'] = query[:10]
+
+ return super(UserProfileDetailView, self).get_context_data(**context)
+
diff --git a/src/colab/deprecated/views/userprofile.py b/src/colab/deprecated/views/userprofile.py
index 78ef743..2525d47 100644
--- a/src/colab/deprecated/views/userprofile.py
+++ b/src/colab/deprecated/views/userprofile.py
@@ -6,7 +6,6 @@ userprofile.py
Created by Sergio Campos on 2012-01-10.
"""
-from django.template import RequestContext
from django.contrib.auth.models import User
from django.forms.models import model_to_dict
from django.contrib.auth.decorators import login_required
@@ -17,80 +16,6 @@ from accounts.forms import UserCreationForm, UserUpdateForm
from super_archives.models import Message, UserProfile, EmailAddress
-def read(request, user, email_address=None, editable=False, form=None):
-
- if form is None:
- form = UserCreationForm()
-
- if user:
- email_addresses = user.emails.all()
- profile = user.profile
- last_modified_docs = solrutils.get_latest_collaborations(
- username=user.username
- )
-
- type_count = solrutils.count_types(
- filters={'collaborator': user.username}
- )
-
- else:
- email_addresses = [email_address]
- profile = None
- last_modified_docs = []
- type_count = {}
-
- if not email_address and email_addresses:
- email_address = email_addresses[0]
-
- email_addresses_ids = tuple([str(addr.id) for addr in email_addresses])
-
- query = """
- SELECT
- *
- FROM
- super_archives_message JOIN (
- SELECT id
- FROM super_archives_message
- WHERE from_address_id IN (%(ids)s)
- GROUP BY thread_id, id
- ) AS subquery
- ON subquery.id = super_archives_message.id
- ORDER BY
- received_time DESC
- LIMIT 10;
-
- """ % {'ids': ','.join(email_addresses_ids)}
-
- emails = Message.objects.raw(query)
- #n_sent = Message.objects.filter(from_address__in=email_addresses).count()
-
- template_data = {
- 'user_profile': profile,
- 'email_address': email_address,
- 'emails': emails or [],
- 'form': form,
- 'editable': editable,
- 'type_count': type_count,
- 'docs': last_modified_docs,
- }
-
- return render(request, 'accounts/user-profile.html', template_data)
-
-
-@login_required
-def by_request_user(request):
- return read(request, request.user)
-
-
-def by_username(request, username):
- user = get_object_or_404(User, username=username)
- return read(request, user)
-
-
-def by_emailhash(request, emailhash):
- email_addr = get_object_or_404(EmailAddress, md5=emailhash)
- return read(request, email_addr.user, email_addr)
-
@login_required
def update(request, username):
--
libgit2 0.21.2