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 # 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/>. # 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" %} {% extends "mediagoblin/base.html" %}
@ -38,53 +41,6 @@
{% block mediagoblin_content -%} {% 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>
<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> <h1>
{%- trans username=user.username %}{{ username }}'s profile{% endtrans -%} {%- trans username=user.username %}{{ username }}'s profile{% endtrans -%}
</h1> </h1>
@ -167,5 +123,4 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
<div class="clear"></div> <div class="clear"></div>
{% endif %}
{% endblock %} {% 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 @uses_pagination
def user_home(request, page): def user_home(request, page):
"""'Homepage' of a User()""" """'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() user = User.query.filter_by(username=request.matchdict['user']).first()
if not user: if not user:
return render_404(request) return render_404(request)
elif user.status != u'active': elif user.status != u'active':
return render_to_response( return render_to_response(
request, request,
'mediagoblin/user_pages/user.html', 'mediagoblin/user_pages/user_nonactive.html',
{'user': user}) {'user': user})
cursor = MediaEntry.query.\ cursor = MediaEntry.query.\