Opened 15 years ago

Last modified 15 years ago

#41 closed defect (FIXED)

Basic individual media view

Reported by: Christopher Allan Webber Owned by: joar
Priority: minor Milestone:
Component: Keywords:
Cc: Parent Tickets:

Description

Currently when you submit an image all that happens is it shows up on the mainpage as a thumbnail. Boring! We should be able to view those images on their own page.

If I upload the media entry of "A Walk in the Park" which has the ID of 4d8e5b0048b1520586000000, I should be able to view that at:

[http://mediagoblin.example.org/cwebber/m/d8e5b0048b1520586000000/](http://mediagoblin.example.org/cwebber/m/d8e5b0048b1520586000000/)

(Eventually I'll also want to be able to view it by its prettier slugified URL:

[http://mediagoblin.example.org/cwebber/m/a-walk-in-the-park/](http://mediagoblin.example.org/cwebber/m/a-walk-in-the-park/)

... but that's waiting on http://bugs.foocorp.net/issues/306 )

This URL should have the following things:

  • The image, fully sized (we don't have scaled down versions implemented yet besides the thumbnail, so that's fine)
  • The author's name
  • When it was uploaded
  • The title
  • The description

Mockup:

| GNU MediaGoblin             | login | register |
|------------------------------------------------|
|                                                |
|  The Terror of Tinman Tim                      |
|  Posted by cwebber on May 8, 2011              |
|   ___________________________________________  |
|  |                                           | |
|  |      __ ____                              | |
|  |  (O)== |    |=(O)                         | |
|  |     |  |O  o|         DESTROY ALL HUMANS  | |
|  |     |__|[ww]|                             | |
|  |    |    |  _ |  _                         | |
|  |    | ((((((_ |((_                         | |
|  |    |    |    |                            | |
|  |    |____|____|                            | |
|  |      |_|  \_\  _                          | |
|  |    _/_/_   \_// /                         | |
|  |    |___||   |/_/                          | |
|  |                                           | |
|  '-------------------------------------------' |
|    _________________________________________   |
|   | Just another piece on a robot who wants |  |
|   | to do what any robot would want to do.  |  |
|   '-----------------------------------------'  |
|                                                |
|  Comments:                                     |
|   __________________________________________   |
|  | Wow I love your robot!!!!!!              |  |
|  |                 sue @ May 8 2011 11:45PM |  |
|  '------------------------------------------'  |

Don't worry about the comments for now though.

In addition, the thumbs currently on the main page should link to this URL.

Attachments (1)

0001-Implement-simple-media-detail-page.patch (11.7 KB ) - added by Sebastian Spaeth 15 years ago.
0001-Implement-simple-media-detail-page.patch

Download all attachments as: .zip

Change History (8)

comment:1 by Christopher Allan Webber, 15 years ago

Owner: set to Joar Wandborg

Assigning to Joar Wandborg. Thanks Joar!

comment:2 by Sebastian Spaeth, 15 years ago

Patch is here: https://gitorious.org/mediagoblin/mediagoblin/merge_requests/4

Given that I don't know a lot about how things are supposed to work, this should probably be reviewed. For example, I hardcode the URL as /m/ on the "root" page, I am not sure if there is a function that fetches a Media() url, as django's get_absolute_url() does.

Anyway, here it is. Please consider for merging.

comment:3 by Christopher Allan Webber, 15 years ago

So this is a good start. A few things:

It seems we're moving from /~cwebber/ style to /u/cwebber/ style, so see about being able to handle the full media URL with the username in it (which is a more useful URL I think):

http://mediagoblin.example.org/u/cwebber/m/d8e5b0048b1520586000000/

It probably makes sense to start a mediagoblin.user_pages section with:

  • mediagoblin/user_pages/init.py
  • mediagoblin/user_pages/views.py
  • mediagoblin/user_pages/routing.py

Do similar routing like is done with the auth routes to map the routes that start with /u/ to mediagoblin/user_pages/routing.py and move the view to views.py

It probably makes sense to "name" the route for this view something like mediagoblin.user_pages.view_media... by this I mean what you use for reversing, the first parameter of a Route() instantiation (see the auth routes)

To simplify the query, you can probably just query for the MediaEntry id as it is currently since that's already definitice, but just assert also that the uploader username is the same as what's grabbed from the url so that we don't misattribute a work via the URL to someone who didn't do it.

Lastly, if you could indent the if/else sections of the template I think that makes it more readable.

{% if media %}
<h2>Media details for {{media.title}}</h2>
<div>
  <img src="{{ request.app.public_store.file_url(
                media.media_files.main) }}" />

        <br/>Uploaded: {{ media.created}}
        <br/>Description: {{media.description}}
</div>
{% else %}
<p>Sorry, no such media found.<p/>
{% endif %}



{% if media %}
  <h2>Media details for {{media.title}}</h2>
  <div>
    <img src="{{ request.app.public_store.file_url(
                   media.media_files.main) }}" />

    <br/>Uploaded: {{ media.created}}
    <br/>Description: {{media.description}}
  </div>
{% else %}
  <p>Sorry, no such media found.<p/>
{% endif %}

See what I mean? I think it makes it easier to see what's part of what block.

Great work on this ticket so far!

comment:4 by Sebastian Spaeth, 15 years ago

Thanks for the feedback. I have now created the user_pages/* stuff and adapted everything. Please check the gory details in: https://gitorious.org/mediagoblin/mediagoblin/merge_requests/8

The URL is now /u//m/. One thing that is NOT YET part of this patch is the check if the username and the media uploader correspond as I have no clue how to throw an error 404. I added a placeholder for that. Please merge and add that :).

I also created a placeholder "user homepage" while being at it (it still needs content, so that ticket can not be resolved just yet :-)).

I am not sure, I like the /u/spaetz/m/123456781234567812345678 URL scheme a lot. THe /m/ somehow sticks out as odd and unneccessary. I would propose to go for something like this:

/u//<mediaobjectID_as_24_hexdigits)>

That will still allow us to do /u//profile|timeline|whatever...

Also, I think it would be useful to have an additional /m/<mediaobjectID_as_24_hexdigits)> URL. This way someone who knows a mediaID can call its page without having to find out who the uploader is. It is also slightly more efficient to call as we don't have to check that the username and media uploader correspond.

by Sebastian Spaeth, 15 years ago

0001-Implement-simple-media-detail-page.patch

comment:5 by Sebastian Spaeth, 15 years ago

Willkg told me we don't do merge requests, so here is the patch as a patch :-)

comment:6 by Christopher Allan Webber, 15 years ago

Status: NewClosed

(You forgot to indent the templates, but it's okay, I did it. ;))

Committed, thanks very much! :)

For the reference here's how to do a 404; use webob's HTTPNotFound.

# at the top
from webob import exc

# at the appropriate place
return exc.HTTPNotFound()

comment:7 by Will Kahn-Greene, 14 years ago

The original url for this bug was http://bugs.foocorp.net/issues/312 .

Note: See TracTickets for help on using tickets.