Simplify non-active user page

Currently, the logic of whether a user account has been activated is in
the main user.html template. This is not good as: doing that check for all
users from template code is probably not great for performance, but more
severly, the template logic is rather difficult and convoluted.

Split this in a user.html and a user_nonactive.html where user.html is
used for active users and user_nonactive displays all the "you still need
to be activated" blurbs. This makes the templates much easier on the eyes.
This commit is contained in:
Sebastian Spaeth 2013-09-03 17:46:55 +02:00
parent 6375cf735c
commit 51b4318079
3 changed files with 148 additions and 113 deletions

View File

@ -14,6 +14,9 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# This is the main user homepage for active users
#}
{% extends "mediagoblin/base.html" %}
@ -38,134 +41,86 @@
{% block mediagoblin_content -%}
{# If no user... #}
{% if not user %}
<p>{% trans %}Sorry, no such user found.{% endtrans %}</p>
{# User exists, but needs verification #}
{% elif user.status == "needs_email_verification" %}
{% if user == request.user %}
{# this should only be visible when you are this user #}
<div class="form_box">
<h1>{% trans %}Email verification needed{% endtrans %}</h1>
<h1>
{%- trans username=user.username %}{{ username }}'s profile{% endtrans -%}
</h1>
{% if not user.url and not user.bio %}
{% if request.user and (request.user.id == user.id) %}
<div class="profile_sidebar empty_space">
<p>
{% trans -%}
Almost done! Your account still needs to be activated.
{%- endtrans %}
{% trans %}Here's a spot to tell others about yourself.{% endtrans %}
</p>
<p>
{% trans -%}
An email should arrive in a few moments with instructions on how to do so.
{%- endtrans %}
</p>
<p>{% trans %}In case it doesn't:{% endtrans %}</p>
<a href="{{ request.urlgen('mediagoblin.auth.resend_verification') }}"
class="button_action_highlight">{% trans %}Resend verification email{% endtrans %}</a>
</div>
<a href="{{ request.urlgen('mediagoblin.edit.profile',
user=user.username) }}" class="button_action">
{%- trans %}Edit profile{% endtrans -%}
</a>
{% else %}
{# if the user is not you, but still needs to verify their email #}
<div class="form_box">
<h1>{% trans %}Email verification needed{% endtrans %}</h1>
<div class="profile_sidebar empty_space">
<p>
{% trans -%}
Someone has registered an account with this username, but it still has to be activated.
This user hasn't filled in their profile (yet).
{%- endtrans %}
</p>
<p>
{% trans login_url=request.urlgen('mediagoblin.auth.login') -%}
If you are that person but you've lost your verification email, you can <a href="{{ login_url }}">log in</a> and resend it.
{%- endtrans %}
</p>
</div>
{% endif %}
{# Active(?) (or at least verified at some point) user, horray! #}
{% else %}
<h1>
{%- trans username=user.username %}{{ username }}'s profile{% endtrans -%}
</h1>
{% if not user.url and not user.bio %}
{% if request.user and (request.user.id == user.id) %}
<div class="profile_sidebar empty_space">
<p>
{% trans %}Here's a spot to tell others about yourself.{% endtrans %}
</p>
<a href="{{ request.urlgen('mediagoblin.edit.profile',
user=user.username) }}" class="button_action">
{%- trans %}Edit profile{% endtrans -%}
</a>
{% else %}
<div class="profile_sidebar empty_space">
<p>
{% trans -%}
This user hasn't filled in their profile (yet).
{%- endtrans %}
</p>
<div class="profile_sidebar">
{% include "mediagoblin/utils/profile.html" %}
{% if request.user and
(request.user.id == user.id or request.user.is_admin) %}
<a href="{{ request.urlgen('mediagoblin.edit.profile',
user=user.username) }}">
{%- trans %}Edit profile{% endtrans -%}
</a>
{% endif %}
{% else %}
<div class="profile_sidebar">
{% include "mediagoblin/utils/profile.html" %}
{% if request.user and
(request.user.id == user.id or request.user.is_admin) %}
<a href="{{ request.urlgen('mediagoblin.edit.profile',
user=user.username) }}">
{%- trans %}Edit profile{% endtrans -%}
</a>
{% endif %}
{% endif %}
{% endif %}
<p>
<a href="{{ request.urlgen('mediagoblin.user_pages.collection_list',
user=user.username) }}">
{%- trans %}Browse collections{% endtrans -%}
</a>
</p>
</div>
{% if media_entries.count() %}
<div class="profile_showcase">
{{ object_gallery(request, media_entries, pagination,
pagination_base_url=user_gallery_url, col_number=3) }}
{% include "mediagoblin/utils/object_gallery.html" %}
<div class="clear"></div>
<p>
<a href="{{ request.urlgen('mediagoblin.user_pages.collection_list',
user=user.username) }}">
{%- trans %}Browse collections{% endtrans -%}
<a href="{{ user_gallery_url }}">
{% trans username=user.username -%}
View all of {{ username }}'s media{% endtrans -%}
</a>
</p>
{% set feed_url = request.urlgen(
'mediagoblin.user_pages.atom_feed',
user=user.username) %}
{% include "mediagoblin/utils/feed_link.html" %}
</div>
{% if media_entries.count() %}
<div class="profile_showcase">
{{ object_gallery(request, media_entries, pagination,
pagination_base_url=user_gallery_url, col_number=3) }}
{% include "mediagoblin/utils/object_gallery.html" %}
<div class="clear"></div>
{% else %}
{% if request.user and (request.user.id == user.id) %}
<div class="profile_showcase empty_space">
<p>
<a href="{{ user_gallery_url }}">
{% trans username=user.username -%}
View all of {{ username }}'s media{% endtrans -%}
</a>
{% trans -%}
This is where your media will appear, but you don't seem to have added anything yet.
{%- endtrans %}
</p>
{% set feed_url = request.urlgen(
'mediagoblin.user_pages.atom_feed',
user=user.username) %}
{% include "mediagoblin/utils/feed_link.html" %}
<a class="button_action"
href="{{ request.urlgen('mediagoblin.submit.start') }}">
{%- trans %}Add media{% endtrans -%}
</a>
</div>
{% else %}
{% if request.user and (request.user.id == user.id) %}
<div class="profile_showcase empty_space">
<p>
{% trans -%}
This is where your media will appear, but you don't seem to have added anything yet.
{%- endtrans %}
</p>
<a class="button_action"
href="{{ request.urlgen('mediagoblin.submit.start') }}">
{%- trans %}Add media{% endtrans -%}
</a>
</div>
{% else %}
<div class="profile_showcase empty_space">
<p>
{% trans -%}
There doesn't seem to be any media here yet...
{%- endtrans %}
</p>
</div>
{% endif %}
<div class="profile_showcase empty_space">
<p>
{% trans -%}
There doesn't seem to be any media here yet...
{%- endtrans %}
</p>
</div>
{% endif %}
<div class="clear"></div>
{% endif %}
<div class="clear"></div>
{% endblock %}

