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 %} -
- - {% trans "User not registered." %} {% trans "Is that you?" %} - {% trans "Click here and sign up." %} -
- {% endif %}
- {% 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 %}
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