Ticket #44: 0001-Improve-user-homepage.patch

File 0001-Improve-user-homepage.patch, 3.4 KB (added by Sebastian Spaeth, 13 years ago)

0001-Improve-user-homepage.patch

  • mediagoblin/templates/mediagoblin/user_pages/user.html

    From 2db0ec2cc3b5269e19bf883c5adc927e6ab1b696 Mon Sep 17 00:00:00 2001
    From: Sebastian Spaeth <Sebastian@SSpaeth.de>
    Date: Wed, 11 May 2011 08:39:57 +0200
    Subject: [PATCH] Improve user homepage
    
    1) Only consider user's with 'status': 'active'. We don't want to
       display unconfirmed/blocked users, right?
    2) Actually query user's media in the view and display on their home
       page.
    3) Throw an error 404 if we don't find a valid user, rather than saying,
       "User not found" (from within the template).
    4) Pass in medias as media_entries to remain compatible with the 'root'
       page.
    
    Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
    ---
     .../templates/mediagoblin/user_pages/user.html     |   15 ++++++++++++++-
     mediagoblin/user_pages/views.py                    |   12 +++++++-----
     2 files changed, 21 insertions(+), 6 deletions(-)
    
    diff --git a/mediagoblin/templates/mediagoblin/user_pages/user.html b/mediagoblin/templates/mediagoblin/user_pages/user.html
    index 4fa8443..85f05e0 100644
    a b  
    1919{% block mediagoblin_content -%}
    2020  {% if user %}
    2121    <h2>User page for '{{ user.username }}'</h2>
    22     {{ user }}
     22
     23    {#- Should we outsource such a media 'gallery' view to it's own file?
     24        It could be useful for the home page and other views too -#}
     25    <ul>
     26      {%- for entry in media_entries %}
     27      <li>
     28        <a href="{{ request.urlgen('mediagoblin.user_pages.media_home',
     29                 user= entry.uploader.username, m_id= entry._id) }}">
     30          <img src="{{ request.app.public_store.file_url(
     31                    entry['media_files']['thumb']) }}" /></a>
     32      </li>
     33      {%- endfor %}
     34    </ul>
    2335  {% else %}
     36    {# This *should* not occur as the view makes sure we pass in a user. #}
    2437    <p>Sorry, no such user found.<p/>
    2538  {% endif %}
    2639{% endblock %}   
  • mediagoblin/user_pages/views.py

    diff --git a/mediagoblin/user_pages/views.py b/mediagoblin/user_pages/views.py
    index cc613c4..6b0e03c 100644
    a b  
    1414# You should have received a copy of the GNU Affero General Public License
    1515# along with this program.  If not, see <http://www.gnu.org/licenses/>.
    1616
    17 from webob import Response
     17from webob import Response, exc
    1818from mongokit import ObjectId
    1919import wtforms
    2020
    import wtforms  
    2222def user_home(request):
    2323    """'Homepage' of a User()"""
    2424    user = request.db.User.find_one(
    25         {'username': request.matchdict['user']})
     25        {'username': request.matchdict['user'], 'status': 'active'})
     26    if not user:
     27        return exc.HTTPNotFound()
    2628
    27     medias = request.db.MediaEntry.find()
     29    medias = request.db.MediaEntry.find({'uploader': user})
    2830
    2931    template = request.template_env.get_template(
    3032        'mediagoblin/user_pages/user.html')
    def user_home(request):  
    3234        template.render(
    3335            {'request': request,
    3436             'user': user,
    35              'medias': medias}))
     37             'media_entries': medias}))
    3638
    3739
    3840def media_home(request):
    def media_home(request):  
    4042    media = request.db.MediaEntry.find_one(
    4143        ObjectId(request.matchdict['m_id']))
    4244
    43     #check that media uploader and user correspond
     45    # Check that media uploader and user correspond.
    4446    if media['uploader'].get('username') != request.matchdict['user']:
    4547        return exc.HTTPNotFound()
    4648