View File

@ -0,0 +1,83 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# This is the main user homepage for non-active users that still need
# registration etc.
#}
{% extends "mediagoblin/base.html" %}
{% block title %}
{%- if user -%}
{%- trans username=user.username -%}
{{ username }}'s profile
{%- endtrans %} &mdash; {{ super() }}
{%- else -%}
{{ super() }}
{%- endif -%}
{% endblock %}
{% block mediagoblin_content -%}
{# User exists, but needs verification #}
{% if user.status == "needs_email_verification" %}
{% if user == request.user %}
{# this should only be visible when you are this user #}
<div class="form_box">
<h1>{% trans %}Email verification needed{% endtrans %}</h1>
<p>
{% trans -%}
Almost done! Your account still needs to be activated.
{%- endtrans %}
</p>
<p>
{% trans -%}
An email should arrive in a few moments with instructions on how to do so.
{%- endtrans %}
</p>
<p>{% trans %}In case it doesn't:{% endtrans %}</p>
<a href="{{ request.urlgen('mediagoblin.auth.resend_verification') }}"
class="button_action_highlight">{% trans %}Resend verification email{% endtrans %}</a>
</div>
{% else %}
{# if the user is not you, but still needs to verify their email #}
<div class="form_box">
<h1>{% trans %}Email verification needed{% endtrans %}</h1>
<p>
{% trans -%}
Someone has registered an account with this username, but it still has to be activated.
{%- endtrans %}
</p>
<p>
{% trans login_url=request.urlgen('mediagoblin.auth.login') -%}
If you are that person but you've lost your verification email, you can <a href="{{ login_url }}">log in</a> and resend it.
{%- endtrans %}
</p>
</div>
{% endif %}
{# Active(?) (or at least verified at some point) user, horray! #}
{% else %}
<h1>
{%- trans username=user.username %}{{ username }}{% endtrans -%}
</h1>
<p>{{ username }} is not active.</p>
<div class="clear"></div>
{% endif %}
{% endblock %}

View File

@ -47,16 +47,13 @@ _log.setLevel(logging.DEBUG)
@uses_pagination
def user_home(request, page):
"""'Homepage' of a User()"""
# TODO: decide if we only want homepages for active users, we can
# then use the @get_active_user decorator and also simplify the
# template html.
user = User.query.filter_by(username=request.matchdict['user']).first()
if not user:
return render_404(request)
elif user.status != u'active':
return render_to_response(
request,
'mediagoblin/user_pages/user.html',
'mediagoblin/user_pages/user_nonactive.html',
{'user': user})
cursor = MediaEntry.query.\