﻿__group__	ticket	summary	component	version	type	owner	status	created	_changetime	_description	_reporter
	417	JavaScripts and WTForms messages are not translated	programming		defect		accepted	2012-03-25T21:15:36Z	2023-01-12T09:29:34Z	The strings in the !JavaScripts (e. g. `show_password.js`) and the !WTForms messages (e. g. “Invalid Input”) cannot be translated right now.	Jakob Kramer
	418	Leave slug empty until we are sure media processing was successful	programming		defect		accepted	2012-03-27T20:56:31Z	2018-04-19T13:56:23Z	We should leave the ''slug'' field of a media entry empty until we are done processing and only set it if processing was successful.	joar
	400	Media licensing should be human readable	programming		enhancement		accepted	2012-03-12T18:08:42Z	2020-05-14T13:12:11Z	"When uploading media, the licensing options don't give enough information for most people to make an informed choice.

The current list is:
All rights reserved
CC BY 3.0
CC BY-SA 3.0
CC BY-ND 3.0
CC BY-NC 3.0
CC BY-NC-SA 3.0
CC BY-NC-ND 3.0
CC0 1.0
Public Domain

Propose better options, helptexts, or perhaps a block of text that changes based on your choice."	Sacha
	409	oEmbed support	programming		enhancement		accepted	2012-03-19T11:23:40Z	2017-07-01T20:54:37Z	"nowadays social networking platforms make heavy use of oEmbed for sharing media content in personal activity streams, open platforms like statusNet, diaspora or buddycloud use it as well as big brothers like facebook, tweeter etc.

http://oembed.com/#section7

from xp in diaspora your service should have support for https, please see this issue: https://github.com/diaspora/diaspora/issues/2342#issuecomment-4525027"	elf Pavlik
	458	Functional testing via selenium, phantomjs, or similar	programming		task		accepted	2012-06-02T17:06:44Z	2016-01-14T09:38:09Z	"It would be good to have a way to run functional tests that mimic user behavior and tie them into our unit testing commands.

We should probably use a tool like [http://phantomjs.org/ PhantomJS] or [http://seleniumhq.org/ Selenium].  And then of course we should have some tests. :)

I'm marking the priority as low at the moment because I think it's not as critical at the moment given everything else going on."	Christopher Allan Webber
	389	Remove Markdown explanations, after figuring out how to handle links	graphic design/interface		defect		new	2012-02-09T20:55:28Z	2015-02-19T04:51:11Z	"Currently some inputs such as the comment field, the profile bio and the media description have ""You can use Markdown for formatting."" next to them, where ""Markdown"" links to http://daringfireball.net/projects/markdown/basics .

I'd prefer to have these removed, the reasons being:

1. Not all Markdown styles work, on purpose. Headers don't show, for instance, because this would mess up the page layout.
2. Markdown aims to be as natural as possibe. Type *this* and it will show it with emphasis. Lists are easy to create as well. Therefore, no explicit explanation is needed.
3. Having less stuff is good.

The only problem to me seems to be links, because it is unclear how to create those. Either:

1. We explain how to create links.
2. We add a small button that inserts a link template in the field.

Otherwise, it will be hard to figure out how to create links because inserting a URL will not result in one (maybe that is a bug in itself?)."	Jef van Schendel
	414	Ability to delete one's own comments.	programming		enhancement		review	2012-03-23T21:34:29Z	2020-05-14T13:25:07Z	"There is currently no way to remove one's own comments.

Maybe the feature should be optional or customizable."	Aleksej
	973	Re-enable check_db_up_to_date() in app.py after fixing session issues	programming		defect	Christopher Allan Webber	in_progress	2014-09-19T21:14:59Z	2016-02-16T22:43:59Z	We had a tool that, as its name implied, checked if databases were up to date.  Unfortunately, it was causing a bunch of random errors with postgres sessions in 0.7.0.  As such, in o.7.1, this is disabled, but we want this to be re-enabled for 0.8.0.  This requires some investigating on how to do right.	Christopher Allan Webber
	5544	Orphaned notifications	programming		defect		review	2017-11-04T17:06:24Z	2018-10-30T18:35:58Z	"My database contains a number of orphaned notifications that result in server errors with the following output.

{{{
File '/path/to/mediagoblin/mediagoblin/templates/mediagoblin/fragments/header_notifications.html', line 8 in top-level template code
  {% set comment_object = comment_wrapper.comment() %}
UndefinedError: 'None' has no attribute 'comment'
}}}

For users that want notifications, this results in server errors every time they log in or try to navigate to any page while logged in, effectively locking them out of the instance."	ayleph
	5616	Update Leaflet.js, jQuery, Video.js - heck, check and upgrade them all!	programming		defect		new	2020-05-16T11:02:34Z	2020-05-16T11:05:13Z	We're using rather old versions of Leaflet.js, jQuery etc. We should check that things work with a recent version and update `bower.json`.	Ben Sturmfels
	518	Package MediaGoblin for Debian	programming		enhancement	Simon Fondrie-Teitler	in_progress	2012-10-16T21:59:56Z	2021-04-09T07:22:29Z	"Get MediaGoblin packaged for Debian and into the repos. Currently the packages it depends on that are not in the repo yet are kombu (needs version >=2.2) and translitcodec. 

I've emailed the maintainer for kombu, and he says he has 2.4.7 packaged but is waiting for python-anyjson >= 0.3.3 to hit the repos since kombu depends on it. 

As for translitcodec, Clint Byrum emailed debian-legal about the license. Their response was that the license was OK, but that it might not be a good idea to add it to the repos given the author called it an ""old, unfinished project"". 
ref: http://osdir.com/ml/debian-legal/2012-01/msg00115.html 

He also filed an ITP, which I emailed asking about taking over. 
ref: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=657708
"	Simon Fondrie-Teitler
	212	Use werkzeug as a caching abstraction layer (was: «use beaker»)	programming		defect		review	2011-08-22T11:54:00Z	2016-10-09T12:03:17Z	"{{{
#!rst
There are a few bugs circulating around that block on actually
having an interface to a formal cache. This bug is to build this
cache interface. Then we can use it to do stuff!



}}}"	Caleb Davis
	465	Cannot delete attachments	programming		defect		accepted	2012-07-07T19:56:24Z	2015-01-20T17:08:59Z	"Attachments cannot be deleted without deleting the whole ""medium."""	Jakob Kramer
	508	You shouldn't have to upload a whole file to find out mediagoblin doesn't support it	programming		defect		accepted	2012-10-13T15:00:10Z	2016-09-18T02:07:37Z	"I'm not really sure the best way to solve this, but we had a user who spent an hour attempting to upload a video only to get the message ""sorry, but I don't support that file"".  I'm not sure what the best way to prevent this is... maybe we could pass up a list of file extensions we know we support?  That's not really great either though considering the ""catch all"" or ""catch conditionally"" media type option we currently have.  So, not really sure.  But we should definitely deal with it."	Christopher Allan Webber
	576	Evaluate Cloudfiles write() method. Borked for chunked writes?	programming		defect		new	2012-12-19T10:23:22Z	2013-03-23T01:57:25Z	"TODO: XXX It seems that our {{{cloudfiles.write()}}} takes all existing
data and appends {{{""write(data)""}}} data to it, sending the full monty
over the wire everytime. This would of course absolutely kill
chunked writes with some {{{O(1^n)}}} performance and bandwidth
usage. But we do need chunked writes if we want to keep memory consumption at a reasonable level (#419). EVALUATE!

Not familiar with cloudfiles but afaik we can iterate using some {{{send()}}} method."	spaetz
	612	MediaFile deletion bails on with missing files on cloudfiles	programming		defect		new	2013-01-27T19:49:23Z	2016-01-13T19:18:57Z	"MediaEntry.delete does this:
{{{
        try:
            delete_media_files(self)
        except OSError, error:
}}}

joar says that the cloudfiles plugin raises a different exception when files are missing (somthing that is an IOError subclass).

So the very least we need to do here, is to also catch IOError and make them non-fatal.

Even better, if we could make the file deletion be celery tasks. In this case we would get automatic retries in case of failures (with separate-process celery) even after some waiting time."	spaetz
	627	URL redirect after login breaks with URL encoded characters	programming		defect		new	2013-02-08T21:14:21Z	2013-09-29T15:43:04Z	"* I visited a page at ""/u/schendje/m/livingcolors-%2B-wires/""
* I logged in
* I was redirected to an error page at ""/u/schendje/m/livingcolors-%252B-wires/""

As you can see, it URL encoded the already URL encoded character, breaking the URL. (I hope I used the right terms.)"	Jef van Schendel
	650	.media_data is sometimes None (and has no rows)!  Is this the right thing to do?	documentation		defect		new	2013-03-03T00:06:56Z	2013-08-15T15:57:12Z	"Elrond and I had a conversation on IRC.  Basically, I was surprised to learn that some entries do not have {{{.media_data}}} records and wrote some code that exploded on me, and that this was by design (it may be that I was involved in this design, but anyway, if so I forgot :))  The way things currently work is that media_data is optionally initialized when properties are set, like so:

{{{
    if len(exif_all):
        entry.media_data_init(exif_all=exif_all)

    if len(gps_data):
        for key in list(gps_data.keys()):
            gps_data['gps_' + key] = gps_data.pop(key)
        entry.media_data_init(**gps_data)
}}}

In the above example (which is image processing code) media data is initialized if there's exif data or if there's GPS data.  However, if there's neither, the {{{.media_data}}} row will never be written and trying to access {{{.media_data}}} will return None.

The question is: is this a good idea?  The short version is that it's a battle between two different forms of minimalism: only filling the database with rows when there's something to store results in a leaner database but messier code, always having a row results in simpler code but some rows when no rows need to exist.  (Thus a battle between Elrond's razor (database simplicity) and cwebber's razor (code simplicity)!)

A longer version of these points are:

1. This results in code that is harder to read:

{{{
if media.media_data is not None:
    # do something with media data
}}}

  ... which is fairly confusing.

2. As for writing, one could argue that it's not much trickier to do {{{media.media_data.p = q}}} or instead {{{media.media_data_init(p=q)}}}.  (Counterpoint: maybe there are some media data forms that require setting multiple fields at once in a somewhat interdependent or tricky way?)  However, initializing fields is not the only thing; one also works with things above such as the {{{if media.media_data is not None}}} which can be very tricky to get right.  Also, if Chris Webber was confused and wrote totally broken code because of this {{{.media_data}}} being None thing, probably so will others!
3. Migrations could get a lot messier.  Basically, one might write a migration that assumes a query on an images' media data, and one might forget that those rows might not always be there.  This could result in broken migrations.  On the other hand, migrations are already one of the trickest things in mediagoblin anyway. ;)
4. The big thing though is that it's less db space to do things this way.  Elrond says it's a bigger concern on MySQL/MariaDB (well, we don't support that yet anyway ;)) than it is on postgres or sqlite.
5. It wouldn't be less queries though, since we still need to check whether there's a row or not.  (However, Elrond points out that the payload is somewhat less if we don't return anything!)

What's the right thing to do?
"	Christopher Allan Webber
	692	Proper documentation on how to author tests	documentation		defect		accepted	2013-05-04T20:39:08Z	2014-07-23T15:59:26Z	"We need better documentation on how to author unit tests.  This should go in {{{docs/source/devel/}}} on its own page, maybe ""writing tests"" or some such.

The following should be mentioned:
* How to run tests (even though this is covered elsewhere)
* What tools we use (pytest, webtest)
* A simple ""writing a unit test"" example
* Show to pass an application fixture into a test
* Show how to set it up with different configs (I can explain this on IRC)
"	Christopher Allan Webber
	728	Collection page shows thumbnails in reverse order	programming		defect	Boris Bobrov	in_progress	2013-06-24T08:01:47Z	2021-10-02T01:09:04Z	"The collection page at /u/<username>/collection/<collection> shows thumbnails in order they were added.  But the pagination link to go to the next page says ""Older ->"" implying that the thumbnails are being shown in reverse-created order.
"	Kushal Kumaran
	772	browser warning when you try to close mb when active editing	programming		defect		new	2013-09-16T23:49:46Z	2013-09-16T23:49:46Z	mb needs a warning when you try to close it with upload in background. its possible, and happens :(	yair99
	838	"Moderation: report panel: ""Action Taken"" shows a date in the past (report date?)."	programming		defect		new	2014-01-23T20:28:09Z	2015-02-19T04:51:34Z	"https://gobblin.se/mod/reports/ says in a 4-row table, about an issue resolved today:

* Resolved: 2014-01-23 21:05 (also :06, :06, :07)
* Action Taken: 2013-11-25 15:57


https://gobblin.se/mod/reports/1/ says it was:
* reported 1 month, 4 weeks ago,
* RESOLVED 09:05PM 2014-01-23."	Aleksej
	862	"Not require the ""mediagoblin"" user during install (or, other permissions solutions)"	documentation		defect		new	2014-03-25T16:36:02Z	2021-09-02T12:56:02Z	"Our present docs are presently very confusing because we suggest users make a ""mediagoblin"" user, but this isn't the same user that the web server runs as.  Thus, people tend to run into permission issues.  It would be easier for the user to run as www-data on Debian and similar machines, and whatever the equivalent is on Fedora/Red Hat/etc.

How to do this and not make it *more* confusing?  Maybe we could have some way to have separate install pages for each distro but have them ""build"" from the same base?  I'm not sure that's possible though.

Other solutions to help us avoid permision issues would also help."	Christopher Allan Webber
	890	Cannot detect zh_TW and zh_CN due to language list change in babel	programming		defect		new	2014-05-15T10:39:57Z	2014-05-15T10:39:57Z	mediagoblin/tools/translate.py detects the available locales according to localedata from babel, but it has zh_Hant_TW and zh_Hant_CN but no zh_TW or zh_CN in the list.	Yao Wei
	941	OpenID fails with https site	programming		defect		new	2014-08-08T18:13:31Z	2014-08-08T18:13:31Z	"When I try to log in with OpenID on my Mediagoblin site it fails with the following error:

{{{
Verification of None failed: return_to does not match return URL. Expected u'https://media.saz.im/auth/openid/login/finish/', got u'http://media.saz.im/auth/openid/login/finish/?janrain_nonce=SIKRITSTUFF'
}}}

where I have replaced the nonce with SIKRITSTUFF just to be sure :-)

In the file plugins/openid/views.py line 52 looks like this:

{{{
host = 'http://' + request.host
}}}

If I replace the ""http"" with ""https"" here OpenID works. My server does have automatic rewrite of http => https so that is not the problem. So perhaps it is possible to detect if we are serving over https and setting that accordingly?
"	sazius
	958	Spectrogram thumbnail creation fails with non-local file storage	programming		defect		new	2014-08-31T07:24:12Z	2016-01-15T16:06:46Z	"Audio uploads fail when using the cloudfiles storage mechanism because the spectrogram thumbnail cannot be created. The spectrogram thumbnail generator assumes a local file path for the spectrogram and calls {{{get_local_path}}} which is not implemented for cloudfiles storage.


{{{
2014-08-31 01:51:09,264 INFO    [mediagoblin.media_types.audio.transcoders] 100% done...
2014-08-31 01:51:09,264 DEBUG   [mediagoblin.media_types.audio.transcoders] <gst.Message (none) from pipeline1 at 0x7f77440680c0>
2014-08-31 01:51:09,265 INFO    [mediagoblin.media_types.audio.transcoders] Done
2014-08-31 01:51:09,266 INFO    [mediagoblin.media_types.audio.transcoders] Quitting MainLoop gracefully...
/path/to/mediagoblin/mediagoblin/media_types/audio/audioprocessing.py:168: DeprecationWarning: axis != 0 for ndim == 1; this will raise an error in future versions of numpy
  samples = numpy.concatenate((numpy.zeros(add_to_start), samples), axis=1)
2014-08-31 01:51:12,125 DEBUG   [mediagoblin.media_types.audio.processing] Saving spectrogram...
2014-08-31 01:51:14,408 DEBUG   [mediagoblin.storage.cloudfiles] Sending [u'media_entries', u'814', u'AX11_-_Fiasco.spectrogram.jpg'] to cloudfiles...
2014-08-31 01:51:17,180 ERROR   [mediagoblin.processing.task] An unhandled exception was raised while processing <MediaEntry 814: AX11_-_Fiasco>
2014-08-31 01:51:17,180 WARNING [mediagoblin.processing] No idea what happened here, but it failed: NotImplementedError('This feature not implemented in this storage API implementation.',)
2014-08-31 01:51:17,186 DEBUG   [mediagoblin.tools.processing] No processing callback for <MediaEntry 814: AX11_-_Fiasco>
2014-08-31 01:51:17,186 WARNING [mediagoblin.processing] No idea what happened here, but it failed: NotImplementedError('This feature not implemented in this storage API implementation.',)
Error - <class 'mediagoblin.storage.NotImplementedError'>: This feature not implemented in this storage API implementation.
URL: https://goblinrefuge.com/mediagoblin/submit/
File '/path/to/mediagoblin/lib/python2.7/site-packages/Paste-1.7.5.1-py2.7.egg/paste/exceptions/errormiddleware.py', line 144 in __call__
  app_iter = self.application(environ, sr_checker)
File '/path/to/mediagoblin/lib/python2.7/site-packages/Paste-1.7.5.1-py2.7.egg/paste/urlmap.py', line 203 in __call__
  return app(environ, start_response)
File '/path/to/mediagoblin/mediagoblin/app.py', line 265 in __call__
  return self.call_backend(environ, start_response)
File '/path/to/mediagoblin/mediagoblin/app.py', line 242 in call_backend
  response = controller(request)
File '/path/to/mediagoblin/mediagoblin/decorators.py', line 45 in wrapper
  return controller(request, *args, **kwargs)
File '/path/to/mediagoblin/mediagoblin/decorators.py', line 72 in new_controller_func
  return controller(request, *args, **kwargs)
File '/path/to/mediagoblin/mediagoblin/decorators.py', line 45 in wrapper
  return controller(request, *args, **kwargs)
File '/path/to/mediagoblin/mediagoblin/decorators.py', line 72 in new_controller_func
  return controller(request, *args, **kwargs)
File '/path/to/mediagoblin/mediagoblin/decorators.py', line 101 in wrapper
  return controller(request, *args, **kwargs)
File '/path/to/mediagoblin/mediagoblin/submit/views.py', line 67 in submit_start
  urlgen=request.urlgen)
File '/path/to/mediagoblin/mediagoblin/submit/lib.py', line 199 in submit_media
  run_process_media(entry, feed_url)
File '/path/to/mediagoblin/mediagoblin/submit/lib.py', line 250 in run_process_media
  task_id=entry.queued_task_id)
File '/path/to/mediagoblin/lib/python2.7/site-packages/celery-3.1.13-py2.7.egg/celery/app/task.py', line 547 in apply_async
  link=link, link_error=link_error, **options)
File '/path/to/mediagoblin/lib/python2.7/site-packages/celery-3.1.13-py2.7.egg/celery/app/task.py', line 736 in apply
  request=request, propagate=throw)
File '/path/to/mediagoblin/lib/python2.7/site-packages/celery-3.1.13-py2.7.egg/celery/app/trace.py', line 354 in eager_trace_task
  uuid, args, kwargs, request)
File '/path/to/mediagoblin/lib/python2.7/site-packages/celery-3.1.13-py2.7.egg/celery/app/trace.py', line 253 in trace_task
  I, R, state, retval = on_error(task_request, exc, uuid)
File '/path/to/mediagoblin/lib/python2.7/site-packages/celery-3.1.13-py2.7.egg/celery/app/trace.py', line 240 in trace_task
  R = retval = fun(*args, **kwargs)
File '/path/to/mediagoblin/mediagoblin/processing/task.py', line 98 in run
  processor.process(**reprocess_info)
File '/path/to/mediagoblin/mediagoblin/media_types/audio/processing.py', line 270 in process
  self.generate_thumb(size=thumb_size)
File '/path/to/mediagoblin/mediagoblin/media_types/audio/processing.py', line 196 in generate_thumb
  spectrogram_filepath = mgg.public_store.get_local_path(spectrogram)
File '/path/to/mediagoblin/mediagoblin/storage/__init__.py', line 160 in get_local_path
  self.__raise_not_implemented()
File '/path/to/mediagoblin/mediagoblin/storage/__init__.py', line 80 in __raise_not_implemented
  ""This feature not implemented in this storage API implementation."")
NotImplementedError: This feature not implemented in this storage API implementation.
}}}
"	ayleph
	1004	Videoplayer has wrong height for videos with width>640	programming		defect		accepted	2014-10-20T16:28:12Z	2016-07-22T16:02:24Z	"It is possible to skip transcoding videos that are larger than 640 pixels in some dimension. For instance, this way a user can upload 1280x720 webm videos without transcoding them to smaller. However, there is a bug in the player for these videos.

If a video is wider than 640 pixels, the width of the videoplayer is scaled to 640 pixels but the height of the videoplayer is the same as of the video. Thus, for a 1280x720 video, the player has size 640x720, leaving black bars on top and bottom of the video. Fullscreen obviously works fine.

A sketch of a solution:
HTML video player is scaled appropriately if only width or height is given. Thus, give the width as min(width,640) and let the height be chosen automatically.

Modify the video tag in the template mediagoblin/templates/mediagoblin/media_displays/video.html:
{{{
<video controls
          {% if global_config['plugins']['mediagoblin.media_types.video']['auto_play'] %}autoplay{% endif %}
          {% if media.media_data.width > 640 %}width=640{% else %}width={{ media.media_data.width }}{% endif %}
          preload=""auto"" class=""video-js vjs-default-skin"">
}}}

A few things to consider:
 * I hardcoded 640, but it should be retrieved somehow.
 * I removed data-setup because it breaks this fix and I think it's not valid HTML"	Jaakko Luttinen
	1006	CSRF cookie not set if visiting a media page directly	programming		defect		new	2014-10-24T12:53:20Z	2016-01-28T10:27:43Z	"When visiting a media page via a direct link (i.e. without going through the main page), the CSRF cookie is not set for the root path of the domain. Consequently, when a user tries to submit a comment, it fails with 403 Forbidden:

{{{
403 Forbidden

CSRF cookie not present. This is most likely the result of a cookie blocker or somesuch.<br/>Make sure to permit the settings of cookies for this domain
}}}

The reason for this is that the CSRF meddleware sets cookie path to {{{request.environ['SCRIPT_NAME']}}}, and the cookie is not sent when accessing the comment add page.

The issue can be fixed by introducing a new setting {{{csrf_cookie_path}}}, set by default to '/' and using it instead of {{{request.environ['SCRIPT_NAME']}}}. Django does [https://docs.djangoproject.com/en/1.7/ref/settings/#csrf-cookie-path something similar].

Attached is a patch.
"	Peter Kuma
	1014	Skeleton required for using mediagoblin, but not included in pypi	programming		defect		new	2014-10-26T18:18:16Z	2014-10-26T18:18:16Z	"mediagoblin/templates/mediagoblin/base.html has a link to /css/extlib/skeleton.css, which is normally at mediagoblin/static/css/extlib/skeleton.css via the web servers config.  mediagoblin/static/css/extlib/skeleton.css is a symlink to extlib/skeleton/stylesheets/skeleton.css, which is not included in the pypi release. 

This means that if you download the pypi release, you have to download skeleton separately."	Simon Fondrie-Teitler
	1061	Media gets stuck in processing	programming		defect		new	2014-12-11T08:06:59Z	2015-01-04T02:59:32Z	"I occasionally see media get ""stuck"" in processing in the media processing panel. The web UI displays the transcoding progress, but the progress is stuck at x% and does not update no matter how long I let it sit.

When this happens, there is nothing useful in my DEBUG log. The media is not available for reprocessing. The only thing I can do is call {{{deletemedia}}} on the media ID and ask the uploader to re-submit the file.

{{{
$ bin/gmg reprocess available 1549
** Message: pygobject_register_sinkfunc is deprecated (GstObject)
Available processors:
=====================

}}}

The attached image shows an example of this issue. Media ID 1549 has been stuck at 23% for nearly a week at time of upload; media ID 1658 has been stuck at 95% for less than a day. There have been over 100 successfully processed items in between them."	ayleph
	1063	Impeller should upload photos	programming		defect		accepted	2014-12-11T14:42:24Z	2017-07-01T20:53:47Z	"It would be great to get it so that you could upload photos to mediagoblin via Impeller. Currently however you can't even get through the OAuth. It initially looked like Impeller was site scraping however it would seem:

/from #pump.io on Freenode/
{{{
<jessica_lily> XgF: I'm wondering how possible it would be to change the site scraping behaviour of impeller with regards to the verifier? or at least provide some kind of fallback which allows you to copy and paste the verifier and enter it manually
<XgF> Jessica_lily: eh? Impeller expects a redirect to a https uri with the verifier. When it detects that, it closes the web view and does the background oauth flow
}}}

"	Jessica Tallon
	1070	Handling languages Babel currently doesn't (Na'vi, Lojban)	infrastructure		defect		accepted	2014-12-12T21:35:24Z	2016-01-09T22:36:44Z	"Currently, Babel doesn't support languages like Na'vi, Lojban.  The unfortunate side effect of this is that when our language tooling hits these languages, it explodes.

Looking into how to fix this, it looks like Babel [https://github.com/mitsuhiko/babel/blob/master/scripts/download_import_cldr.py#L16 downloads] the [http://cldr.unicode.org/ CLDR data] on languages, and this is used to populate a big ol' dictionary which is stored in [https://github.com/mitsuhiko/babel/blob/master/babel/localedata.py#L22 babel.localedata:_cache].  Unfortunately, while we *can* monkeypatch this variable (simply [https://github.com/mitsuhiko/babel/blob/master/babel/localedata.py#L51 load('en_US')] once then append 'jbo' or etc to the dictionary), the value we would have to supply is a very, very complex data structure, and I doubt we could provide it correctly.  This value is extracted by Babel during the [https://github.com/mitsuhiko/babel/blob/master/scripts/download_import_cldr.py CLDR data downloading/importing process] and it is a non-trivial exercise.

I [https://github.com/mitsuhiko/babel/issues/30#issuecomment-66796699 filed a bug looking for a workaround for unidentified languages], but I think a workaround will be hard given the large amount Babel relies on this data.  So, probably, we will need to supply CLDR data, but that data is too complex to just write by hand.

One way or another (monkeypatching or not), in order to supply these, we need the proper CLDR data.  I spoke to someone involved in the process, and found two things:

* They are welcome to contributions of Na'vi and Lojban to their catalog, and there is a [http://cldr.unicode.org/development/new-cldr-developers new contributor page]. We should (and likely will) do this.  Probably, the process for getting things officially will take some time.
* In the meanwhile, while going through the process to generate those, we should be able to get the appropriate files to run through the necessary tooling to generate the data we need.
"	Christopher Allan Webber
	5316	disallow creating blog post without title	programming		defect	ayleph	in_progress	2015-04-27T19:48:05Z	2016-03-06T21:28:39Z	The blog plugin allows users to create a blog post without a title. This also causes the slug to be empty. The server throws an error goblin when a user clicks on a blog entry with no title and no slug.	ayleph
	5334	Playing MediaGoblin music on smartphones seems problematic?	programming		defect		new	2015-07-02T15:35:04Z	2015-07-02T15:35:04Z	"I posted on pump about testing playing audio at goblinrefuge.com (runs 0.8.0) since there seems that some smartdevices cannot use the ""play"" button or even worse, nothing at all (the ""WebM file"").

I asked them to test both MP3 and OGG and here is a list of replies I got:

Samsung Galaxy S2: Play does not work for both. WebM works for both.
Samsung Galaxy Tab 3: Same as above.

Samsung Galaxy Note 4 w/ Android 5.0.1. Using Firefox mobile. It all works. :-)

Android 5 on Motorola Moto E 4G, Firefox: Everything works. Interestingly, ogg and webm play in the browser, but the mp3 it wants to download and then I can play it offline. I wonder if that is the choice of the Goblin or the Fox.
Actually it's not Mozilla's Firefox but the F-Droid Fennec, but for these purposes it should be equivalent.

Also, the web browser app probably plays a role. (For Android there are at least three popular browsers.)

Does not work (“Play” does nothing) in zirco or AOSP stock browser in my Samsung Galaxy Ace with cyanogenmod 7.2 (Android 2.7). I suppose this is normal (too old browsers)…

I can report (from my sister) that iPhone 5 default browser can play MP3 but not OGG."	molgrum
	5346	Unclear copyright of extlib/thingiview.js	programming		defect		new	2015-08-22T08:47:28Z	2016-09-18T11:00:36Z	This is not spam. This is a bug report.	anongoblin
	5380	API limits outbox queries past 20	programming		defect		new	2015-12-27T21:35:53Z	2016-01-25T20:07:53Z	"I am unable to get activities from someone's outbox with the following code:
{for activity in user.outbox[19:21]} or {for activity in user.outbox[:21]}. For some reason, outbox queries return None past item 20.
"	Dylan Jeffers
	5404	X-Frame-Options for admin/moderator views	programming		defect		review	2016-01-22T18:55:42Z	2018-10-30T19:03:57Z	"Currently Mediagoblin doesn't do anything to prevent [https://www.owasp.org/index.php/Clickjacking clickjacking].

Setting {{{ X-Frame-Options: SAMEORIGIN }}} in responses for those views would protect against this attack."	Matt Molyneaux
	5437	blog media_type uses inconsistent naming	programming		defect	ayleph	in_progress	2016-03-03T01:40:07Z	2017-06-29T04:29:05Z	"The blog media_type hasn't been working for quite some time due to naming conflicts. The problem was introduced in [http://git.savannah.gnu.org/gitweb/?p=mediagoblin.git;a=commitdiff;h=511ce0d6c755dbdbe4f045f20fd57164584958f3 511ce0d]when `mediagoblin/media_types/blog/__init__.py` was changed as below.

{{{
--- a/mediagoblin/media_types/blog/__init__.py
+++ b/mediagoblin/media_types/blog/__init__.py
@@ -18,7 +18,7 @@ from mediagoblin.media_types import MediaManagerBase

 from mediagoblin.tools import pluginapi

-MEDIA_TYPE = 'mediagoblin.media_types.blog'
+MEDIA_TYPE = 'mediagoblin.media_types.blogpost'
}}}

This causes new blog entries to be added to `core__media_entries` with `media_type = mediagoblin.media_types.blogpost`. However, all the blog code is located at `mediagoblin/media_types/blog`. This causes server errors like below.

{{{
...
File '/path/to/mediagoblin/mediagoblin/db/models.py', line 665 in media_data
  return getattr(self, self.media_data_ref)
File 'build/bdist.linux-x86_64/egg/sqlalchemy/util/langhelpers.py', line 754 in __get__
File '/path/to/mediagoblin/mediagoblin/db/models.py', line 687 in media_data_ref
  return import_component(self.media_type + '.models:BACKREF_NAME')
File '/path/to/mediagoblin/mediagoblin/tools/common.py', line 34 in import_component
  __import__(module_name)
ImportError: No module named blogpost.models
}}}

I fixed this long ago on one of my instances. I'll post the patch and migration that would be required to fix it on someone else's instance."	ayleph
	5444	Implement 'type_match_handler' hook for all core media types	programming		defect	ayleph	in_progress	2016-03-23T17:14:45Z	2020-05-12T03:23:18Z	"Since the gstreamer-1.0 update, uploaded media are sniffed and very often (always?) produce messages like below, even when the media are successfully processed. Breton says this is not intentional and should be addressed.

{{{
No plugins handled extension .jpg
}}}"	ayleph
	5447	Make disabling plugins less tricky	programming		defect		new	2016-03-28T19:28:17Z	2021-09-20T05:54:38Z	"Now that we're using Alembic's branching model to enable long-running plugin migration branches, disabling plugins has gotten... complicated.  From the current git master docs:

{{{
Deactivating plugins
====================

You should be aware that once you enable a plugin, deactivating it
might be a bit tricky, for migrations reasons.  In the future we may
produce better tooling to accomodate this.  In short, you will need to
do a bit of database surgery by:

- Removing all tables and indexes installed by the plugin
- Removing the plugin's migration head id from the `alembic_version`
  table.  (You might be able to determine which to remove via
  examining the output of `./bin/gmg alembic heads`)

Note that this is a VERY TRICKY process, and you should be sure to make
a backup first.  You've been warned!
}}}

Well, obviously this isn't great.  And the reason this isn't great is if you disable a plugin, the revisions for that plugin can't be found (because they aren't made available to alembic's migration path), and thus alembic is like ""wtf is going on?""

So anyway, the docs suggest a method of ""database surgery"" to be able to install things, but of course manual surgery is unreliable.  We should provide a parameter so that plugins can define their own ""uninstall"" rule that does this kind of manual surgery *for* the user (deleting tables, etc), and then delete the latest revision for that branch path."	Christopher Allan Webber
	5474	Switch assert statements into proper exceptions	programming		defect		new	2016-09-08T23:42:28Z	2020-04-23T12:02:22Z	"See [https://access.redhat.com/blogs/766093/posts/2592591 this article]; we use assert as a ""cheap and easy"" way to throw errors if we don't want something, but it's not meant for that... and we might even miss serious / dangerous things.  Once python is compiled into bytecode, assert might not run."	Christopher Allan Webber
	5483	audio player is not accessible with screen readers	graphic design/interface		defect		accepted	2016-10-17T15:03:46Z	2016-10-18T22:32:48Z	"Hi,
I am blind, so use a screen reader to access the web. However, your audio player (not sure about video) is inaccessible with them. For example, the play button shows to my screen reader as a clickable of 'black up pointing small triangle"" which is not very descriptive. However, when I do click on the triangle, the pause button is a symbol that my screen reader cannot recognize, which simply speaks as clickable. This is on windows, using jaws for windows. I haven't tested with NVDA (an open source screen reader), but with orca on linux, the clickable isn't even seen at all, and there is no way to play the audio.
For audio (and video, possibly) I can recommend able player (https://ableplayer.github.io/ableplayer/) as an alternative that is guaranteed to be accessible if done right. IT could also introduce new features, such as closed captions and transcripts on videos.
Thanks,
-Michael.
"	Michael Taboada
	5485	Audio player controls not announced to Orca screenreader	graphic design/interface		defect		accepted	2016-10-18T19:43:41Z	2016-10-18T22:19:01Z	"As reported on the Orca Mailing List: https://mail.gnome.org/archives/orca-list/2016-October/msg00113.html

there is at least one instance with an inaccessible video player control:
http://vidstorm.tk/u/storm_dragon/m/the-insane-song/

Looking into the Markup it looks like audio.js is the problematic bit:
http://git.savannah.gnu.org/cgit/mediagoblin.git/tree/mediagoblin/static/js/audio.js

The user reported it in https://mail.gnome.org/archives/orca-list/2016-October/msg00120.html as

""There are no controls, no play, stop, pause, anything other than the slider, which itself is unlabeled.""

A good entry point was suggested in https://mail.gnome.org/archives/orca-list/2016-October/msg00121.html

What led to the decision of using/writing this audio.js?
Where there alternatives to be considered?"	André Jaenisch
	5486	Mark all read does not mark all read	programming		defect		new	2016-10-22T10:03:11Z	2016-10-22T10:03:11Z	As per summary, when multiple comments were added to media, clicking the “Mark all read” button doesn't do anything. Visiting the media page doesn't either. Only clicking on each comment in the notification box to highlight them en the media page removes them from there. If multiple comments are for the same media, one needs to click on them separately to make each of them disappear from the notification box.	Olivier Mehani
	5502	Does not work with LibreJS	graphic design/interface		defect	Andreas Nilsson	in_progress	2017-03-20T18:47:14Z	2021-09-19T13:47:55Z	"GNU MediaGoblin does not work with GNU LibreJS.

There was no ""JavaScript license information"" link on the GNU MediaGoblin page, so I coludn't manually check it."	CharlieBrown
	5509	Video with lower dimensions gets transcoded to higher dimensions	programming		defect		new	2017-05-29T13:56:00Z	2021-09-19T13:30:32Z	"I uploaded a video with (256, 144) dimensions, and changed the max default size (that a video can be transcoded to) to (1920, 1080). And, to my surprise, the video actually got transcoded to those dimensions.

So, when I viewed it on my local machine, there was zero padding (black colour) added to the top and bottom of the video to be in that resolution (dimensions).

''These are the images:''
[[Image(https://ibb.co/cb1CAv)]]
[[Image(https://ibb.co/cxwqxa)]]

I checked '''skip_transcode()''' method myself, and I realized the dimensionality check was working fine, but there was a problem with container-formats ''(not sure if it is a problem)''.

Basically, the video had 'ISO-MP4' container-format but mediagoblin config container-format string only allowed 'Matroska' container-format, and because of this the video was getting transcoded again (even though all other checks were fine).

'''Shall we remove this container-format check? Or add more container-formats to the config?'''"	Vijeth
	5528	xss in videojs-swf	programming		defect		new	2017-09-27T00:27:03Z	2017-09-27T07:18:08Z	"found xss in videojs swf

[https://mediagoblin.org/js/extlib/video-js/video-js.swf?readyFunction=alert]

[https://mediagoblin.org/js/extlib/video-js/video-js.swf?poster=http://www.flash-test.net/relog.swf]

VideoJS does not escape metadata passed to JavaScript via ExternalInterface. "	shivbihari pandey
	5564	Show unprocessed media in processing panel	programming		defect		review	2018-04-09T06:02:38Z	2021-09-19T13:42:03Z	Media with the state 'unprocessed' don't appear in the user or moderation processing panels. I'm splitting this off from #5491 as its own separate issue.	ayleph
	5599	Celery requires python3-gi and python3-gst-1.0 even when audio/video not enabled	programming		defect		new	2020-04-28T15:22:39Z	2020-04-29T02:55:17Z	"I've just been testing the installation instructions and noticed that I needed to install python3-gi and python3-gst-1.0 to avoid celery startup failures like:

{{{
Apr 29 00:34:00 swing-virgo celery[6374]:   File ""/srv/mediagoblin.example.org/mediagoblin/mediagoblin/media_types/video/transcoders.py"", line 34, in <module>
Apr 29 00:34:00 swing-virgo celery[6374]:     import gi
Apr 29 00:34:00 swing-virgo celery[6374]: ModuleNotFoundError: No module named 'gi'
}}}

and


{{{
Apr 29 00:46:38 swing-virgo celery[7111]:   File ""/srv/mediagoblin.example.org/mediagoblin/mediagoblin/media_types/video/transcoders.py"", line 35, in <module>
Apr 29 00:46:38 swing-virgo celery[7111]:     gi.require_version('Gst', '1.0')
Apr 29 00:46:38 swing-virgo celery[7111]:   File ""/usr/lib/python3/dist-packages/gi/__init__.py"", line 129, in require_version
Apr 29 00:46:38 swing-virgo celery[7111]:     raise ValueError('Namespace %s not available' % namespace)
Apr 29 00:46:38 swing-virgo celery[7111]: ValueError: Namespace Gst not available
}}}

This should only happen if audio/video is enabled. For now I've updated the install docs to include these dependencies."	Ben Sturmfels
	5623	im unable to play videos after disableing transcoding	graphic design/interface		defect		new	2020-07-22T06:52:02Z	2021-04-09T07:50:48Z	"im unable to play videos after disableing transcoding per https://wiki.mediagoblin.org/Configure_MediaGoblin#Disable_transcoding
i added the following to the bottom of mediagoblin.ini and did ./bin/gmg dbupdate, and now it no longer plays videos i upload, even though the direct download link works just fine and plays the video in browser, in chrome and firefox, any help would be appreaciated, ty

[[[skip_transcode]]]
mime_types = video/webm, video/ogg, video/mp4, audio/ogg, application/ogg, application/x-annodex
container_formats = Matroska, Ogg, ISO MP4/M4A
video_codecs = VP8 video, VP9 video, Theora, H.264, H.264 / AVC, MPEG-4 video
audio_codecs = Vorbis, MPEG-4 AAC audio
dimensions_match = false"	Easton
	467	write test scaffolding for core plugins	programming		enhancement		accepted	2012-07-13T13:02:47Z	2016-09-18T11:46:29Z	"The core plugins need some additional test scaffolding to make it easier to write core plugin tests.

Why?

Well, so, the problem is that mediagoblin configuration is global and also which plugins are running is also global. There's a bunch of setup/cleanup that needs to get done. It should go in scaffolding to make it easier to deal with."	Will Kahn-Greene
	486	Drag and drop media uploading support	programming		enhancement		accepted	2012-08-19T14:25:48Z	2016-01-14T09:39:59Z	"We should add drag and drop media uploading support to MediaGoblin.  Plenty of other applications (including OpenPhoto) have this; why not us?

https://developer.mozilla.org/en-US/docs/DragDrop/Drag_and_Drop

It might be worth discussing whether or not we want to do some other overhauls to make our upload page more dynamic as well, but just supporting dragging and dropping minimally might be a good first step.

Not sure if this should be a plugin or not?  I think probably not but would be interested in what others would think."	Christopher Allan Webber
	551	Create test that makes sure all migrations are sane	programming		enhancement		accepted	2012-11-26T22:35:54Z	2015-02-19T04:51:25Z	"We should have a unit test that instantiates the tables at their first, pre-migration state (basically right after the move to SQL, commit ce29c140ed90fe0e19ed1b68ca8f7cf27aa03e8e) and runs all migrations, then creates a new database and instantiates the models at their current state, and sees if they match.  If they don't, the test should fail.

Note: we can't test for constraints in sqlalchemy, but we should otherwise be able to test to moderately general migration sanity.

(Bonus points if it adds a user and a couple of media entries with appropriate media files, etc, but not required to close this bug.)"	Christopher Allan Webber
	563	Create License Table	programming		enhancement		new	2012-12-10T13:30:12Z	2016-10-07T03:43:25Z	"Currently, we store a media's license through it's UNICODE URL, this means lots of duplication. A patch to set a user's preferred default license also stores the preference as Unicode.

Would it make sense to have a table containing the available licenses (this would let us include more things like ""Human readable help text"" etc per license easily and a media's license would refer to it via a ForeignKey (and so would a user's default license choice).

Less duplication and license customization would happen by fudging with the table (so could be done by web admin interface or plugin or whatever)."	spaetz
	567	Support For Ogg Vorbis+Theora	programming		enhancement		accepted	2012-12-14T05:37:06Z	2017-03-09T22:03:16Z	"It appears that recordings added are converted to WebM (Vorbis + VP8 inside the modified Matroska container.) Can you please add support to instead encode into Ogg Vorbis + Theora? Every browser that has built-in support for WebM also has support for Ogg Vorbis + Theora but the reverse is not true, giving Ogg Vorbis + Theora greater browser compatibility.

Add to this that the Java Cortado applet [0] can be used as a fallback method means that browsers as far back as Netscape 4 can play these files.

[0] http://www.theora.org/cortado/"	Jason Self
	574	Add slideshow view	programming		enhancement		reopened	2012-12-18T11:40:09Z	2012-12-18T11:54:29Z	"At least for image-based media it would be nice to present slide show views for tag/user/collection-based series of media.

We could make use of http://www.justinbarkhuff.com/lab/lightbox_slideshow/ or something similar and.
I guess this is mostly a template job as the backend should kind of exist.

Use case: I create a collection of my last holiday pictures or family event and want to share those with my friends and family for convenient viewing."	spaetz
	594	Provide consistent error handling in the API	programming		enhancement	joar	new	2013-01-13T22:11:52Z	2016-01-13T17:37:21Z		joar
	603	Subscribing to users across instances	programming		enhancement		new	2013-01-25T08:43:21Z	2017-07-01T20:51:03Z	"Between remote instances of mediagoblin, enable subscription from user A to user B. 

source : http://mediagoblin.org/news/fsws-2012-wrap-up.html"	Arthur Lutz
	607	Implement WebActivities and WebIntents	programming		enhancement		new	2013-01-25T08:51:28Z	2017-07-01T20:52:07Z	"
https://wiki.mozilla.org/WebAPI/WebActivities

http://webintents.org/

These future ""standards"" could solve the problem to remote interaction between mediagoblin instances for example ""When I do X task (such as favoriting, subscribing, or adding to a collection), I want to use Y service""

source : http://mediagoblin.org/news/fsws-2012-wrap-up.html"	Arthur Lutz
	613	Improving Media collection	programming		enhancement		accepted	2013-01-31T16:52:12Z	2015-02-19T05:11:18Z	"Summary of changes : 

Basically, to idea is to replace the tedious process to add medias to collection. It's done, by putting the form where media are.
- When you submit a media
- When you are on a media's page.

The ""add to collection"" page no longer exists (yet I haven't removed anything that whould allow it to work... up to you).

TEMPLATES 

- The media_collect.html has been splitted to be used as a stand alone or as par of another form (start.html). The media's information has been removed, it's now contextual. 

- The ""embeddable form"" is in utils/collection_form.html

- submit/start.html embeds the form above

VIEWS

The ""add to collection"" method has been put in tools/collection.py so it can be called from the ""submit a media form"" and from within the media page.

- in user_pages/views.py
  - media_home : adding the collection form
  - media_collect : it calls the collection_tools method instead 

- in submit/views.py : calls the collection_tools method, passing the new media's data

I've slightly changed the behavior when you type an existing collection : it add the media to the existing collection instead of showing an error. It was mainly because I couldn't find a way to reload the media entry page without losing the filled form. Moreover, it's a smoother way to handle the error. 
 
Here are the changes

https://github.com/MusiqueLibre/DogmaGoblin/tree/collection_improvement"	Tumulte
	634	Implement SVG support	programming		enhancement	pythonsnake	in_progress	2013-02-12T17:23:40Z	2013-09-24T12:21:55Z	I would like to request support for support for SVG (images)	mrb
	642	Add real_world_date / date_taken field	programming		enhancement		new	2013-02-18T21:15:47Z	2013-05-18T14:55:39Z	"It would be very useful to be able to sort photographs on the date they were taken (which may be different from the date the image file was created).

This will allow users to for example ask for all photographs taken on July 1976.

When users scan pictures or otherwise digitize older media the file creation date will not match the date of the event pictured in the media.  This field is about the date of whatever is pictured in the media, and so should be called something like real_world_date, EXIF calls it date_taken.

For files with an EXIF date_taken field, the equivalent mediagoblin database field should get auto-filled when an image is added.  Not all media have such a field, so it should be user editable.  The EXIF date_taken could also be wrong, so user editable also means the user should be able to clear/delete the date if it was auto-filled.

I discussed this with Elrond (and odinho) on #mediagoblin, 2013-02-18 19:45 UTC."	warp
	659	mark_entry_failed should possibly rollback session	programming		enhancement		new	2013-03-11T21:16:55Z	2014-09-18T21:38:25Z	"{{{mark_entry_failed}}} is often called after an exception.
This exception might be an sql exception (it shouldn't, but well, it happens). After an sql exception the session is in a broken state and mark_entry_failed can't do its job and mark the entry failed: If a session is broken, one can't use it for anything, until one cleans it up using {{{.rollback()}}}.

So the suggestion is to call {{{Session.rollback()}}} in {{{mark_entry_failed}}}.

Rationale:

1. If the session is clean: fine.
2. If the session is broken: better clean it up instead of having a exception on an exception (harder to read).
3. If someone missed to {{{.save()}}} something, oh well, their fault.
"	Elrond
	684	Allowing plugins to add commands to 'gmg'	programming		enhancement		review	2013-04-23T09:32:26Z	2020-05-11T04:38:23Z	"My gmg_localfiles has a import_files.py file for importing. ( https://github.com/Velmont/gmg_localfiles )

It'd be nice to rather get a new gmg command when you have installed the plugin."	Odin Hørthe Omdal (Velmont)
	715	Move CloudFiles storage backend over to pyrax	programming		enhancement	ayleph	in_progress	2013-06-01T22:52:52Z	2020-04-23T12:28:48Z	python-cloudfiles is no longer being maintained, we should move to pyrax instead: https://github.com/rackspace/pyrax	joar
	719	support for timeside - an audio component	programming		enhancement		new	2013-06-18T08:25:37Z	2013-06-18T08:25:37Z	"timeSide is an ""Open and fast web audio components (Python, HTML, CSS and JavaScript)""
aside from acting as a player it allows for ""deep linking"" and commenting on audio streams. 
good fit for communal archiving

github: https://github.com/yomguy/TimeSide
demo: http://parisson.telemeta.org/archives/items/PRS_07_01_03/

i'm an archivist by heart, got here via alon l."	yair99
	733	When viewing a Collection item, only cycle through the media in the Collection	programming		enhancement		review	2013-07-10T17:06:52Z	2013-09-29T20:11:31Z	"Currently if you click on a media entry from within a collection, it takes you to the media's page {{{/u/rodney757/m/photo/}}}. From there when you click {{{older}}} or {{{newer}}}, it cycles through all of the user's media. I think that it should only cycle through the media in the collection.

cwebb says:

    maybe like when viewing a page like:
    /u/cwebber/m/new-comic/?in=collection:comics	  
    which would mean you're browsing in the ""comics"" collection	 
    not sure though	
    could also do session hacks to preserve state	
    I think flickr does something similar.	"	rodney757
	734	Document the config options available in config_spec.ini	documentation		enhancement		accepted	2013-07-12T19:08:42Z	2017-02-09T21:50:28Z	It would be nice if we had all of the config options documented in one place.	rodney757
	742	Licenses display are illogical	programming		enhancement		new	2013-07-31T12:50:16Z	2013-08-08T21:57:13Z	"Atm, licenses use the uri as the key to retrieve the license, and the abbreviation as the name (the complete name is, afaik, isn't used anywhere)

This is not only illogical, but the licenses' text url is the thing that is most likely to change overtime (maybe not for CC's but for small licenses it can happend).

I think it's a better idea to use the full name of the license in the drop down menu, keep in mind most people don't understand much about this. CC-BY-SA is too elitist. ""Creative Commons"" will be more likely to ring a bell.

Here's few changes I suggest : 
in submit/forms.py#69
[-]return [(lic.uri, lic.abbreviation) for lic in SORTED_LICENSES]
[+] return [(lic.abbreviation, lic.name) for lic in SORTED_LICENSES

 You'll notice this poses some visual issues : why not radio, then ? Drop down lists are usually a bad option when there's too many entry anyway.

----

In template : 
[-] <a href=""{{ media.license }}"">{{ media.get_license_data().abbreviation }}</a>

[+] <a href=""{{ media.get_license_data().name }}"" title="" {% trans %} complete text of license{% endtrans %} : {{media.get_license_data().name }}"">
[+]        <acronym title=""{{media.get_license_data().name }}"">
[+]            {{ media.get_license_data().abbreviation }}
[+]        </acronym>
[+]   </a>

Also solving some accessibility/semantic issues...
"	Tumulte
	745	Plugin Migration Tests	programming		enhancement		new	2013-08-02T14:36:20Z	2016-01-13T18:12:00Z	So currently we have tests for migrations and the new foundations stuff, but we don't have any tests that use plugins. It would be great if someone wanted to write some tests for migrations and foundations from a plugin.	rodney757
	775	confirm on exit when uploading	programming		enhancement		new	2013-09-24T18:17:53Z	2016-01-12T23:02:42Z	"
http://www.openjs.com/scripts/events/exit_confirmation.php"	yair99
	782	Spectogram should be created client side	programming		enhancement		accepted	2013-09-29T17:10:56Z	2015-02-19T05:10:57Z	Mediagoblin should get the the data use in the spectrogram from the file, but the actual rendering should be passed to the browser and done client side. 	Simon Fondrie-Teitler
	794	Meddleware for private instances	programming		enhancement		new	2013-10-11T17:09:27Z	2013-10-11T17:09:27Z	"Hi,

In spite of the coming pump.io integration and a more fine-grained permission system, I wrote a simple meddleware which prohibits access for all non-authenticated users a few weeks ago.

I do not know the policy, but as meddlewares are optional I thought maybe you want to add it to the main repo, or should i add it to http://wiki.mediagoblin.org/Available_Plugins ?

Source is at https://github.com/phaer/mediagoblin/tree/phaer/private-meddleware"	phaer
	798	Change route priority : plugins should override core	programming		enhancement		new	2013-10-19T15:30:41Z	2013-10-19T15:30:41Z	"Hey !

It's impossible so far to override an existing route in a plugin. Let's say you want to add some stuffs in the homepage... that's not possible.

Can you either allow plugins' routes to override core or add an option to do so ?

It it goes against any good practice, please note it's only a problem with the homepage. you can easily create new routes and change links in templates accordingly. "	Tumulte
	799	Support chapters or jump labels for videos/audios	programming		enhancement		new	2013-10-19T17:18:06Z	2013-10-19T17:18:06Z	Hi, it would be great, if the author would have the possibilities to define jump labels at the timeline. This feature can be useful if you want to '''share tutorials, publish CDs''' with different songs in a single upload etc.	user-A
	800	Comments to a certain timestamp/time period	programming		enhancement		new	2013-10-19T17:30:12Z	2013-10-19T17:30:12Z	It would be great, if the users had a possibility to place comments for a certain point or period of time. This would allow them to give feedback on certain aspects during the audio/video recordings, like refer to some aspects of a talkshow/interview/tutorial/podcast/...	user-A
	801	Links in Videos/photos	programming		enhancement		new	2013-10-19T17:38:34Z	2013-11-01T23:55:54Z	I would like to have a feature, that allows you to  add some clickable links like youtube offers. This would allow you to set some backlinks to other videos/fotos or external webpages. Maybe we can allow the community to vote on blocking the links, so we can avoid annoying links like at some yt video channels.	user-A
	804	Improve user interaction/contribution/ -> crowdsourcing	programming		enhancement		new	2013-10-19T18:19:07Z	2016-01-12T22:17:31Z	"Hi, I like to submit the idea, that it might be wise, if gobblin gets more toward enable endusers to contribute to shared media. This can be for example:
* #800 split/mark periods in the mediastream and assist on identifying chapters
* #750 allow to contribute own translations of subtitles
* ...
I know that this will get complex and that there are some concerns, if a platform is that open (vandalism esp. spamming, ...). But IMHO if we allow the admin to manually change this settings, it would be a good feature, thats supports the creation of a community around a gobblin server :)"	user-A
	811	Move away from Paste*	infrastructure		enhancement		new	2013-11-12T18:44:00Z	2021-04-09T06:59:03Z	"I don't like the PasteScript and PasteDeploy libraries that we use since they seem to lack a visible community and there are other replacements out there with wide adoption and living communities.

I talked a bit with Chris on IRC about this, this issue could be seen as a RFC on this my proposal."	joar
	832	add preprocess hook to process() of media_types.image processors	programming		enhancement		new	2014-01-14T17:50:22Z	2014-01-14T17:50:22Z	"My branch image_preprocessing_hook at https://gitorious.org/mediagoblin-stock/mediagoblin/source/19d1f068b834e5f17106125b0199d3069b61afd3: has a hook (named imageprocessor_preprocess for now) that runs after common_setup in process() – useful for doing stuff to uploaded images before they are stored and resized.

It's currently used in this plugin: https://gitorious.org/mediagoblin-stock/mediagoblin-hidden_original

It'd be nice to have this in master :)
"	Kevin Brubeck Unhammer
	863	A way for plugins to add translateable strings	programming		enhancement		new	2014-03-28T15:52:14Z	2016-01-13T18:13:38Z	"It would be good for plugins to be able to add their own translateable strings.

This should be totally possible to do in the plugin infrastructure; see http://babel.pocoo.org/docs/support/#extended-translations-class"	Christopher Allan Webber
	893	Switch mg_globals over to using werkzeug context locals	programming		enhancement		new	2014-05-17T17:22:21Z	2016-01-13T18:15:43Z	"Global variables suck, and break threading, and technically wsgi.

We should use Werkzeug locals instead:
http://werkzeug.pocoo.org/docs/local/"	Christopher Allan Webber
	960	Add search functionality	programming		enhancement	tofay	in_progress	2014-09-01T09:17:48Z	2016-03-07T21:57:53Z	I cannot find an option to search for media in any MediaGoblin instance. That is quite limiting for finding new media by content.	anongoblin
	963	to/cc/bto/bcc not supported on activities	programming		enhancement	Jessica Tallon	in_progress	2014-09-05T10:52:46Z	2016-02-16T22:45:05Z	"As of #905 we now have activities in GMG. Activities however should have 4 extra fields which they currently do not have. These should specify who the activity goes to.

The fields are to/cc/bto/bcc. In these fields they can take Lists which need to be created. Lists can be user defined or a special type which are:

- Public (everyone including those not logged in)
- Following (those who are following the user posting)
- Followers (those who the user posting is following)

The concept of following a user currently doesn't exist in MediaGoblin however for this issue such a spcialised list should exist so that we can record who the user wants to show the media to but currently just be an empty list of users.

Discussions with Chris and Elrond about implementing this as it's a many to many for two types would be to have a Reciever model which User and List inherit from. The id would be on reciever and then you would have a foreignkey to the reciever

e.g.

{{{#!python
class Reciever(Base):
    """""" Model which represents person(s) who might recieve something """"""
    __tablename__ = ""core__recievers""

    id = Column(Integer, primary_key=True)

class User(Reciever, UserMixin):
    # This would be the existing user model without the id as that's been moved to reciever.
    pass

class List(Reciever):
    # This would the representation of a List
    pass
}}}

I'm unsure how the special cases should be represented. 
"	Jessica Tallon
	964	Enable HSTS on wiki.m.o and issues.m.o	programming		enhancement	Simon Fondrie-Teitler	new	2014-09-07T05:06:22Z	2016-09-18T12:24:00Z	I've enabled it with the setting of 1 day for now to be safe, I'll bump it up when I'm sure there are no issues. 	Simon Fondrie-Teitler
	967	Ability to display panorama images as a mediatype	programming		enhancement		new	2014-09-16T06:00:12Z	2014-09-16T06:00:12Z	"With the default camera apps on both Android and iOS (as well as some FOSS camera apps such as Focal - the default camera app on Cyanogen Mod), panorama images are becoming more and more common.

I suggest that being able to display panorama images would be a highly useful media type to be able to display.

I would suggest the use of the Pannellum library, as it's FOSS, HTML5, plugin free, actively maintained, works across recent versions of all major browsers in only 11kb. It can be found at https://github.com/mpetroff/pannellum .

Bugsbane"	anongoblin
	987	Account Settings: Better grouping of sections	graphic design/interface		enhancement		new	2014-10-18T12:57:53Z	2014-10-18T12:57:53Z	"Currently the ""edit Accout"" page is poorly structured. There are also three links who point exactly to the same page (change passwords).

It would be useful to group the three sections ""change password"", ""email notifications"" and ""license"" into visually clear separated parts.  "	fbnlrt
	990	Upload of multiple files in one step is not possible	programming		enhancement		new	2014-10-18T13:01:33Z	2016-02-01T18:27:51Z	"Upload works only for 1 file per upload.
Upload should be easier to upload several files at once to a collection.

First step for could be selection of multiple files.

Further possible enhancement is a drag/drop zone to move serveral files in.
"	anongoblin
	1076	videos are not supported in the API	programming		enhancement		new	2014-12-15T08:39:17Z	2015-02-19T08:14:25Z	"You should be able to upload and interact with videos like you can with images now. There is support for this in the [https://github.com/activitystreams/activity-schema/blob/master/activity-schema.md#audio-and-video-objects Activity Streams 1.0 specification], if I have understood this correctly we will want to produce an API object which looks something like:

{{{
{
    ""id"": ""https://gmg.site.tld/api/video/someid"",
    ""objectType"": ""video"",
    ""displayName"": ""Title of this video"",
    ""embedCode"": ""<html><to><embed></embed></to></html>"",
    ""stream"": {
        ""url"": ""https://gmg.site.tld/path/to/video.ogv"",
    },
    ""author"": {
        ""id"": ""acct:someone@gmg.site.tld"",
        ...
    },
    ""url"": ""https://gmg.site.tld/html/version/for/users/click""
}
}}}

Pump.io does have a model to store a video which is [https://github.com/e14n/pump.io/blob/master/lib/model/video.js here]. This notably in addition to the base attributes all objects share (id, objectType, etc.) it also has:

- ID
- [https://github.com/activitystreams/activity-schema/blob/master/activity-schema.md#binary-objects attachments]
- embedCode
- stream"	Jessica Tallon
	1086	Add CAPTCHA support	infrastructure		enhancement		accepted	2015-01-11T23:28:45Z	2016-01-15T16:09:59Z	Add template and authentication hooks to enable CAPTCHA plugins to be easily integrated.	ayleph
	1087	Smart captcha system	programming		enhancement		new	2015-01-14T22:50:48Z	2016-01-12T17:50:54Z	"Obviously related to and dependent on #1086

This maybe could wait a bit to be implemented, but I've been thinking about a captcha system that provides the following features:

 - Serves image-based (and maybe audio-based) captchas, but *doesn't* require saving any image files on-server (which you later have to garbage collect...)
 - Doesn't require any rows in the database
 - Doesn't require any nonfree software
 - Integrates with the forms system
 - Makes use of our existing crypto/session stuff.

Here's how I think it would work.

 - hooks are run to initialize the captcha for whatever form / view.  Attach validation requirement to wtforms and generate the image.
 - When generating the image (I'm not sure what kind of algorithm we should use for this), *don't* write to a file on disc static-served via apache.  Instead, we can base64 encode the image after rendering, pack it into the response, and serve it directly.  See mediagoblin/plugins/persona/static/js/persona.js for an example of this in action.
 - Provide a question and *hashed* version of the expected answer from the captcha which the user needs to answer.  We sign the question and hashed answer with itsdangerous (and set a time limit to solve it) so that the user can't make up their own question and answer.

I think doing the above could be a pretty smart and elegant solution... it means being able to do a captcha that doesn't require storing any extra junk server-side, but still provides a way to pass a captcha along.

The trickiest part of this might be writing some code to make some visual captchas in the first place.

Note: I'm not sure if it's possible to base64 encode audio in the same way?  But if so, we could provide both audio and visual captchas.
"	Christopher Allan Webber
	1088	Dumb / simple captchas	programming		enhancement		new	2015-01-14T22:55:13Z	2016-01-12T17:50:16Z	"Tying into #1086 (but not as complicated as #1087)... we should have a ""dumb"" captcha system as a stopgap if we can't get something nicer implemented soon.  (Will also help figure out what the shared components for #1086 are!)

Some simpler things this captcha plugin could do:

* Simple arithmetic (I've always found this funny, since computers are more efficient at arithmetic than users, but..)
* User provided text questions with text answers.  We could provide a config parameter for admins to put this in place.
"	Christopher Allan Webber
	5055	Friendlier failure if Gstreamer 1.0 not installed	programming		enhancement		new	2015-03-05T23:16:48Z	2016-09-18T11:10:59Z	"See #5024... it would be nice, if gstreamer 1.0 is not installed, if we could give a friendlier failure message.

Ideas on what we should catch, and how to raise the error?  Even raising an exception with better text would likely work."	Christopher Allan Webber
	5063	better handling of bad video files	programming		enhancement		new	2015-03-13T00:06:20Z	2016-09-18T11:06:15Z	Now if transcoding fails the video is left in broken state, but still shown in the list of uploaded video. The whole stuff should be handled better, hiding this bad video, for example	Boris Bobrov
	5311	Improve plugin documentation	documentation		enhancement	Laura Arjona Reina	in_progress	2015-04-11T11:03:30Z	2015-04-11T11:09:29Z	"All the available plugins should be listed.
List plugins in alphabetical order.
"	Laura Arjona Reina
	5319	support for HQ videos	programming		enhancement		accepted	2015-05-20T21:23:43Z	2016-02-16T21:45:51Z	"Hey there, i tryed to let the Transcoder transcoding in better Quality (1080p).
So i use this options for example:

{{{

# vp8enc options
self.destination_dimensions = kwargs.get('dimensions', (1080, 1080))
self.vp8_quality = kwargs.get('vp8_quality', 10)
}}}


...in the transcoding.py

After assetlink and dbupdate, there has nothing changed.
I think the handling of videos on ""Media""goblin is a big problem.
You cant enjoy Videos in that damn bad quality!

----

So i think, okey lets transcode to webm Files on the Client PCs before uploading - no, you can forget it! 
The Player Interface is a bad Joke on untranscoded Files! 
Here an Example of 1080p WebM: https://media.tchncs.de/u/milan/m/test/

I understand, that the Player dont let you switch in Resolutions.
But damned, so let us please configure in which Quality Videos can uploaded by users..."	Boris Bobrov
	5320	Add a logout hook	programming		enhancement		new	2015-05-21T00:44:13Z	2016-04-02T14:16:22Z	"It could be useful to have a hook in the ''logout'' view for authentication plugins.

For example, I've made a plugin to use HTTP Authentication but the logout need to be done externally. I've made the attached patch which allows to redirect to any other internal/external page, but it can be discussed and ameliorated...

Thanks in advance!

Attachment:

{{{
diff --git a/mediagoblin/auth/views.py b/mediagoblin/auth/views.py
index 03a46f7..9f15563 100644
--- a/mediagoblin/auth/views.py
+++ b/mediagoblin/auth/views.py
@@ -120,7 +120,11 @@ def logout(request):
     # Maybe deleting the user_id parameter would be enough?
     request.session.delete()
 
-    return redirect(request, ""index"")
+    response = hook_handle('auth_logout_response', request)
+    if response:
+        return response
+    else:
+        return redirect(request, 'index')
}}}

 
 
 def verify_email(request):"	Boris Bobrov
	5328	White/blacklisting mimetypes in attachments and check file size	programming		enhancement	molgrum	in_progress	2015-06-23T15:57:16Z	2016-01-12T19:43:46Z	I have working (non-elegant) code working for doing a white/blacklist of mimetypes. Also checks max_file_size parameter!	molgrum
	5365	Some improvements to collections views	programming		enhancement	Jessica Tallon	in_progress	2015-12-06T04:45:13Z	2016-02-01T15:37:08Z	"My feature branch, which is split up into 3 commits at the moment:

https://github.com/orblivion/mediagoblin/commits/collection-ui-improvements

These are some improvements that I thought would be good, though it could be controversial. The sorting/filtering part is spawned from what I thought was somewhat of a requirement created by #5360, though independent enough that I split it out.

1) Media items in the collection view don't show the title of the media entry, we just show the collection item note. I think it makes sense to default to the media entry title if there is no note:

https://github.com/orblivion/mediagoblin/commit/25e424023226a4823b0f50258fe54a28964a202e

The potential issue I see with this is that collections can hold things other than media entries, and those might not have titles. I'm not sure what else you had in mind to hold, so I'll put this out there for now to see what you think. I could work around it but I want to make sure it's necessary.

2) Collections are currently sorted by descending `position`. I actually don't see anywhere in the codebase that `position` is ever set, so I presume this is a ""TODO"". The problem is that the way collections work now, it *sort of* sorts by ascending `id`. I guess the database does this naturally. The reason I say *sort of* is that I think some things start to get funny if you delete items. So, I thought I'd formalize it by sorting collections by ascending (`position`, `id`). If you start setting `position` and leave it as sorting descending, you'll end up reversing the way it's been working so far. (Unless you intended the sense of `position` and `id` to be opposite of each other?)

Also in this commit, I filter by whether the media item is processed.

https://github.com/orblivion/mediagoblin/commit/ad9a9d8a756a55e36e83696639d6dd558eb497e3

3) Collections currently show up as a text list. This seems rather unpolished. Here, I make it a gallery view, using the first item in the gallery if available:

https://github.com/orblivion/mediagoblin/commit/577911aed004e8a9fb2d2c6f9d133568dac3361c"	Daniel Krol
	5443	Theater mode for videos in MediaGoblin	graphic design/interface		enhancement		review	2016-03-21T11:03:17Z	2016-03-21T11:17:02Z	Theater mode for videos in MediaGoblin	Saksham Agrawal
	5473	Add detailed failure message to user and admin processing panels	programming		enhancement		new	2016-09-07T21:42:42Z	2020-04-23T12:16:41Z	"The user and admin media processing panels don't give full details when something goes wrong; usually requiring you to mannually reprocess some media from the command line to discover the issue (eg. you ran out of storage space).

I'd suggest providing full details on admin processing panel and attaching a traceback if appropriate. The user processing panel should a detailed error message, but probably not a traceback, as I'd assume this would be more likely to leak confidential information.

(Extracted from #463, retaining same CC's and milestone.)"	Ben Sturmfels
	5487	Feature: allow to rotate media after upload	programming		enhancement		new	2016-10-22T10:09:39Z	2016-10-22T10:09:39Z	"Partially linked to #454, but more generic, it would be good to have the option to manually rotate uploaded media when then are not rendered properly for any reason (missing/incorrect EXIF tags, weird video format, ...).

This can be as simple as an inconditional “Rotate 90°”, where other rotation can be obtained by clicking the button multiple times. Ideally, only the thumbnail would be rotated in real time, and the full file itself as an async media processing.

Dimensions in the database should also be uploaded accordingly."	Olivier Mehani
	5488	Feature: Email/notifications: allow to follow user/collection/tag/everything	programming		enhancement		new	2016-10-22T10:14:17Z	2016-10-22T10:14:17Z	"Currently, notifications are only sent upon new comments to own, previously commented-on media, or previeusly subscribed-to media.

It would be great to be able to also follow to a user, a collection, a tag, or just everything, receive a notification for each media added therein, and (maybe optionally) automatically subscribe to their comments.

Notifications could be sent immediately or batched with a configurable time-period, and should ideally contain thumbnails.
"	Olivier Mehani
	5491	Enhancements for the media-processing panel	programming		enhancement		new	2016-11-05T10:28:01Z	2018-04-09T06:03:26Z	"As mentioned in #463, some ideas for things to add to the control panel:
 * Queue of media in the `unprocessed` state
 * Allow to kill and restart processing for media in the `processing` state
 (they sometime get stuck) [aka `update core__media_entries set
 state='unprocessed' where id='ID'` `gmg reprocess run ID initial`]
 * Allow to reprocess `processed` entries [aka `gmg reprocess run ID
 transcode`]
 * Allow to regenerate the thumbnail for one entry [close to, but not
 exactly, `gmg reprocess thumbnails`]
 * Allow to rotate media, see #5487
"	Olivier Mehani
	5503	Move federation code to ActivityPub spec	programming		enhancement	Christopher Allan Webber	in_progress	2017-04-11T16:21:23Z	2018-04-19T14:10:25Z	Convert the federation code from using the legacy Pump API spec to [https://www.w3.org/TR/activitypub/ ActivityPub].	Christopher Allan Webber
	5586	My somewhat prioritised Mediagoblin wish list	programming		enhancement		new	2020-04-02T11:40:32Z	2021-09-19T13:37:05Z	"Posting here from my post to the ML a few weeks ago, for better tracking and visibility.

## Important

* Sometimes slow/unresponsive
* high celery CPU usage when idle
* ... + hard to debug/trace
* DB deadlock with SQLite

## Normal

* Rotate media without reencoding
* Navigate through the current tag or collection rather than user-post history, depending on how the media was reached (maybe using proxy URLs e.g. /t/TAG/m/MEDIA or /u/USER/t/TAG/m/MEDIA instead of /u/USER/m/media when accessed through the tag page, or /u/USER/collection/COLLECTION/m/MEDIA, when accessed through the collection page)
* private mode
* ... + share single media/collection with private, revocable, token
* bulk actions: upload/delete/tag,... from a single page

## Minor

* Play animated gif
* audio/audiolab
* Category sorting
* tag rename
* tag suggestion
* audiolab no longer available on recent Pythons
* keyboard navigation in galleries: left/right for prev/next page
* navigation pager at top of page

## Wishlist

* Crop
* show Geotag + other metadata from video
* More attractive/immersive layout with less whitespace between thumbnails and screen walls
* comment edition/deletion
* multi site install, split binary from config
* standard python build + venv
* search by keywords and/or multiple tags
"	Olivier Mehani
	5617	Private mode	programming		enhancement		new	2020-05-16T15:45:33Z	2021-09-19T13:00:18Z	"Here is a first cut at requiring login before seeing content.

It adds a configuration option, `require_login`, which, if set, prevents media and listings from being displayed to anonymous visitors.

It also doesn't output any entry in the RSS feed, which could otherwise be used to discover paths to the media.

I realised fairly late that this sort of behaviour could be implemented through decorators (probably as a light superset to `@require_active_login`, checking the config). At the moment, this is mostly implemented within the Jinja templates, rendering login pages where listings should be, rather than blocking the entire page.

Let's discuss what the best approach is!"	Olivier Mehani
	5619	Modernise gallery listings	programming		enhancement		new	2020-05-16T15:50:34Z	2021-09-19T12:59:26Z	"The gallery looks a bit old and clunky.

It would be nice to refresh it a bit, with less whitespace more room for the thumbnails, and a more dynamic/responsive layout taking into account size of the various thumbs, as well as that of the container window"	Olivier Mehani
	5629	Replace media through GUI	programming		enhancement		new	2022-06-10T17:18:25Z	2022-06-10T17:18:25Z	It would be nice if a logged in user could replace media without making a new entry. I know how to manually change the files through the command line and backend, but it would be easier for the less technical if this was an option through the interface.	thomzane
	595	Hook to allow plugins to alter the template for media pages	programming		task		new	2013-01-14T21:22:08Z	2013-01-14T21:26:26Z	"For the view count plugin, I need to display the counter under the media box. For this, my plugin needs a hook to be able to alter the template for media pages.

Reference: http://lists.mediagoblin.org/pipermail/devel/2013-January/000376.html"	Tiberiu C. Turbureanu
	596	Hook to allow plugins to do some work on page load	programming		task		new	2013-01-14T21:25:40Z	2013-01-14T21:26:58Z	"For the view count plugin, I need to bump the counter whenever the media page is loaded (GET). For this, my plugin needs a hook to allow evaluation on page load.

Reference:  http://lists.mediagoblin.org/pipermail/devel/2013-January/000376.html"	Tiberiu C. Turbureanu
	597	Hook to allow plugins to alter the template for media edit form	programming		task		new	2013-01-14T21:30:14Z	2013-01-14T21:30:14Z	"For the advertise plugin, I need to add a check box to the media edit form to allow the user to opt for advertising the media on the front page. For this, my plugin needs a hook to be able to alter the template for media edit form.

Reference: http://lists.mediagoblin.org/pipermail/devel/2013-January/000391.html"	Tiberiu C. Turbureanu
	598	Support for UTF-8 paths	programming		task		accepted	2013-01-15T15:26:41Z	2015-02-19T03:37:26Z	"On a fresh GMG install I get the following error for a UTF-8 path:

{{{
[tct@turbureanu mediagoblin-ceata]$ pwd
/home/tct/Descărcări/mediagoblin-ceata
[tct@turbureanu mediagoblin-ceata]$ ./bin/gmg dbupdate
Traceback (most recent call last):
  File ""./bin/gmg"", line 8, in <module>
    load_entry_point('mediagoblin==0.3.3.dev', 'console_scripts', 'gmg')()
  File ""/home/tct/Descărcări/mediagoblin-ceata/mediagoblin/gmg_commands/__init__.py"", line 100, in main_cli
    args.func(args)
  File ""/home/tct/Descărcări/mediagoblin-ceata/mediagoblin/gmg_commands/dbupdate.py"", line 129, in dbupdate
    global_config, app_config = setup_global_and_app_config(args.conf_file)
  File ""/home/tct/Descărcări/mediagoblin-ceata/mediagoblin/init/__init__.py"", line 47, in setup_global_and_app_config
    global_config, validation_result = read_mediagoblin_config(config_path)
  File ""/home/tct/Descărcări/mediagoblin-ceata/mediagoblin/init/config.py"", line 80, in read_mediagoblin_config
    validation_result = config.validate(validator, preserve_errors=True)
  File ""build/bdist.linux-x86_64/egg/configobj.py"", line 2295, in validate
  File ""build/bdist.linux-x86_64/egg/configobj.py"", line 2250, in validate
  File ""build/bdist.linux-x86_64/egg/configobj.py"", line 570, in __getitem__
  File ""build/bdist.linux-x86_64/egg/configobj.py"", line 562, in _interpolate
  File ""build/bdist.linux-x86_64/egg/configobj.py"", line 365, in interpolate
  File ""build/bdist.linux-x86_64/egg/configobj.py"", line 352, in recursive_interpolate
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 14: ordinal not in range(128)
}}}"	Tiberiu C. Turbureanu
	1059	Including mediagoblin-html5-multi-upload  in core	programming		task		review	2014-12-09T09:53:54Z	2018-10-30T19:22:55Z	"Hello,

please include html5-multi-upload in the project's core. It's very handy to upload multiple files at once.
I spoke to  VenKamikaze and he asked me to address this issue.


"	yanosz
	5082	We need documentation about resolving user issues	documentation		task	Jim Campbell	new	2015-03-30T14:12:48Z	2015-03-30T14:12:48Z	"We need to document how to resolve issues like media uploads failing (how to reprocess uploaded media files), images not being visible after upload (likely permission issues), and the website not being visible even though everything appears to be set up correctly (likely firewall issues).

In general, this requires a ""troubleshooting"" section.

Just adding this ticket as a reminder that this needs to be done. If you can think of any possible troubleshooting topics, please add them as comments to this bug. Thanks!"	Jim Campbell
	5438	Address problems with blog mediatype	programming		task		new	2016-03-06T21:26:34Z	2016-03-06T21:26:34Z	This ticket will serve as a parent ticket to collect issues related to the blog plugin. 	ayleph
	176	Return behavior after adding media is non-intuitive	ui		defect		accepted	2011-08-02T02:04:00Z	2020-05-13T03:36:51Z	"{{{
#!rst
After I add a new piece of media, the site takes me to my profile
page, of all places. Even if I didn't start out on my profile page
when I clicked the 'Submit media' button. How silly.

Two solutions:

1.) After adding new media, always take the user back to their
gallery page. Makes more sense than their profile page--what does
that have to do with their pictures?

2.) After adding new media, take the user back to whatever page
they started out on when they started the media-adding interaction.
This is probably more complicated to code, but it does make adding
media slightly more smooth for the user.



}}}"	Karen Rustad
	220	RTL (right-to-left) language support.	programming		defect		accepted	2011-08-28T12:46:00Z	2014-02-20T17:02:04Z	"{{{
#!rst
We need RTL (right-to-left) language support in MediaGoblin.

Presumably this requires:


-  Pushing a variable into the general template context specifying
   whether the current language is LTR or RTL
-  Making an RTL stylesheet
-  ... other things?

I'm assigning Osama Khalid to this ticket. Osama, you don't have to
do this necessarily, but at least please give advice on what needs
to be done (you can unassign yourself then if you like).



}}}"	Christopher Allan Webber
	244	GIF images work on media pages in most (of my personally experianced) cases, but not all.	graphic design/interface		defect		accepted	2011-09-05T17:13:00Z	2012-06-22T20:58:42Z	"{{{
#!rst
When the user uploads an image we convert it to one or two
additional JPEG sizes.


1. We will always create thumbnail.jpg.
2. If the image dimensions exceed one of 640x640px, we will create
   medium.jpg
3. If there exists a medium.jpg file for a media entry, we will
   show it on the media page,
   **else we will display the original file**

This means that GIF images work if the fit within 640x640px

Proposal¶
---------


1. Create GIF thumbnails and medium.jpg if the original is a gif
   image

Possible setbacks with this is that some thumbnails may present a
large download despite it's small size.

Possible solutions to possible setbacks¶
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

It might be possible to resize a preset duration for the thumbnail
animation and create the medium.jpg (if needed) with the full
animation.



}}}"	joar
	341	Simultaneous upload and metadata/description editing	ui		defect		accepted	2011-12-04T14:01:00Z	2015-02-19T05:31:57Z	"{{{
#!rst
It would be great that the upload could start for a media file
while I'm adding the title, description, and tags.



}}}"	Greg Grossmeier
	344	Properly localize dates/times	programming		defect		accepted	2011-12-05T08:48:00Z	2014-09-18T21:14:21Z	"{{{
#!rst
In the long run GMG should display dates/times in a proper local
format. This might involve enhancing the current translations, so
that the dates/times are positioned correctly.

Useful link:


-  `http://babel.edgewall.org/wiki/Documentation/dates.html <http://babel.edgewall.org/wiki/Documentation/dates.html>`_



}}}"	Elrond
	382	If video support is turned off after videos have been uploaded, videos are still shown and cause an error when clicked	programming		defect	Ben Sturmfels	in_progress	2012-01-24T19:29:00Z	2017-02-09T22:09:11Z	"Test case:

Install mediagoblin with video turned on in
{{{mediagoblin_local.ini}}}:

{{{
media_types = mediagoblin.media\_types.image,
mediagoblin.media_types.video
}}}

Upload a video

Change {{{mediagoblin_local.ini}}} to have

{{{
media_types = mediagoblin.media_types.image,
}}}

Restart paster / lazyserver / celery / etc.

The video will be displayed, click it, you will get an error:

{{{
Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: Error -
<class 'mediagoblin.media_types.FileTypeNotSupported'>:
MediaManager not in enabled types. Check media_types in config?
Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: URL:
`http://ec2-107-20-7-95.compute-1.amazonaws.com/u/s22/m/some-video/ <http://ec2-107-20-7-95.compute-1.amazonaws.com/u/s22/m/some-video/>`_
Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File
'/opt/mediagoblin/local/lib/python2.7/site-packages/Paste-1.7.5.1-py2.7.egg/paste/exceptions/errormiddleware.py',
line 144 in *call*
Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: app_iter
= self.application(environ, sr_checker)
Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File
'/opt/mediagoblin/local/lib/python2.7/site-packages/Paste-1.7.5.1-py2.7.egg/paste/urlmap.py',
line 203 in *call*
Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: return
app(environ, start_response)
Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File
'/opt/mediagoblin/local/lib/python2.7/site-packages/Beaker-1.6.2-py2.7.egg/beaker/middleware.py',
line 155 in *call*
Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: return
self.wrap_app(environ, session_start_response)
Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File
'/opt/mediagoblin/mediagoblin/app.py', line 176 in *call*
Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: response =
controller(request)
Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File
'/opt/mediagoblin/mediagoblin/decorators.py', line 117 in wrapper
Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: return
controller(request, media=media, **args,**kwargs)
Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File
'/opt/mediagoblin/mediagoblin/decorators.py', line 83 in wrapper
Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: return
controller(request, page=page,
*args, **kwargs)Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File '/opt/mediagoblin/mediagoblin/user_pages/views.py', line 125 in media_homeJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: media_template_name = get_media_manager(media.media_type)['display_template']Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File '/opt/mediagoblin/mediagoblin/media_types/**init**.py', line 65 in get_media_managerJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: ""MediaManager not in enabled types. Check media_types in config?"")Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: FileTypeNotSupported: MediaManager not in enabled types. Check media_types in config?Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi:Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi:Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: CGI VariablesJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: -------------Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: CSRF_TOKEN: u'2991456393146439023'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: DOCUMENT_ROOT: '/etc/nginx/html'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: DOCUMENT_URI: '/u/s22/m/some-video/'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: GATEWAY_INTERFACE: 'CGI/1.1'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: HTTP_ACCEPT: 'text/html,application/xhtml+xml,application/xml;q=0.9,**/*;q=0.8'
Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi:
HTTP_ACCEPT_CHARSET:
'ISO-8859-1,utf-8;q=0.7,*;q=0.3'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: HTTP_ACCEPT_ENCODING: 'gzip,deflate,sdch'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: HTTP_ACCEPT_LANGUAGE: 'en-US,en;q=0.8'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: HTTP_CONNECTION: 'keep-alive'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: HTTP_COOKIE: 'mediagoblin_csrftoken=2991456393146439023; mediagoblin_csrftoken=2991456393146439023; mediagoblin_csrftoken=2991456393146439023'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: HTTP_HOST: 'ec2-107-20-7-95.compute-1.amazonaws.com'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: HTTP_REFERER: 'http://ec2-107-20-7-95.compute-1.amazonaws.com/'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: HTTP_USER_AGENT: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: PATH_INFO: '/u/s22/m/some-video/'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: REDIRECT_STATUS: '200'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: REMOTE_ADDR: '76.94.215.209'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: REMOTE_PORT: '41472'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: REQUEST_METHOD: 'GET'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: REQUEST_URI: '/u/s22/m/some-video/'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: SCRIPT_FILENAME: '/etc/nginx/html/u/s22/m/some-video/'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: SERVER_ADDR: '10.215.83.225'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: SERVER_PORT: '80'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: SERVER_PROTOCOL: 'HTTP/1.1'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: SERVER_SOFTWARE: 'nginx/1.0.5'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi:Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi:Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: WSGI VariablesJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: --------------Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: application: {(None, '/mgoblin_media'): <StaticURLParser '/opt/mediagoblin/user_dev/media/public'>, (None, '/mgoblin_static'): <StaticURLParser '/opt/mediagoblin/mediagoblin/static'>, (None, ''): <beaker.middleware.SessionMiddleware object at 0xa5bf54c>}Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: beaker.get_session: <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0xa5bf54c>>Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: beaker.session: {'_accessed_time': 1327450884.558526, '_creation_time': 1327450884.558526}Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: paste.throw_errors: TrueJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: webob._parsed_cookies: ({'mediagoblin_csrftoken': '2991456393146439023'}, 'mediagoblin_csrftoken=2991456393146439023; mediagoblin_csrftoken=2991456393146439023; mediagoblin_csrftoken=2991456393146439023')Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: webob._parsed_query_vars: (GET, '')Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: webob.adhoc_attrs: {'locale': 'en_US', 'staticdirect': <mediagoblin.staticdirect.RemoteStaticDirect object at 0xa5bf68c>, 'app': <mediagoblin.app.MediaGoblinApp object at 0xa55dbcc>, 'db': Database(Connection('localhost', 27017), u'mediagoblin'), 'urlgen': <routes.util.URLGenerator object at 0xa5ba14c>, 'start_response': <function session_start_response at 0xa6221ec>, 'session': {'_accessed_time': 1327450884.558526, '_creation_time': 1327450884.558526}, 'full_path': '/u/s22/m/some-video/', 'template_env': <jinja2.environment.Environment object at 0xa623eec>, 'matchdict': {'media': u'some-video', 'controller': u'mediagoblin.user_pages.views:media_home', 'user': u's22'}, 'user': None}Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: wsgi process: 'Multiprocess'Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: ------------------------------------------------------------Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: Starting server in PID 24618.Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: Traceback (most recent call last):Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/opt/mediagoblin/bin/paster"", line 9, in Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: load_entry_point('PasteScript==1.7.5', 'console_scripts', 'paster')()Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/opt/mediagoblin/local/lib/python2.7/site-packages/PasteScript-1.7.5-py2.7.egg/paste/script/command.py"", line 104, in runJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: invoke(command, command_name, options, args[1:])Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/opt/mediagoblin/local/lib/python2.7/site-packages/PasteScript-1.7.5-py2.7.egg/paste/script/command.py"", line 143, in invokeJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: exit_code = runner.run(args)Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/opt/mediagoblin/local/lib/python2.7/site-packages/PasteScript-1.7.5-py2.7.egg/paste/script/command.py"", line 238, in runJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: result = self.command()Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/opt/mediagoblin/local/lib/python2.7/site-packages/PasteScript-1.7.5-py2.7.egg/paste/script/serve.py"", line 311, in commandJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: serve()Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/opt/mediagoblin/local/lib/python2.7/site-packages/PasteScript-1.7.5-py2.7.egg/paste/script/serve.py"", line 295, in serveJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: server(app)Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/opt/mediagoblin/local/lib/python2.7/site-packages/PasteDeploy-1.5.0-py2.7.egg/paste/deploy/loadwsgi.py"", line 189, in server_wrapperJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi:**context.local_conf)Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/opt/mediagoblin/local/lib/python2.7/site-packages/PasteDeploy-1.5.0-py2.7.egg/paste/deploy/util.py"", line 56, in fix_callJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: val = callable(*args,
**kw)Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/usr/lib/pymodules/python2.7/flup/server/paste_factory.py"", line 94, in run_fcgi_forkJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: s.run()Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/usr/lib/pymodules/python2.7/flup/server/fcgi_fork.py"", line 133, in runJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: ret = PreforkServer.run(self, sock)Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/usr/lib/pymodules/python2.7/flup/server/preforkserver.py"", line 123, in runJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: if not self._spawnChild(sock): breakJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/usr/lib/pymodules/python2.7/flup/server/preforkserver.py"", line 296, in _spawnChildJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: self._child(sock, parent)Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/usr/lib/pymodules/python2.7/flup/server/preforkserver.py"", line 374, in _childJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: self._jobClass(clientSock, addr,*self._jobArgs).run()Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/usr/lib/pymodules/python2.7/flup/server/fcgi_base.py"", line 646, in runJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: self.process_input()Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/usr/lib/pymodules/python2.7/flup/server/fcgi_base.py"", line 682, in process_inputJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: self._do_params(rec)Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/usr/lib/pymodules/python2.7/flup/server/fcgi_base.py"", line 781, in _do_paramsJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: self._start_request(req)Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/usr/lib/pymodules/python2.7/flup/server/fcgi_base.py"", line 765, in _start_requestJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: req.run()Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/usr/lib/pymodules/python2.7/flup/server/fcgi_base.py"", line 571, in runJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: self._flush()Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/usr/lib/pymodules/python2.7/flup/server/fcgi_base.py"", line 582, in _flushJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: self.stderr.close()Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/usr/lib/pymodules/python2.7/flup/server/fcgi_base.py"", line 334, in closeJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: self.flush()Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/usr/lib/pymodules/python2.7/flup/server/fcgi_base.py"", line 328, in flushJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: self._write(data)Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/usr/lib/pymodules/python2.7/flup/server/fcgi_base.py"", line 299, in _writeJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: self._conn.writeRecord(rec)Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/usr/lib/pymodules/python2.7/flup/server/fcgi_base.py"", line 697, in writeRecordJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: rec.write(self._sock)Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File ""/usr/lib/pymodules/python2.7/flup/server/fcgi_base.py"", line 534, in writeJan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: self._sendall(sock, '00'*self.paddingLength)
Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: File
""/usr/lib/pymodules/python2.7/flup/server/fcgi_base.py"", line 507,
in _sendall
Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi: sent =
sock.send(data)
Jan 25 00:21:24 domU-12-31-39-0C-50-13 mediagoblin.fcgi:
socket.error: [Errno 104] Connection reset by peer
}}}

This was as of this commit:

{{{
commit c47a03b909ecd97cab5b144d0cab007b62b92a90
Author: Elrond
<`elrond+mediagoblin.org@samba-tng.org <mailto:elrond+mediagoblin.org@samba-tng.org>`_>
Date: Wed Jan 4 22:13:19 2012 +0100

    Proper url_to_{prev,next} for SQL
    
    Uses complete sqlalchemy syntax now.
}}}

Grabbed via:

{{{
    git clone git://gitorious.org/mediagoblin/mediagoblin.git
}}}
"	Clint Byrum
	516	"""Hidden fields"" in oauth authorize client form not so hidden"	graphic design/interface		defect	joar	new	2012-10-16T06:41:14Z	2016-09-18T02:04:39Z		joar
	530	Airy: audio player’s time indicator is low-contrast	graphic design/interface		defect		accepted	2012-11-05T10:52:49Z	2014-05-05T16:42:12Z	See the bottom-right angle of the player at https://gobblin.se/u/selknam/m/impulse-by-silenwater-from-still-power/	Aleksej
	546	Embed hcard in user profile (we claim to have one)	programming		defect		new	2012-11-22T10:58:30Z	2012-11-22T10:58:30Z	"Currently our webfinger user reply

<Link href=""http://127.0.0.1:6543/u/spaetz/"" rel=""http://microformats.org/profile/hcard"" />

claims that the users's home page has a hcard microformat embedded. But there is none. So we either need to 

# Remove that claim or
# Implement an hcard :-)

The question to discuss is whether we should embed this in the user profile page, e.g. /u/spaetz/ or at some other place that is not that often called? Not sure, open for suggestions. Would like to get cwebbers input on this."	spaetz
	591	Default theme handles thumbnails for small pictures poorly	graphic design/interface		defect		accepted	2013-01-10T12:42:03Z	2016-09-18T02:11:02Z	"The default theme handles small images poorly. Screenshot: http://pix.toile-libre.org/upload/original/1357821395.png

The title should always be on the bottom to make browsing many pictures in a row easier. The thumbnail should be vertically centered in the remaining space."	"Sergey ""Shnatsel"" Davidoff"
	593	Thumbnails of portrait images have inconsistent padding	graphic design/interface		defect		accepted	2013-01-10T13:15:46Z	2016-09-18T02:12:52Z	"Thumbnails of portrait images have padding on every side except on top, which makes them look off. Screenshot: http://pix.toile-libre.org/upload/original/1357823610.png

Perhaps adding a separator between the title and the image will fix this, so that the thumbnail will no longer look like it has padding on the bottom."	"Sergey ""Shnatsel"" Davidoff"
	619	"""-- Select --"" at the ""Add media to collection"" page cannot be translated/localized"	programming		defect		new	2013-02-04T10:09:51Z	2015-02-19T05:03:03Z	"The ""-- Select --"" is the default value of the drop-down list of collections."	Aleksej
	720	"""file correctly uploaded"" bar is misleading"	graphic design/interface		defect		accepted	2013-06-20T14:34:42Z	2016-01-14T09:40:16Z	"With my new fresh installation of MG I added a sample picture.
Then the system said on the green bar ""file correctly uploaded""
but in the same page there was also written ""you haven't already added files""

Screenshot attached.
I'm currently testing the dave thompson 421-mysql branch which is up to date with master."	Danilo Tomasoni
	743	Avoid crash when loading STL media without Blender in the server	programming		defect	Rodrigo Rodrigues da Silva	in_progress	2013-07-31T21:36:55Z	2014-06-05T14:27:20Z	"So I am moving this here from a merge request, as we are trying to close those out. 

I only briefly looked at this, but from what I see is that it is missing a migration, and the WebGL view is not automatically loaded upon visiting the media page.

Here is a link to the original merge request: https://gitorious.org/mediagoblin/mediagoblin/merge_requests/57

And to the repo:
https://gitorious.org/~juca/mediagoblin/mediagoblin-fsanches/commits/conditional_blender_thumbnails"	rodney757
	749	With JS, videos can be (un)paused only with mouse; without JS, only with keyboard	programming		defect		new	2013-08-10T09:15:01Z	2014-12-18T16:20:43Z		Aleksej
	752	Refactoring notifications to more cleanly hook into application	programming		defect		new	2013-08-14T21:01:08Z	2013-08-14T21:01:08Z	"Right now, notifications' tooling are kind of ""special case""'ed into the application.  See especially:

{{{
    template_env.globals = hook_transform(
        'template_global_context', template_env.globals)

    #### THIS IS TEMPORARY, PLEASE FIX IT
    ## Notifications stuff is not yet a plugin (and we're not sure it will be),
    ## but it needs to add stuff to the context.  This is THE WRONG WAY TO DO IT
    from mediagoblin import notifications
    template_env.globals['get_notifications'] = notifications.get_notifications
    template_env.globals[
        'get_notification_count'] = notifications.get_notification_count
    template_env.globals[
        'get_comment_subscription'] = notifications.get_comment_subscription

    if exists(locale):
        SETUP_JINJA_ENVS[locale] = template_env

    return template_env
}}}

This isn't nice... as far as I can tell, there's no reson for notifications to not be a plugin though?  That would fix the issue of hardcoding these utilities into the template context.

Alternately maybe if there are some plugins that are so core they should always be on and might as well be core, but it's cleaner to use the template machinery, maybe we could provide a way to have a ""always loaded"" set of ""plugins""... even though they're soldered into the outlet ;)"	Christopher Allan Webber
	756	Video pane dimensions in VJS skins are too small	programming		defect		new	2013-08-28T09:08:42Z	2013-08-28T09:08:42Z	"The video pane dimensions in static/css/vjs-mg-skin.css are set to 650x366, which results in the default 640x480 video size being scaled down to 488x366. It seems to me that these dimensions should be set to 640x480.



"	saul
	777	Not possible to edit collection item notes	graphic design/interface		defect		accepted	2013-09-25T13:59:31Z	2013-11-22T14:51:02Z	"When adding media to a collection one can add a note. Currently there is no way to edit that note. Clicking ""add to collection"" on the media and selecting the same collection, one gets a ""this media is already in the collection"" error message. Instead one should get redirected to a form field, that lets one edit the relationship."	spaetz
	823	Ugly previews of scaled indexed images	programming		defect		accepted	2013-12-27T13:33:40Z	2016-10-05T06:19:26Z	"Previews of images using an indexed color mapping can become very ugly if the original image needs to be scaled down. For example:

[[Image(http://barn.kerosenecow.net/mgoblin_media/media_entries/435/indexed-degradation.png)]]

This degradation is inherent to scaling indexed images and though the result may vary depending on the scaling algorithm used (NEAREST, BILINEAR, BICUBIC, or ANTIALIAS), scaling will always result in degradation. 

Of the file types that Mediagoblin supports, PNG and TIFF files may or may not use indexed color mapping, while GIF files always use indexed colors.

One way to improve the quality of such scaled previews is to convert the image to the RGB color space before scaling. 

"	saul
	826	Mediatype of image should provide a Download link.	graphic design/interface		defect		new	2013-12-28T17:01:11Z	2018-05-07T09:52:35Z	"Currently, the webpages for images (PNG, GIF, JPEG, and TIFF) provide no link for downloading the original file. If the preview is a scaled version of the original file, it is left to the user to right-click on the preview image and choose ""Save link as..."" or ""Save target as..."" or somesuch (depending on the webbrowser used). 

It would more convenient and less confusing if there was an explicit Download link as is provided for on the webpages of other mediatypes. For example, if I am hosting a PNG file that has a scaled down preview, I could instruct someone to visit the page and click on the ""Download"" link -- there would be no concern about what browser they are using and no chance that they might mistakenly choose the ""Save image as..."" command. 

"	saul
	853	No RTL layout for document pages	programming		defect		new	2014-02-27T11:23:43Z	2014-02-27T11:23:43Z	"Media pages of document![0] are not aligned from right-to-left, whereas other media pages of images![1] and videos![2] are aligned from right-to-left.

![0]: http://mediagoblin.tami.org.il/u/alonlevy/m/id:623/
![1]: http://mediagoblin.tami.org.il/u/alonlevy/m/another-of-ilan-s-logos/
![2]: http://mediagoblin.tami.org.il/u/alonlevy/m/doppler-ultrasound-transceiver-demonstration/"	Genghis Khan
	856	Time interval localization fails	graphic design/interface		defect		new	2014-03-04T15:01:05Z	2014-03-04T15:01:05Z	"Time intervals, such as “1 hour, 20 minutes ago” are never translated, even though the i18n is implemented correctly.

Cause: timesince.py uses lazy_pass_to_ungettext for the translation. The function, ungettext, requires a singular-plural pair. But this pair was not recognized when generating the .pot file. To be usable with ungettext, the record must contain both “msgid” and “msgid_plural”. Consequently, ungettext sees neither singular nor plural translation, even when it is present in the language file, and always defaults to the English string.

Solution: when generating the .pot file (template for translators), be sure not to miss the ungettext aliased as “_” in timesince.py.

Easier solution: just patch the .pot file with “fix-plurals-in-pot.patch” that I included in the attachment. This will fix the 6 special cases (year, month, …) and you can continue generating the template the same way you do now.

Note: If you are wondering why “minutes” is mentioned twice, it is because timesince.py uses it via both ungettext and ugettext (in the case of “0 minutes”), and it wouldn't otherwise see it. You can either change it to ungettext with n=1, or have the word “minutes” twice in the .pot, I chose the latter because it didn't require changing the code.

So, I believe it will work like this: if you patch the current mediagoblin_mediagoblin.pot and upload it to transifex, it will add these new words. Once people translate them, the .po files you'll export from transifex will already be in the correct format, and time intervals will appear in those languages, without changing any of the code. I tested it on my machine and it seems to work."	digital-dreamer
	867	home_goblin.png is hard-coded to the /mgoblin_static path	programming		defect		new	2014-04-19T17:28:29Z	2017-01-20T07:18:13Z	"This causes the image to not show up when mediagoblin is installed in a sub-path of a virtual host. The image tag in templates/mediagoblin/bits/frontpage_welcome.html should be changed to:

<img class=""welcomeimage"" src=""{{ request.staticdirect('/images/home_goblin.png') }}"">"	anongoblin
	882	Moderation: reason for report looks like a comment.	graphic design/interface		defect		new	2014-05-08T16:26:06Z	2014-05-08T16:26:06Z	"A user accidentally posted a moderation report instead of a comment: https://gobblin.se/u/avrs/m/a-user-accidentally-made-a-report-instead-of-a-comment/

-------------------------------------
[UserA] 2 days, 18 hours назад:

[Comment 1 text]

Reason for report:
[UserB] 4 days, 18 hours назад
[Comment 2 text]
-------------------------------------

[Comment 2 text] is the stated reason for report, but it was actually intended as a comment.  Although the UI that led to that could be improved, the UI shown above also needs to be improved, maybe by adding a border, and making it clear that the time and reporter's name are not a part of the reason message."	Aleksej
	917	Comment notifications are sent in the sender's language setting	programming		defect		new	2014-07-16T19:08:39Z	2017-06-29T04:24:25Z	When a user comments on a media entry, the notification email sent to the recipient is sent in the sender's language locale, not the recipient's.	ayleph
	924	LDAP authentication: configurable user attribute (currently: always 'uid')	programming		defect		new	2014-07-25T21:24:00Z	2018-04-15T18:13:24Z	"Currently user authentication works for a DN like the following:
{{{
dn: cn=USERNAME,ou=people,dc=example,dc=org
}}}

Sadly the email retrieval fails to work since it relies on the fact that there is an attribute {{{uid=USERNAME}}}.

This assumption is not always valid (see above: {{{cn=USERNAME}}}).

Thus it would be reasonable to use the first part of the {{{LDAP_USER_DN_TEMPLATE}}} for the filter condition within the email handling code (instead of {{{uid=USERNAME}}}). See the attached patch for an implementation of this approach."	sumpfralle
	926	LDAP authentication: use RFC 2255 LDAP URLs for more flexibility	programming		defect		new	2014-07-26T15:59:33Z	2014-08-27T00:31:29Z	"Hi,

the current LDAP authentication plugin can only handle LDAP schemas where a usable login string is part of the entry's DN:
{{{dn: uid=john,ou=people,dc=example,dc=org}}}

Another LDAP schema looks like this:
{{{dn: cn=John Doe,ou=people,dc=example,dc=org}}}

Here the login token is usally available only as an attribute (e.g. {{{uid}}}). Thus the current {{{LDAP_USER_DN_TEMPLATE}}} cannot work with the above schema.

Other projects (e.g. LDAP authentication within the apache webserver) use the LDAP URL (see [[http://www.ietf.org/rfc/rfc2255.txt|RFC 2255]]. Such an URL allows to specify a base DN, a search scope and the attribute to be used for login matching.

Attached you find a patch that I am using for such a setup.

Maybe the old config style (based on {{{LDAP_USER_DN_TEMPLATE}}}) can be replaced with the LDAP URL, since I am not aware a use case that could not be covered with the latter one."	sumpfralle
	931	deployment documentation - switch to mediagoblin user with sudo	documentation		defect		new	2014-08-01T12:19:23Z	2014-08-01T17:23:18Z	"Switching to the mediagoblin user with sudo as mentioned in the document: http://mediagoblin.readthedocs.org/en/latest/siteadmin/deploying.html cause problems, at least with ubuntu 14.04:

===================================
No password will be assigned to this account, and you will not be able to log in as this user. To switch to this account, enter either:

'''sudo -u mediagoblin /bin/bash'''  # (if you have sudo permissions)
or:

su mediagoblin -s /bin/bash  # (if you have to use root permissions)
===============================

After using ""sudo -u mediagoblin /bin/bash"" to switch to the mediagoblin user, and executing ./bin/gmg dbupdate for example, there is an error regarding the path of the directory .python-egg which points to homedir of the user that executed the ""sudo -u mediagoblin /bin/bash"" command. If you use ""sudo su -"" first to swicht to root and then enter the second command mentioned in the doc  ""su mediagoblin -s /bin/bash"", it works perfectly. The .python-egg directory used in this case is the one in the mediagoblin user homedir. 

In my opinion, this:

===================================
No password will be assigned to this account, and you will not be able to log in as this user. To switch to this account, enter either:

'''sudo -u mediagoblin /bin/bash'''  # (if you have sudo permissions)
or:

su mediagoblin -s /bin/bash  # (if you have to use root permissions)
===============================

should be replaced for something like this:

===================================
No password will be assigned to this account, and you will not be able to log in as this user. To switch to this account, enter the following if you are logged as root:

su mediagoblin -s /bin/bash  

In case you are not logged as root, excute first ""sudo su -"" to switch to the root user and then enter the command mentioned above.
===============================
 in the documentation."	Alberto
	976	Bring back the ascii goblin	programming		defect		new	2014-09-23T16:20:33Z	2020-04-23T12:14:24Z	"Previously, if there were an error in MediaGoblin, the default behavior was to show an error page with a little ascii art goblin.

This has been removed, because that error page was dependent on a paste error middleware that doesn't exist in python 3.

It would be nice to have that back by 0.8.0."	Christopher Allan Webber
	1073	'audio' objectType is not accepted.	programming		defect		new	2014-12-13T01:35:08Z	2014-12-15T08:43:40Z	"Trying to post an 'audio' object returns:

HTTP 400: Bad Request. 
{{{
{
    ""error"": ""Unknown object type 'audio'.""
}
}}}"	JanKusanagi
	5061	Reporting media does not produce email or notification	programming		defect		new	2015-03-11T03:28:50Z	2016-09-17T15:12:00Z	Reporting media does not seem to send an email to an administrator, nor does it give any notifications to an administrator account.	ayleph
	5318	cannot write mode P as JPEG	programming		defect		accepted	2015-05-04T00:31:46Z	2020-05-12T03:21:21Z	"A user tried to upload an image which produced the following error. A stackoverflow thread mentions converting to RGB space.

https://stackoverflow.com/questions/21669657/getting-cannot-write-mode-p-as-jpeg-while-operating-on-jpg-image

{{{
(mediagoblin-0.8.0) ~/mediagoblin $ bin/gmg reprocess run 4028 initial
DEBUG:mediagoblin.processing.task:Processing <MediaEntry 4028: otters>
ERROR:mediagoblin.processing.task:An unhandled exception was raised while processing <MediaEntry 4028: otters>
WARNING:mediagoblin.processing:No idea what happened here, but it failed: IOError('cannot write mode P as JPEG',)
WARNING:mediagoblin.processing:No idea what happened here, but it failed: IOError('cannot write mode P as JPEG',)
Traceback (most recent call last):
  File ""bin/gmg"", line 9, in <module>
    load_entry_point('mediagoblin==0.8.1.dev0', 'console_scripts', 'gmg')()
  File ""/path/to/mediagoblin/mediagoblin/gmg_commands/__init__.py"", line 142, in main_cli
    args.func(args)
  File ""/path/to/mediagoblin/mediagoblin/gmg_commands/reprocess.py"", line 293, in reprocess
    run(args)
  File ""/path/to/mediagoblin/mediagoblin/gmg_commands/reprocess.py"", line 205, in run
    reprocess_info=reprocess_request)
  File ""/path/to/mediagoblin/mediagoblin/submit/lib.py"", line 257, in run_process_media
    task_id=entry.queued_task_id)
  File ""/path/to/mediagoblin/lib/python2.7/site-packages/celery-3.1.17-py2.7.egg/celery/app/task.py"", line 547, in apply_async
    link=link, link_error=link_error, **options)
  File ""/path/to/mediagoblin/lib/python2.7/site-packages/celery-3.1.17-py2.7.egg/celery/app/task.py"", line 739, in apply
    request=request, propagate=throw)
  File ""/path/to/mediagoblin/lib/python2.7/site-packages/celery-3.1.17-py2.7.egg/celery/app/trace.py"", line 355, in eager_trace_task
    uuid, args, kwargs, request)
  File ""/path/to/mediagoblin/lib/python2.7/site-packages/celery-3.1.17-py2.7.egg/celery/app/trace.py"", line 253, in trace_task
    I, R, state, retval = on_error(task_request, exc, uuid)
  File ""/path/to/mediagoblin/lib/python2.7/site-packages/celery-3.1.17-py2.7.egg/celery/app/trace.py"", line 240, in trace_task
    R = retval = fun(*args, **kwargs)
  File ""/path/to/mediagoblin/mediagoblin/processing/task.py"", line 101, in run
    processor.process(**reprocess_info)
  File ""/path/to/mediagoblin/mediagoblin/media_types/image/processing.py"", line 318, in process
    self.generate_thumb(size=thumb_size, filter=filter, quality=quality)
  File ""/path/to/mediagoblin/mediagoblin/media_types/image/processing.py"", line 221, in generate_thumb
    filter, size)
  File ""/path/to/mediagoblin/mediagoblin/media_types/image/processing.py"", line 125, in resize_tool
    quality, filter)
  File ""/path/to/mediagoblin/mediagoblin/media_types/image/processing.py"", line 81, in resize_image
    resized.save(resized_file, quality=quality)
  File ""/path/to/mediagoblin/lib/python2.7/site-packages/PIL/Image.py"", line 1682, in save
    save_handler(self, fp, filename)
  File ""/path/to/mediagoblin/lib/python2.7/site-packages/PIL/JpegImagePlugin.py"", line 571, in _save
    raise IOError(""cannot write mode %s as JPEG"" % im.mode)
IOError: cannot write mode P as JPEG
}}}"	ayleph
	5352	Automatically create local users on successful LDAP authentication	programming		defect		new	2015-10-11T05:11:12Z	2018-04-25T15:29:53Z	"With the auth_ldap plugin, users can be authenticated against an LDAP directory. However, upon first logging in, the MG database does not contain information about them, and asks for their email address. Moreover, if registration is disabled, users will not be able to move any further after entering their email address, and will be presented with a message that registration is not enabled.

Two things need to be fixed:
1. Try to get the email address from LDAP after successful authentication, and only ask the user for it if not available
2. Don't honour the allow_registration setting when creating local users in the DB when they have been successfully authenticated from LDAP."	Olivier Mehani
	5364	"""p"" pump.io client doesn't seem to upload images"	programming		defect		new	2015-12-01T21:21:05Z	2016-01-28T10:09:43Z	"I posted this issue initially in the issue tracker for `p`:

https://github.com/xray7224/p/issues/40#issuecomment-151050574

However I was ultimately able to post an image in another pump.io instance, so I was advised to move the issue here.

I authenticate my webfinger using `p`. I run:

```p post image ../images/image.jpg --title ""Test Upload""```

It seemed to go through. No std or err output. However I don't see the image on my site. I tried running: 

```p inbox```

And I got something like this:

{{{
yooser posted unknown.jpe
  yooser@media.example.com - 5 minutes ago
  Test Upload
  
  ![Image NonexNone][1]
  
     [1]: http://media.example.com/mgoblin_static/images/media_thumbs/image.png
}}}

(Only my username and my site's domain are changed here. Everything else should be verbatim.)

However below that, it lists entry from my site, which I uploaded manually long ago. So it seems that it's on the right track but not quite there."	Daniel Krol
	5376	Comment links cause server errors with recent migrations	programming		defect	Boris Bobrov	in_progress	2015-12-18T03:38:55Z	2017-06-21T10:19:24Z	"Following a comment link (like `http://mediagoblin.example.org/u/user/m/my-media/c/1`) after applying federation updates results in a server error.

{{{
Error - <type 'exceptions.AttributeError'>: 'NoneType' object has no attribute 'comment'
URL: http://photos.technicallyandrew.com/u/andrew/m/belfast-87a3/c/2/
File '/path/to/mediagoblin/lib/python2.7/site-packages/Paste-1.7.5.1-py2.7.egg/paste/exceptions/errormiddleware.py', line 144 in __call__
  app_iter = self.application(environ, sr_checker)
File '/path/to/mediagoblin/mediagoblin/app.py', line 342 in __call__
  return self.call_backend(environ, start_response)
File '/path/to/mediagoblin/lib/python2.7/site-packages/Werkzeug-0.8.3-py2.7.egg/werkzeug/wsgi.py', line 411 in __call__
  return self.app(environ, start_response)
File '/path/to/mediagoblin/mediagoblin/app.py', line 276 in call_backend
  return self._finish_call_backend(request, environ, start_response)
File '/path/to/mediagoblin/mediagoblin/app.py', line 318 in _finish_call_backend
  response = controller(request)
File '/path/to/mediagoblin/mediagoblin/decorators.py', line 47 in wrapper
  return controller(request, *args, **kwargs)
File '/path/to/mediagoblin/mediagoblin/decorators.py', line 210 in wrapper
  return controller(request, media=media, *args, **kwargs)
File '/path/to/mediagoblin/mediagoblin/decorators.py', line 170 in wrapper
  return controller(request, page=page, *args, **kwargs)
File '/path/to/mediagoblin/mediagoblin/user_pages/views.py', line 135 in media_home
  mark_comment_notification_seen(comment_id, request.user)
File '/path/to/mediagoblin/mediagoblin/notifications/__init__.py', line 64 in mark_comment_notification_seen
  comment = Comment.query.get(comment_id).comment()
AttributeError: 'NoneType' object has no attribute 'comment'
}}}

"	ayleph
	5378	video area does not fit height when video is not transcoded	graphic design/interface		defect		new	2015-12-21T13:37:33Z	2015-12-21T13:37:33Z	"I avoid transcoding of webm, it's ok it plays fine but I get non transcoded videos shown weird in mediagoblin preview as in here:
[http://mediagoblin.mysticemporium.xyz/u/prietus/m/debian-jessie-btrfs-subvols/]
thanks."	teraflops
	5417	Add more type icons	graphic design/interface		defect		new	2016-02-16T22:55:27Z	2020-04-23T12:12:01Z	With bug #365 resolved, we need icons for all the types we have.	Boris Bobrov
	5439	"Use state other than ""failed"" to indicate draft blog posts"	programming		defect		new	2016-03-07T00:41:23Z	2016-04-11T03:05:30Z	"Failed blog entries can't be reprocessed because the blog mediatype has no reprocessing manager.

{{{
No such processing manager for mediagoblin.media_types.blog
}}}"	ayleph
	5454	Add more translatable strings in blog plugin	programming		defect		new	2016-04-03T17:03:27Z	2016-09-18T12:28:37Z	The blog plugin has some English-only strings which should support translations.	ayleph
	5492	Handle errors in case of unsuccessful commenting	programming		defect		new	2017-01-29T14:10:31Z	2017-01-29T14:10:31Z	Fixing #868 allowed submitting comments with ajax, without page reload. However, unsuccessful commenting should be reported to the user somehow. Now it is logged to console, but it would be great if we could show user a message with red background, for example.	Boris Bobrov
	5510	Comments lost when navigating to next/previous media	programming		defect		new	2017-06-01T14:05:54Z	2018-04-19T14:08:35Z	"A user on my site complained that his comments are lost when he presses the left or right arrow key after typing them. I checked the code in keyboard_navigation.js, and it appears to properly ignore the left/right arrow keys while a textbox has focus. But if you click outside of the textbox after typing a comment and then press left or right, the page changes and the comment is lost. Similarly, if you click the newer/older buttons after typing a comment, the comment is lost. Can we add some smarts to know that text has been entered, and then present the user with a ""are you sure you want to leave"" dialog when they navigate away?"	ayleph
	5529	"""Newer"" and ""Older"" page link captions are incorrect for Collection view"	graphic design/interface		defect		new	2017-09-27T04:53:59Z	2021-09-19T13:30:18Z	"When viewing a collection, the thumbnails are listed from oldest to newest.

However, the pagination links still say:

""← Newer"" (which goes back a page, to older media)
""Older →"" (which goes forward a page, to newer media)

These link captions are incorrect.

I am running MediaGoblin 0.9.0.

"	anongoblin
	5588	Make mediagoblin.org work on small screens	graphic design/interface		defect		new	2020-04-09T06:50:04Z	2020-04-09T06:50:04Z	"Our website mediagoblin.org currently uses 960.css as the layout framework. From my brief investigation, it looks as though this framework does not support responsive layout.

I've hacked in some changes in `theme/templates/base.html` to make it work a little better for the time being, but the site really needs to be switched to a different CSS framework, eg. Tachyons."	Ben Sturmfels
	5613	Configuration for default video quality	programming		defect		accepted	2020-05-13T22:38:49Z	2021-09-19T13:05:14Z	"with 0.10 version, a nice enhancement for video quality selection. 3 level are available by default (360, 480 and 720p), is there any configuration to generate only some of them and what matter more for me is could we force a default quality for the user, actually it's the lowest by default, which poorly show quality works for people not knowing how to change the quality...

thanks a lot again,
"	TmCTux
	82	"""safety level""/ or some type of data for (mature) content moderation"	programming		enhancement		accepted	2011-05-30T18:41:00Z	2016-10-08T12:56:27Z	"{{{
#!rst
See
`http://www.flickr.com/help/filters/ <http://www.flickr.com/help/filters/>`_
but without the gendered ""your mom"" stuff. Let's not gender our
safety levels :)



}}}"	Christopher Allan Webber
	126	sharing and permissions	programming		enhancement		accepted	2011-07-03T14:03:00Z	2016-09-15T09:47:37Z	"{{{
#!rst
There is a mapping between the items in your collection and the
individuals allowed to view them. Those are permissions.

We'll begin implementing these by assigning each media entry an
array of authorized viewers, listed by username. Eventually, these
could be openids for federation, but that's beyond the scope of
this ticket.

Because writing a list each time you submit an item would give us
the blues, we'll have a default list editable by the user. That
list of users will be used to populate the permissions array on the
item.

Now, you may not always want the default list, so it's important to
make it easy to specify which of your 10 million fans get to see
your cat with whip cream on its head. For that, each user will be
able to maintain groups of individuals. These groups can be given
any name. Suggestions would be friends, family, etc. Those will be
enabled by default but can be removed in favor of other group
names.

So, when creating an item, you see an array of labels representing
your default sharing profile. It could be as simple as 'everyone',
or as complex as you like. Modify the sharing labels by adding or
removing individual names, or group names. Individuals and groups
can also be added to specifically exclude, but let's save that for
a future ticket.

When you submit the item the labels are interpreted and converted
to individuals for the item's permissions array.

When called upon for viewing, the item looks up the viewer in its
permissions array and allows viewing or coyly stays hidden,
depending on whether the viewer gets to see the item. This should
apply for every view - galleries, thumbnails, etc.

The fun part is that the groups the user maintains may be flagged
as private. This means you don't have to pull your hair out trying
to be political about who gets to be in which group. Chris's
example is great -

::

    SmoothBro might not show off his ""saturday night swingers"" group publicly because maybe he doesn't even want people to know about that, esp his parents.

Breathe in. Breathe out. Explore the space!

This ticket does not cover notifications, only viewing
permissions.



}}}"	Caleb Davis
	162	add quoting support to tagging	programming		enhancement		accepted	2011-07-25T00:09:00Z	2016-09-16T02:44:27Z	"{{{
#!rst
Tagging (`#360 </issues/360>`_) needs to be iterated on. This
ticket addresses support for quoting. What are the expected
behaviors? In the following examples, user input is underlined, and
resulting tags are indented.


-  In the simple case (assuming comma-delimited text), the user has
   a single pair of quotes embedded within the input, such as:
   meta,'yo dawg, I heard you like delimiters...',humor

    u'meta'


    u'yo dawg, I heard you like delimiters...'


    u'humor'



-  what about mixed quotes? (eg user wants *you're* in the tag)
   meme,""I don't even..."",humor

    u'meme'


    u'I don't even'


    u'humor'



-  then, as Will noted in IRC, some users may wish to tag using xml
   or hierarchical organization schemes. At what point does supporting
   quoting become complex enough to warrant using a plugin?

**tl;dr - introduce support for tag delimiter(s) within a tag. Efforts towards native gmg support go here. Add a new ticket for plugin work**

Feel fix this ticket if I'm missing the point or the point is not
clear.



}}}"	Caleb Davis
	180	Have a javascript-y autocomplete feature for tags you've used before	ui		enhancement		accepted	2011-08-02T02:15:00Z	2014-08-21T12:11:52Z	"{{{
#!rst
If you've used a tag previously and you start typing the first
couple (unique) characters of that tag, we should conveniently
autocomplete it for you.



}}}"	Karen Rustad
	207	Add tag list to user profile	programming		enhancement		accepted	2011-08-20T16:38:00Z	2016-09-13T09:46:12Z	"
Currently the left part of the user's profile only contains... the
profile.

It'd be great if below that, we could have a list of tags they've
used.


-  Maybe with a number behind it telling you how many times they've
   been used.
-  If there are a lot of tags, say, more than 20 or 30, the list
   should be cut off.
-  Of course each of these tags should link to the /u/tag/X page
   and list all of the media with that tag.
-  Maybe we can add a ""show all"" link that links to a full page for
   the user's tags. Maybe a tag cloud there?

{{{
    **schendje's profile**¶
    -----------------------

    I like swimming and eating pasta. Preferably at the same time.

    +----------------------------------+
    | **Favorite tags** (show all)     |
    +==================================+
    | spain (8) sky (5) cows (4)       |
    +----------------------------------+
    | portrait (4) self-portrait (3)   |
    +----------------------------------+
}}}"	Jef van Schendel
	227	add multi-tag views	programming		enhancement		accepted	2011-09-02T16:28:00Z	2016-09-13T09:48:20Z	"{{{
#!rst
In IRC schendje just reminded me about the multi-tag views that
would be awesome to have:

/tag/bunnies+fangs

May we please have this now?

BONUS: /u/superwoahdude/tag/bunnies - subscribe to a user's tags
BONUS: /u/superwoahdude+awesomewoahman - subscribe to combo of
users
BONUS: /u/superwoahdude+awesomewoahman/tag/bunnies - subscribe to a
tag from a combo of users
BONUS: /u/superwoahdude+awesomewoahman/tag/bunnies+fangs -
subscribe to the intersection of arbitrary lists of users and tags



}}}"	Caleb Davis
	234	Add RDFa to HTML output	programming		enhancement		accepted	2011-09-03T12:53:00Z	2016-10-06T10:58:29Z	"{{{
#!rst
RDFa provides a way to encode machine readable information in HTML.
We should add support for basic information to our HTML output.


-  creator
-  title
-  publication date
   ...



}}}"	nyergler
	247	Add a language selector	programming		enhancement		accepted	2011-09-07T12:24:00Z	2013-08-15T16:51:38Z	"{{{
#!rst
Please add a way to change UI language, overriding Accept-Language.
E.g. a drop-down and/or an URL piece.



}}}"	Aleksej
	263	A way to choose filename different from the before-upload one	programming		enhancement		accepted	2011-09-16T15:22:00Z	2012-08-13T17:31:41Z	"{{{
#!rst
An uploaded file currently uses the name it had on the uploader's
computer, with no other way to change that than changing the local
name before uploading.

That's a privacy issue, since the uploader may not expect for the
local name to become public, and will not necessarily notice it
soon.

MediaWiki uses a good solution usable with what GMG does:
after the local file is chosen but before it is uploaded, if JS is
enabled, it shows the original file name, lets the uploader edit
it, and uses the result (replacing spaces with underscores).



}}}"	Aleksej
	267	counter to display access of media (showing the number of views)	programming		enhancement		accepted	2011-09-19T13:38:00Z	2016-10-06T11:08:05Z	"{{{
#!rst
what I missed - as new user to mediagoblin:

a counter how often the media was accessed
(though that could be done with a external counter also)



}}}"	Erkan Yilmaz
	320	Video: Extract and save poster image	programming		enhancement		accepted	2011-11-17T17:15:00Z	2013-04-23T20:41:55Z	"{{{
#!rst
In HTML5 video, there's a poster attribute on the tag, it contains
the URL to an image that should be shown initially before the
player has started.

POSTER IMAGE DIMENSIONS
Fetch from encoded video. It's available on the instantiated
VideoThumbnailer in the dst\_data after encoding the video.

EXTRACTING THE IMAGE
We should perhaps use the VideoThumbnailer. IIRC it's possible to
pass custom dimensions to it.



}}}"	joar
	364	Shotwell integration with mediagoblin API	programming		enhancement		accepted	2011-12-20T15:13:00Z	2016-01-14T09:41:27Z	"{{{
#!rst
This is obviously somewhat preliminary, as we don't have an API
quite yet as I'm writing this, but...

We certainly want to integrate with all sorts of devices, but
Shotwell would be a fantastic starting point as they're FaiF, come
in near every gnome-oriented distro preinstalled, have similar
goals, and have expressed interest in bundling a mediagoblin
plugin.

`http://redmine.yorba.org/projects/shotwell/wiki/ShotwellArchWritingPlugins <http://redmine.yorba.org/projects/shotwell/wiki/ShotwellArchWritingPlugins>`_



}}}"	Christopher Allan Webber
	385	Show the original’s file size and dimensions on the file page	other		enhancement		accepted	2012-01-28T13:30:00Z	2012-06-09T14:00:11Z	"{{{
#!rst
Currently there is no indication of the original's file size or
dimensions.



}}}"	Aleksej
	472	An option to use uploaded audio/video file “as is”, without transcoding	programming		enhancement		new	2012-07-16T18:33:13Z	2014-10-16T22:06:45Z	"Sometimes a video or audio file is uploaded in a format used by GMG for publishing files, but GMG transcodes the file anyway.  That makes sense for security and possibly privacy, but sometimes it’s more of a waste of resources.

Proposal: an option to let files be used without transcoding.
* Use that way only video files up to certain dimensions (compared to the target dimensions), maybe also considering the file size (files with big video dimensions may still be OK if the file size is small).
* Transcode only the data that is not in the target format.  Thus an Ogg/Vorbis file becomes WebM/Vorbis without transcoding.
* For security reasons, the option should probably be disabled server-side by default.  Maybe (in the future) enable it for particular users or user groups.
"	Aleksej
	490	Media processing panel layout improvements	graphic design/interface		enhancement		new	2012-08-23T15:27:10Z	2015-02-19T05:11:33Z	"schendje and aaronw suggested some improvements to the panel's appearance:

* The introductory text (""You can track..."") is probably unnecessary (at least as long as the content is self-descriptive)
* Failed and successful uploads can be combined into a single list (""Recent uploads"") that distinguishes successful from failed uploads by color and/or other indicators
* Column headings should be left-aligned like column contents to improve readability
* The headings are not very visually distinct from the rest of the content -- indenting the tables a few em's to the right might help."	Aaron Williamson
	499	the avatar image is necessary	programming		enhancement		accepted	2012-09-19T03:39:51Z	2014-10-19T18:28:39Z	need an option to upload an avatar, I think something elemental.	Charlie Vegan
	519	A way to link to a position in a video/audio (timestamp)	programming		enhancement		accepted	2012-10-17T13:59:04Z	2014-07-24T14:04:36Z		Aleksej
	522	Allow to create a filesystem-like album hierachy	programming		enhancement		new	2012-10-19T13:03:12Z	2014-11-25T03:36:30Z	"When storing photographs on their computer, some people, if not all, use a filesystem hierarchy, for with paths like pictures/photographs/2012/10/mountain_hiking.

When publishing photographs on the Web, some people (well at lease me!) need to be able to define a similar hierarchy, that has to be available from the website home page to allow people to browse it easily. Here are several use cases.

I took pictures from a mountain hike, with a bunch of people. Later, I took pictures from a free software meeting, with very different people. I want to be able to publish both series of photographs and give them the address, but my hiker friends have no interest in the other photographs, and neither do my developer friends. Also, some of them want to download the full-quality pictures (as a single archive file because HTTP offers no practical way for mass-downloading) of the single event that interests him.

I participated in a pilgrimage, where several people took photographs. I want to be able to give them an access to a dedicated album, so that each photographer can upload his pictures to a dedicated sub-album.

Some of my friends are interested in my photographs, but most of them are more interested in what I do, in the activities I participate in rather than in the individual pictures. As they go to my website from time to time. To be able to determine what event I shot, they must see an appropriate, chronologically-oriented hierarchy so they are not overwhelmed by bunches of hundreds of new photographs.

I hope that was descriptive enough; if you want an example of such a hierarchy you can visit my website <http://photos.ortolo.eu/>. The most complete application of that hierarchy is <http://photos.ortolo.eu/tanguy/2012-07-22-lourdes-gavarnie/>, where the path is composed of: a user name (me, because that website also hosts pictures from another member of my family), a date and event name, and under that one sub-album per photographer."	Tanguy Ortolo
	534	Use accesskeys in the forms	graphic design/interface		enhancement		new	2012-11-11T07:30:21Z	2015-02-19T05:05:31Z	"See, e.g., the MediaWiki edit interface. Shift+alt+s will submit the form. Even most web forum software has this feature.

There's some hacking-around-wtforms that needs to be done for this, but it's possible."	Mark Holmquist
	545	User().unicode() should be friendlier for templates	programming		enhancement		new	2012-11-21T11:05:05Z	2016-09-18T12:00:10Z	"Trying to simply put User objects in templates (or convert them to unicode, I get <User #2 verified user ""foo"">. This is horrible to use in templates where you always need to specify .username or whatnot.

It would be friendlier towards template writer to chose a default represenation that can easily be used in templates, so I can simply embed {{user}} and get an ok default representation of that user in the template."	spaetz
	579	Update/Restart processing queue on GMG startup	programming		enhancement		new	2012-12-20T09:57:35Z	2012-12-20T09:57:35Z	"I ran EAGER_CELERY and killed the server while transcoding media. The MediaEntries remain in ""processing"" state but the jobs will not restart/continue.

Would it be possible to scan the database on GMG startup looking for entries in ""processing"" state and pass them to celery for processing? I noticed this now because I have a never-clearing queue of ""processing"" videos in my processing panel."	spaetz
	620	Error message improvments	programming		enhancement		new	2013-02-04T13:42:25Z	2013-02-04T13:44:55Z	"Hi,

I've noticed few stuff in the error messages that can be easily changes for a better usability.

""'''Sorry, I don't support that file type :('''""

I'll take this example only, but the tips apply to other :

- Avoid the anthropomorphism (""I don't""). It weakens the feeling of control (i.e. : I can solve this error, cause it's only a machine). 
- The error message is not the place to be verbose, the user want to understand what's wrong right away. e.g. : The ""''sorry''"" and the ""'':(''"" are unnecessary
- It lacks of information : what did I send, what's supported ?
- It comes to late (you have to fill the form all aver again... and ajax check would be in order)

Therefore the message should come right after selecting the file and should look kike this :

""oga"" support is not enabled
(and bellow, i.e., not in red : )
filetypes enabled :  jpg, png, gif, mp3, wmv

"	Tumulte
	635	"REQUEST: Add a ""like"" (and maybe dislike) function"	graphic design/interface		enhancement		accepted	2013-02-14T02:58:10Z	2016-01-14T09:41:04Z	"Like the summary says. It would be neat (and super simple) to have a ""like"" button (or maybe love/heart/4 or 5 star rating) for all kinds of media.

Or, someone could use this ticket to educate me why this isn't such a good idea, despite so many the big media sharing sites having this feature."	Andrew Ter-Grigoryan
	638	meta-decorator hooks / emacs-lisp style advice	programming		enhancement		accepted	2013-02-14T20:52:57Z	2013-07-11T18:25:09Z	"This is an incredibly evil and flexible idea that, like decorators itself, is probably elegant, hard to understand, powerful, and yes, a little bit evil.

So this is an idea inspired from emacs lisp, which allows you to pass in functions to wrap a function that already exists (this is called ""advising functions"").  Actually, hooks in emacs look a heck of a lot like decorators, so actually...

Say you have this function:

{{{
  @meta_decorator_hook('some_function_hook')
  def some_function(foo):
     bla bla
}}}

Now, you want to wrap this function!  But how do you wrap it?  It's already defined, you can't just wrap arbitrary things around it! ... or can you?

In this meta_decorator_hook, the meta_decorator_hook returns a lazy-loaded method set to actually construct a chain of wrapped methods.  So if we did something like:

{{{
  pluginapi.wrap_function('some_function_hook', our_function)
}}}

.. it would return, basically a WrappedFunction() that, the first time it is executed, walks through all the decorator like methods that have been pushed onto that hook and wraps them in each other. That meta-decorated method is cached, and eventually, executed.

Sounds evil, right?  :)

This could be super powerful though.  You could do crazy things like double-check the results of a view before returning it, or totally override the view and decide not to call it at all for your plugin, call it both before and after, or set up special-case exception handling for hooks that are called within the function itself.

I'm sure I didn't make that sound any less evil, but I think it'd be really great."	Christopher Allan Webber
	653	Add capability for embed codes to show media on other websites	programming		enhancement		accepted	2013-03-08T00:09:39Z	2016-09-27T01:30:04Z	"I'm looking for the ability to provide my mediagoblin users the ability to copy and paste a snippet of code - a la youtube or vimeo - to display media in another website.

Without having researched it, I'd imagine what would probably be done for video is some sort of iframe? Or alternatively, a javascript snippet with parameters that add the video.js player to the existing page and then includes the video element in its place. I could look at how other video players handle this too.

For images, it's pretty trivial once the infrastructure for configuring and displaying the embed code is in place."	Nick
	673	Anonymous Commenting	programming		enhancement		accepted	2013-03-27T21:13:51Z	2016-01-14T09:38:18Z	"Directly related to #525 I came across the idea of allowing users to accept anonymous comments on their pages which also led me to the idea of allowing users to moderate what comments can be shown on their page (by letting them approve comments before they are shown). 

This required some DB/frontend/backend changes.

My first commit so far has included the ability to comment anonymously. My next goal is the comment moderation ability per-user and then looking at how the system works as a whole and sprucing up as needed.

You can follow my progress here:

https://gitorious.org/~lotusecho/mediagoblin/lotusechos-mediagoblin/commits/Anonymous_Commenting

"	Emily O'Leary
	696	Version checking against MediaGoblin for plugins	programming		enhancement		accepted	2013-05-08T14:24:37Z	2016-01-12T22:51:20Z	It would be nice if plugins could verify that they're compatible with the running version of MediaGoblin before they're turned on.	Christopher Allan Webber
	701	Automatically play audio / video in collections successively	graphic design/interface		enhancement		new	2013-05-09T21:26:29Z	2013-05-09T21:26:29Z	"Similar to how !YouTube handles it with its playlists: There is a button ""autoplay"" that let's you play one video or audio track after another automatically.  Also there should be buttons for ""next media in collection"", etc."	Jakob Kramer
	712	Base template should not enforce header's max-width	graphic design/interface		enhancement		new	2013-05-26T11:03:53Z	2013-05-26T11:03:53Z	"Right now mediagoblin's base theme (aka default theme)) enforces header's maximum width, but this should not happen in my opinion, because can make some troubles to theme designers.

http://gitorious.org/mediagoblin/mediagoblin/blobs/master/mediagoblin/static/css/base.css#line116

In my opinion, base.css must be included for _really_ base design (e.g. theme skeleton), and all max-* items must be defined in themes (and colors too). So there is a possible solution: make a default theme, that can be specified in ""theme"" option in mediagoblin{_local}.ini and clean up base.css."	Stanislav N. aka pztrn
	713	"Should password recovery e-mail use the website name instead of ""GNU MediaGoblin""?"	programming		enhancement		new	2013-05-30T23:57:17Z	2016-04-21T16:07:58Z	"I've requested password change for gobblin.se, and got an e-mail like:

{{{
Subject: GNU MediaGoblin - Change forgotten password!

Hi, avrs,

to change your password for GNU MediaGoblin, open
the following URL with your Web browser:
…
}}}"	Aleksej
	779	Feature Request: SwarmPlayer embed	programming		enhancement		new	2013-09-26T23:36:11Z	2016-10-08T10:35:24Z	"I have found Swarmplayer to be quite an interesting concept and may be quite useful as a feature in MediaGolbin as well. This would allow everyone to share ""bits"" of the file via torrent and have it play right on the page. For more information see their website: http://swarmplayer.p2p-next.org/dev.html
Their code is LGPL. It would be of huge benefit for small servers without much bandwith and should provide faster playback.

It actually wouldn't take too much work to implement into this project since most of the grunt work is done by P2P-Next. 

If we wanted to implement I would imagine it would work as follows:

1) User uploads video
1b) User is given option to enable support for SwarmPlayer, on by default?

2) MediaGoblin automagically creates tribe:// link for video and works out of the box in the media gallery. Tribe link itself can be self-hosted or via URL2Torrent website (their code is AGPL)

3) Optional support for importing of existing tribe:// videos into MediaGoblin.


Just a thought. Thanks and keep up the good work!"	G4JC
	827	Reprocessing of media should retain preview filenames	programming		enhancement		new	2013-12-29T12:39:34Z	2013-12-29T12:39:34Z	"It would be nice if the medium and thumbnail previews of an entry retained their filenames when the entry is reprocessed.

Currently if an entry is reprocessed, a new filename for the preview is generated by prepending a string representation of a 16-digit hexadecimal number to the previous preview filename. As an example, 'hippie-blanket.medium.jpg' might be renamed to 'd49ef4ff-ea43-4065-a6b4-64af149c76c0-hippie_blanket.medium.jpg'. 

One of the side effects of this renaming is that URLs which have previously been linked to the original preview will no longer be valid. If Mediagoblin could retain the original filename, this unfortunate breakage could be avoided."	saul
	840	Moderation: user panel lists the number of comments posted, but not number of media posted/retained	programming		enhancement		new	2014-01-23T20:45:15Z	2014-01-23T20:45:15Z	"https://gitorious.org/mediagoblin/mediagoblin/source/cebd1ad71cd588994c290fd3fb031b106fedc45d:mediagoblin/templates/mediagoblin/moderation/user_panel.html#L72-78

{{{
<tr>
<th>{% trans %}ID{% endtrans %}</th>
<th>{% trans %}Username{% endtrans %}</th>
<th>{% trans %}When Joined{% endtrans %}</th>
<th>{% trans %}# of Comments Posted{% endtrans %}</th>
</tr>
}}}

I see no reason there is the # of comments, but not of media."	Aleksej
	857	Better audio thumbnail	programming		enhancement		new	2014-03-05T16:57:43Z	2014-03-05T16:57:43Z	"Currently the audio thumbnails are plotted spectrums of the files. The idea is nice, but causes visual clutter and makes the platform looking very scientific/expert/... but not like a media sharing portal that normal users like to use.

So I suggest to replace this thumbnails/previews with:

* VU plots - Are known to usual users [https://www.ceremade.dauphine.fr/~peyre/numerical-tour/tours/audio_1_processing/from their music players]
* CD label metadata - Can be used from MP3/OGG if available"	user-B
	869	user can edit and delete own comments	programming		enhancement		new	2014-04-19T17:57:17Z	2016-11-07T11:10:45Z	it would be nice if i (as a user) can edit my comment (for 5 minutes after posting, could be set in configuration) and delete it later.	davidak
	870	new media don't appear directly	programming		enhancement		accepted	2014-04-19T18:14:05Z	2016-09-20T01:08:11Z	"after i uploaded a file, i get redirected to my profile and see a success message but i don't see the uploaded media.

if i reload once again, it is there. this shouldn't be necessary.

of course videos need time to get transcoded, but it can display a thumbnail and on the media page a message, that the video transcoding has not finished yet, maybe with progress or link to overview."	davidak
	872	support avatar from libravatar and Gravatar	programming		enhancement		new	2014-04-19T20:57:21Z	2014-04-19T20:57:21Z	"a user should be able to select his avatar from libravatar, Gravatar (if there is one) or upload a new.

https://www.libravatar.org/
http://gravatar.com/
https://issues.mediagoblin.org/ticket/499

also there should be a workflow for a new user after first login to fill out his profile.

1. select or upload avatar
2. fill out self description
3. link to homepage
4. upload your first media

but that is another thing..."	davidak
	881	Make notification of moderators/admins about new reports more prominent.	programming		enhancement		new	2014-05-08T15:44:07Z	2016-01-12T21:46:19Z	Currently to find out that there is a new report, you have to click the down arrow and go to the Report Management Panel.  When there is one report in a few months, there is no chance of dealing with them quickly and efficiently.	Aleksej
	908	Calculate volume of 3D media	programming		enhancement	Rodrigo Rodrigues da Silva	in_progress	2014-06-09T20:03:34Z	2014-12-09T16:29:48Z	"It would be desirable to have mediagoblin calculate a STL/OBJ file's volume. It is a useful piece of information for 3D printer users.

I've written some code that addresses this partially: it uses admesh to calculate a STL file's volume, since admesh currently doesn't support OBJ files. If admesh is not installed, it just bypasses the volume calculation cleanly."	Rodrigo Rodrigues da Silva
	925	Consider reordering the media sidebar	graphic design/interface		enhancement		new	2014-07-26T00:18:41Z	2014-07-26T00:18:41Z	"Hi everybody, congratulations for your work in MediaGoblin.

The media sidebar, right now, displays, in this order:

* Date added
* tags
* collections
* report media
* license
* location
* exif
* attachments
* feature
* metadata

And these ones where I'm not quite sure where are they displayed (at the bottom, I think)
* Download
* Created
* 3d info

I think License should be near ""added time"", since the person uploading decided the license in that time. And Feature, Report media, and Download could be the last ones in the list (after you see all the info, you decide what to do with the media).

My proposal:

* Date added
* Date created
* License
* Location
* Exif
* 3D info
* attachments
* metadata
* tags
* Collections
* Feature media
* report media
* Download

What do you think? I can prepare a patch when you decide the final order."	Laura Arjona Reina
	933	Plugins should have a way to redirect to the login page	programming		enhancement		new	2014-08-03T03:24:51Z	2014-08-03T03:26:14Z	"I am writing a plugin that requires that the user be logged in before accessing the media home page. However, because I am hooking to the ""media_home_context,"" I am only able to modify the context, which, as far as I can tell cannot cause a redirect. The only way that I can see to do this redirect currently is to raise an exception that is handled by forwarding the user to the login page, but I could not find an appropriate existing exception.

A 401 error may be appropriate, but according to [http://tools.ietf.org/html/rfc7235#section-3.1 RFC 7235], the server must send a WWW-Authenticate Header if it responds with a 401 error, which does not make sense since MediaGoblin uses a login page.

Please forgive me if this functionality already exists and I missed it."	Steve
	986	Double confirmation needed to delete media	graphic design/interface		enhancement		review	2014-10-18T12:57:28Z	2017-01-30T13:02:18Z	"When deleting a media item you have to first check a checkbox and then click then delete button.

This could be simplified by getting rid of the checkbox. Accidental media deletion should be prevented by the dialogue itself."	sebomoto
	988	Meta information right next to picture is more prominent than title and description	graphic design/interface		enhancement		new	2014-10-18T12:58:27Z	2016-09-20T01:04:24Z	"Currently the layout of the picture detail page puts the meta information (upload date, tags, report image button, etc) right next to the image, making it very present.

The title, description and comments are pushed down below. Arguably these are more important than the meta information though.

A possible solution for this would be to make the image take the whole width in the first block (16 columns). Then the current sidebar would just be pushed down to start at the same height as the title and description."	jan
	992	"Change Me ""Media Processing Panel"" into something more simple"	graphic design/interface		enhancement		new	2014-10-18T13:07:50Z	2016-01-12T22:35:28Z	"The phrase ""Media Processing Panel"" is kind of to excessive. Something like ""Media queue"" would be much more appropriate."	fbnlrt
	998	Profile in Topbar	graphic design/interface		enhancement		new	2014-10-18T13:23:40Z	2014-12-11T15:20:47Z	"In topbar you can only see the triangle.
To show users that they logged in show their avatar, nickname or other information (like twitter).
"	michael
	999	Notifications panel	graphic design/interface		enhancement	Jeremy Pope	in_progress	2014-10-18T13:27:27Z	2014-12-08T19:44:48Z	"Notifications show full width. No distinction between notifications and menu.

A start could be to add a top margin of about 20px to:

.header_notifications"	sebomoto
	5014	Add collection-based landing page that shows all users' collections (paginated)	programming		enhancement		review	2015-02-21T23:42:31Z	2018-10-30T19:18:40Z	"This feature would add a mediagoblin.ini configuration variable named 'most_recent_media_view' that, by default, shows the main landing page the way it is always shown now: with a paginated and reverse chronological list of media entries. It could be changed to 'Collection' to instead show a reverse chronological list of non-empty collections.

For now, a random media entry from the collection will be shown to represent the collection. In the future, this could be improved to allow the collection's creator to select a key entry to always show.

Some benefits of this change:
-Default behavior remains as-is
-Discoverability of collections is enhanced
-Allows increased customizability"	srudolph
	5059	Switch to use argparse	programming		enhancement	berkerpeksag	in_progress	2015-03-07T20:26:24Z	2016-09-17T15:59:17Z	"> Deprecated since version 2.7: The optparse module is deprecated and will not be developed further; development will continue with the argparse module.

So let’s use argparse instead.

-------
`git request-pull`:
{{{
The following changes since commit fc3c8f21a08a97051a709cb1a41b4339c3748ab5:

  Patch from breton: fix #5053 (gmg addmedia broken in 0.8.0) (2015-03-05 17:45:54 -0600)

are available in the git repository at:

  https://bitbucket.org/peekpeak/mediagoblin.git optparse-deprecated

for you to fetch changes up to 9fb7ef927e23f2f186678418fc93c1fee57e9176:

  use argparse instead of optparse (2015-03-07 21:15:17 +0100)

----------------------------------------------------------------
Jakob Kramer (3):
      add a handler to logger
      VideoThumbnailMarkII was deleted, use capture_thumb
      use argparse instead of optparse

 mediagoblin/media_types/video/transcoders.py | 73 +++++++++++++---------------
 1 file changed, 33 insertions(+), 40 deletions(-)
}}}"	gandaro_
	5067	Add config option to always skip transcode	programming		enhancement		review	2015-03-15T21:14:28Z	2018-10-30T19:16:35Z	"A {{{never_transcode}}} option would be useful under the {{{[[[skip_transcode]]]}}} section of the config file, for use with the localfiles plugin at least.

A patch that addresses this and #5065 is available here: https://github.com/msm-/mediagoblin_docker/blob/master/skip_transcode.patch

-- msm-"	anongoblin
	5077	share via a private link	programming		enhancement		new	2015-03-21T19:32:22Z	2017-07-24T19:13:28Z	"i want an option be the only one who can see the media.

additional to all other permissions there must be an option to share via a private link. (like with youtube)

i use it very much to quickly share a video or photo with a single person that don't have a account at some plattform.

this is the only feature why i don't use mediagoblin instead of youtube!"	davidak
	5212	Custom thumbnail/media sizes for video	programming		enhancement		review	2015-04-02T11:42:46Z	2018-10-30T19:14:37Z	"It would be very useful to be able to generate any number of thumbnails of different sizes from media uploaded, especially videos. This is partially related to #1042, as sharing a link to a video on MediaGoblin to another site would be helped by being able to convey appropriately sized media previews. The current thumbnails are useful for the MediaGoblin gallery, but it would be beneficial to be able to generate additional thumbnails with higher resolutions.

With the attached patch, I've taken some steps towards that, but I know far too little about MediaGoblin to make much progress beyond this. It tries to implement some sort of generic approach to generate images from videos, and supports the old thumb functionality as well a new ""share"" image, which is a higher resolution image. But both ""share"" and ""thumb"" are rather hardcoded, and it would be useful to be able to configure these sizes without modifying the code. I also don't know what else in mg is affected by this."	Jonas Öberg
	5350	More notifications options	programming		enhancement		new	2015-10-10T23:46:08Z	2020-05-16T15:58:56Z	"Notifications only seem to be sent to a user when new comments are added to a media they have peviously commented on.

It would be good if email notifications could be sent when, e.g., media is added to a specific collection, or a user posts new media.

Looking at the code quickly, it seems to embed a lot of assumptions about new comments only."	Olivier Mehani
	5351	Add “private” setting to limit media view/access to logged-in users	graphic design/interface		enhancement		new	2015-10-10T23:50:48Z	2020-05-16T15:54:30Z	"MediaGoblin currently exposes all the available media to the world (e.g., on the front page or a user's page), logged in or not. In some cases, it would be good to be able to restrict access to a select few.

One way to do this would be to condition the display of media and galleries on whether a user is logged in or not.

There is also the issue of access to the file itself, which should be similarly prevented from an unlogged user.

Of course, this behaviour should be configurable through a setting option."	Olivier Mehani
	5360	Adding Collections to addmedia and batchaddmedia, and tags to batchaddmedia.	programming		enhancement		review	2015-11-21T23:32:39Z	2016-01-19T03:18:41Z	"The addmedia command allows you to specify tags to add to your submitted item, but batchaddmedia does not. Further, neither of these commands allow you to specify a collection to add your items to. I'd like these features to be added (and in fact I'm working on a patch to do just that).

For reference, here is a mailing list conversation that I started on the topic. (I'm moving the discussion here to reduce noise on the list): http://lists.mediagoblin.org/pipermail/devel/2015-November/001305.html

Current status is that I have the feature working, and I even added some tests for these two commands (which afaik were missing). However there are some error cases that I am trying to avoid introducing. I'll put details in the comments, since it's still getting hashed out. You can probably follow my progress here: https://github.com/orblivion/mediagoblin/compare/batchaddmedia-collection-tag-on-master?expand=1"	Daniel Krol
	5361	Allow continuing where left off in csv for batchaddmedia	programming		enhancement		new	2015-11-22T07:23:44Z	2016-01-19T03:46:34Z	"My personal use case for csv is such that I'd rather have it break, fix it, and then continue where I left off, than have it continue if it fails, because I'd like to preserve the order of the files. I was hoping to add some features for this workflow. So here's the changes I would make:

0) Make sure `batchaddmedia` submits the files in the csv in order (right now it loops over a dict!)
1) Add a `--start` option to specify which entry to start on
2) Add a `--stop-on-failure` option. 
3) In case of exception, output a helpful bit of text that says to add `--start 20` (for instance) to continue where you left off."	Daniel Krol
	5370	LDAP User Filter	programming		enhancement		new	2015-12-07T12:13:29Z	2018-04-15T18:20:39Z	"I use mediagoblin with ldap authentication and needed group support (whether a user is in the mediagoblin group determines if they get access).  

For this I added a new config attribute ''LDAP_USER_FILTER'' which holds the filter.

The attached patch shows how I am using it on my instance."	Sebastian Hugentobler
	5392	Add ability to disable uploads of media type while retaining existing media of that type	programming		enhancement		new	2016-01-15T15:51:50Z	2016-01-22T21:58:31Z	"Per a discussion in #382, I think it would be nice to be able to disable further uploads of a particular media type without having to delete all the existing media of that type. For example, let's suppose I run an instance with multiple users and people have been posting awesome cat videos. Eventually I get a notice that my VPS is running low on disk space, and I want to disable further video uploads. But I don't want to delete the existing videos!

If I were to disable the video plugin entirely, then existing videos would fail to load or lead to crashes, based on the traceback reported in #382. So instead, I'd like to have some kind of per-plugin directive that lets me keep the media type enabled while disabling future uploads.

I'm thinking something like below.

{{{
 [plugin_spec]
+# Prevent users from uploading new media of this type?
+disable_upload = boolean(default=False)
+
 # Should we keep the original file?
 keep_original = boolean(default=False)
}}}"	ayleph
	5405	Content Security Policy	programming		enhancement		new	2016-01-22T19:00:58Z	2016-09-17T15:41:32Z	"CSP (Content Security Policy) is notably missing from MediaGoblin.

This will add an additional layer of security should a user be able to bypass comment sanitisation (or the blogging plugin) and add some hostile JS to their content.

At the very least, we should use this to limit JS to the host static assets are on.

Will be kinda tricky to implement in such a way that it won't cause issues when deploying - especially for novice users."	Matt Molyneaux
	5418	Fix the look of media type icon	graphic design/interface		enhancement		new	2016-02-16T22:57:19Z	2020-04-23T12:10:37Z	Comments from #365 need to be resolved and we should either say that we like the position/look or fix it	Boris Bobrov
	5428	"""Add media"" and ""Create new collection"" placing"	graphic design/interface		enhancement		new	2016-02-28T21:29:36Z	2016-03-01T12:53:18Z	"""Add media"" and ""Create new collection"" should be present out of the drop down menu. This will improve the UX."	Saksham Agrawal
	5430	admin media processing panel should be the same as user one	programming		enhancement		new	2016-02-29T22:29:45Z	2020-04-23T12:09:02Z	Admin media processing panel has old design and layout. It should be the same as user's processing panel, with filters of processing status.	Boris Bobrov
	5434	Lightbox effect for images	graphic design/interface		enhancement		accepted	2016-03-02T17:07:20Z	2021-04-09T06:18:11Z	Adding lightbox effect for images would be a good enhancement.	Saksham Agrawal
	5456	Add IPFS peer-to-peer based storage backend	programming		enhancement		new	2016-04-04T21:44:19Z	2016-09-18T02:35:44Z	[http://ipfs.io/ IPFS] is a distributed peer to peer Content-Addressed Storage system.  It seems pretty solid, and it seems like it would be nice to add as a storage backend for MediaGoblin.	Christopher Allan Webber
	5463	Allow deleting failed media from processing panel	programming		enhancement		new	2016-07-23T13:18:19Z	2016-09-18T02:32:06Z	The only way to delete media that failed to process is to use the gmg deletemedia command. Let's add a way to delete failed media from the user & admin media processing panels.	ayleph
	5477	Browse all media	programming		enhancement		new	2016-09-21T10:37:07Z	2016-09-21T10:44:23Z	"Currently, when clicking on any media from the front page, say at `URL/`, one is redirected to the user's media page, at `URL/u/USER/m/SLUG/`. Using the arrows now only browses media for this user, rather than media as displayed on the front page.

This ticket suggests the creation of an `URL/m/SLUG` route, which essentially displays the media as the `/u/USER` one, but allows to browse media across users. Link on the front page would lead to those pages, while links from `URL/u/USER` would lead to the currently existing page.

Actually, the same should also apply for collection: links in `URL/u/USER/collections/COLLECTION` should lead to, say, `URL/u/USER/c/COLLECTION/m/SLUG`, and navigation on those page should only be within media in the named collection."	Olivier Mehani
	5480	WebTorrent	programming		enhancement		new	2016-10-06T09:32:18Z	2016-10-08T10:50:14Z	"There is already a proposal in issue #779 to support a p2p content distribution technology. Sadly SwarmPlayer doesn't seem well at the moment - even the hosting organisation p2p-next seems down.

Luckily there is a new candidate out now to help people distribute content to a large audience. A streaming BitTorrent Client written in JavaScript and running in the browser.
https://github.com/feross/webtorrent

Providing this would also mean, that we get a torrent for every video for free. So users may also download the content with their BitTorrent Client and seed (distribute) it."	hex
	5489	user_ldap: Log something on failure due to SSL problems	programming		enhancement		new	2016-11-03T11:06:18Z	2017-10-09T03:13:30Z	"The SSL certificate of my LDAP server lapsed yesterday. I renwed it but forgot to restart the server.

My MediaGoblin instance authenticates users against this LDAP server, and started refusing logins, showing just “Login failed” in the UI.

Nothing appeared in the log suggesting that, rather than an invalid user or password, the reason of the failure was an SSL error when connecting to the server.

It would be good to log this explicitely, to help debugging those weird issues."	Olivier Mehani
	5566	Display uploaded file size sum vs upload limit	programming		enhancement		new	2018-04-10T17:23:36Z	2018-04-10T17:23:53Z	"There's a configuration option to set an upload limit, but there's no mechanism to display to a user how much of that limit is being used. I would like to add a display of the user's consumed upload limit viewable only by the user. Since it's possible to modify the upload limit on a per-user basis in the database, we should read the upload limit on a per-user basis instead of reading the global upload limit set in mediagoblin.ini.

For sites that haven't implemented an upload limit, I think it's still nice to show a user how much data they've uploaded. In this case, perhaps we could show something like ""450 MB / Unlimited"" or something similar."	ayleph
	5568	LDAP Plguin doesn't work well with Active Directory	programming		enhancement		review	2018-04-11T13:52:45Z	2021-09-20T17:39:17Z	"All,
  In implementing GMG in our Active Directory Environment, I discovered that it doesn't work particularly well with AD. I've generated a patch for some changes that I've made. Some of the changes are specific to AD, but some of them should be more generic for any LDAP implementation. I've also attempted to clarify the documentation, since I had to do to quite a bit of code reading to even find what all of the LDAP config options were.

  The changes in this patch are tested against my AD environment, and are known to be working -- I'll probably be rolling this out to production this week. I do hope to get an OpenLDAP implementation set up so that I can also test against it, but in reality I am probably quite a ways from it.

  I wasn't able to find a style guide, so I hope that my code is up to snuff. It is my first ever patch of this sort, so please be gentle. I'm happy to answer any questions."	Meaulnes
	5600	Mention a mail server in deployment docs	documentation		enhancement		new	2020-04-28T15:45:08Z	2021-09-19T13:28:47Z	"This could be as simple as ``apt install postfix``, which will pretty well work out of the box.

There is more too it that we could mention in ""considerations for production deployments"". The system would require a reverse DNS entry though and some hosts like AWS automatically blacklist mail from EC2 servers, and require you to use a third-party SMTP service, which you can configure in Postfix.

Personally, I really do like having something like Postfix in the mix rather than hooking MediaGoblin directly to third-party SMTP."	Ben Sturmfels
	5601	Mention HTTPS in deployment docs	documentation		enhancement		new	2020-04-28T15:47:48Z	2021-09-19T13:28:57Z		Ben Sturmfels
	5605	Atom feed compatibility with podcatchers	programming		enhancement		new	2020-04-30T13:29:09Z	2020-05-06T11:23:59Z	Has anyone modified the atom feed to point to the actual files for download?  It would be nice to have the feeds compatible with podcatchers.  This would work best with audio and video feeds.	thomzane
	5628	Select new thumbnail through GUI	programming		enhancement		new	2022-06-10T17:17:04Z	2022-06-10T17:17:04Z	It would be nice if a logged in user could select a thumbnail from a video.  I know how to manually set the thumbnail through the command line and backend, but it would be easier for the less technical if this was an option through the interface.	thomzane
	350	"Document what ""Category"" options are"	documentation		task		accepted	2011-12-08T13:58:00Z	2016-01-14T09:40:26Z	"{{{
#!rst
This is meta; I was wondering if we could get an explanation in the
Redmine wiki as to what the categories refer to. I get
**Documentation**, **Feature idea** and **Graphic design/UI**. I
don't quite understand the difference between **Infrastructure**
and **Programming**.

Per `#699 </issues/699>`_, I would be happy to document that, if
someone explained the last two to me.



}}}"	maiki interi
	1045	Merge sandyseventiesspeedboat into core	graphic design/interface		task		review	2014-12-01T16:43:30Z	2020-05-10T12:43:26Z	Move the sandyseventiesspeedboat theme into core instead of being a git submodule.	Jeremy Pope
	5341	mg-dev-environments repository needs migration to Savannah	infrastructure		task		new	2015-08-04T01:21:46Z	2015-08-05T06:00:15Z	I've just run across the mg-dev-environments repository in the docs, but it's no longer available though Gitorious (https://gitorious.org/mediagoblin/mg-dev-environments say that it's currently being migrated to archive.org). Can this please be pushed up to Savannah?	Ben Sturmfels
	714	"""Change forgotten password"" e-mail subject is not localizable"	graphic design/interface		defect		accepted	2013-05-31T01:08:01Z	2016-01-14T11:13:54Z	"Subject: ""GNU MediaGoblin - Change forgotten password!"" is not translatable."	Aleksej
	817	4 different similar strings about Markdown	graphic design/interface		defect		new	2013-12-03T20:03:56Z	2015-02-19T04:52:21Z	"Unless #389 gets fixed.

========================
#: mediagoblin/edit/forms.py:91 mediagoblin/submit/forms.py:65
msgid """"
""You can use\n""
""                      <a ""
""href=\""http://daringfireball.net/projects/markdown/basics\"">\n""
""                      Markdown</a> for formatting.""
msgstr """"
--
#: mediagoblin/submit/forms.py:41
msgid """"
""You can use\n""
""                        <a ""
""href=\""http://daringfireball.net/projects/markdown/basics\"">\n""
""                        Markdown</a> for formatting.""
msgstr """"
--

#: mediagoblin/user_pages/forms.py:25
msgid """"
""You can use <a ""
""href=\""http://daringfireball.net/projects/markdown/basics\"" ""
""target=\""_blank\"">Markdown</a> for formatting.""
msgstr """"

--
#: mediagoblin/user_pages/forms.py:49
msgid """"
""You can use\n""
""                      <a ""
""href=\""http://daringfireball.net/projects/markdown/basics\"" ""
""target=\""_blank\"">\n""
""                      Markdown</a> for formatting.""
msgstr """"

========================
"	Aleksej
	979	Server Error is untranslatable	graphic design/interface		defect		new	2014-09-26T09:46:40Z	2014-09-30T15:19:54Z	"The following page is available only in English.

{{{
#!html
    <h1>Server Error</h1>
    <div style=""text-align:center;font-family: monospace"">
  <h1>YEOWCH... that's an error!</h1>
  <pre>
.-------------------------.
|     __            _     |
|    -, \_,------,_//     |
|     <\  ,--   --.\      |
|      / (x  ) ( X )      |
|      '  '--, ,--'\      |
|     / \ -v-v-u-v /      |
|     .  '.__.--__'.\     |
|    / ',___/ / \__/'     |
|    | |   ,'\_'/, ||     |
|    \_|   | | | | ||     |
|     W',_ ||| |||_''     |
|      |  '------'|       |
|      |__|     |_|_      |
|     ,,,-'     '-,,,     |
'-------------------------'
  </pre>
  <p>Something bad happened, and things broke.</p>
  <p>If this is not your website, you may want to alert the owner.</p>
  <br><br>
  <p>
    Powered... er broken... by
    <a href=""http://www.mediagoblin.org"">MediaGoblin</a>,
    a <a href=""http://www.gnu.org"">GNU Project</a>.
  </p>
</div>
}}}"	Genghis Khan
	5064	Add option to override ./configure'd virtualenv	programming		defect		new	2015-03-13T20:34:53Z	2016-02-22T22:58:53Z	"`./configure` searches for `virtualenv` in the following order:

- `virtualenv`
- `virtualenv3`
- `virtualenv2`

Once a match is found, the search terminates. If a user has both python2 and python3 installed, then the python3 `virtualenv` may be configured for use, even when `--with-python3` is not specified. This results in an error for users who intend to use (or need to use) python2.

In the case of Arch Linux, `virtualenv` is the python3 package, and `virtualenv2` is the python2 package. When I run `./configure` without specifying `--with-python3`, the python3 `virtualenv` is configured even though I didn't intend to use python3. To fix this, I must manually edit Makefile as follows before running `make`.

{{{
-VIRTUALENV = virtualenv
+VIRTUALENV = virtualenv2
}}}

Some options for how to deal with this come to mind.

Does `./configure` support interactive configuration? If so, we could consider searching for all `virtualenv`s and then asking the user which one they want to use.

The undocumented `--with-virtualenv` switch [1] could be extended to accept a path to the desired executable.

If distributions consistently use `virtualenv2` for python2 and use `virtualenv` (or `virtualenv3`) exclusively for python3, perhaps we could tie the selection of `virtualenv` to the python version specified in configuration.

[1] `--with-virtualenv` is a programmed option in `./configure`, but it isn't shown in `./configure --help`. See issue #5022."	ayleph
	5522	Add pixel to test_exif_image_orientation	programming		defect		review	2017-08-14T02:25:19Z	2021-09-19T13:50:32Z	"When executing the tests on a recently cloned repository, the test_exif_image_orientation failes because the value is apparently different on my system.

The value (36, 23, 14) must be added."	jsandoval
	164	"Consider cache ""table"""	programming		enhancement		accepted	2011-07-26T15:33:00Z	2014-08-21T12:19:48Z	"{{{
#!rst
Currently, computed (processed) data is stored alongside ""original""
data in the database. Most notable example are comments and the
rendered html for them.

There are various reasons for not storing them at the same place:


-  If the options for processing (the created html) changes, a
   migration must be added to convert all existent entries. Or if the
   user changes the options, they have to let every entry be updated.
   Think of large installations! With a cache style setup, one simply
   drops the cache and it will be recreated as needed.
-  It's cleaner layout of the db.
-  Also maybe an option for backup: Many people only want the
   ""original"" stuff in the backup, as everything else can be
   regenerated as needed.

An alternative is to drop the pre-rendered stuff from the db and
create it ""on the fly"" as needed.
Or cache it in some (beaker?) memory cache.



}}}"	Elrond
	260	A way for a reader to see thumbnails/resized versions in other sizes	programming		enhancement		accepted	2011-09-16T13:54:00Z	2012-08-13T17:32:26Z	"{{{
#!rst
The reader should be able to view galleries and image pages with
the images resized to other sizes than a single default one: it is
not possible for the browser to scale thumbnails up infinitely
without losing their quality.

Examples:


-  Flickr has at least ""small"" and ""medium"" gallery views, and
   several sizes for viewing and downloading of individual images.
-  MediaWiki allows registered users to choose from several
   thumbnail sizes for viewing of pages, and to generate a thumbnail
   of any size.



}}}"	Aleksej
	268	display where media is used (on external locations)	programming		enhancement		accepted	2011-09-19T13:52:00Z	2015-02-19T04:51:17Z	"{{{
#!rst
reason:
the more the media is used/(reused as mix) the higher the
importance probably
for me as creator as well as observer this would be a nice to have

implementaion:
- trackback (as with blog posts)? perhaps over an additional
service where people can send a ping to when they use the media?
- a bot which scans for media + indexes them somehow?



}}}"	Erkan Yilmaz
	346	Keyboard shortcuts	programming		enhancement		accepted	2011-12-06T15:55:00Z	2018-04-19T14:04:06Z	"{{{
#!rst
It would be great to have the interface accessible via keyboard
shortcuts.

Examples
- Links such as
- Logged in user
- Log out
- Login
- Forms
- Picture navigation
- Pagination

I like the way FogBugz has done it, you click Ctrl+, and it shows
the shortcut character for each of the links/subsections/inputs.
You then click the shortcut character to activate the control. Of
course, that does not fit for all things, such as media
navigation.

Input is welcome. (ahah, pun intended)



}}}"	joar
	348	Ads support with Open X	other		enhancement		accepted	2011-12-07T14:09:00Z	2012-03-02T13:49:22Z	"{{{
#!rst
I think that at some time we will need to include ads support, and
that for this it could be ideal the open-source advertising server
OpenX.

I've written more details in my wiki user page, since I think this
will need a lot of literature:
`http://wiki.mediagoblin.org/User:Manolinux#Openx\_support <http://wiki.mediagoblin.org/User:Manolinux#Openx_support>`_

Tell me your opinion here or by IRC.



}}}"	Manolinux aka Mu
	351	Markdown editor	programming		enhancement		accepted	2011-12-08T18:08:00Z	2013-03-25T06:45:07Z	"{{{
#!rst
Add a markdown editor for textareas which use markdown (to improve
user experience). Solutions exist under *possibly* free licenses.
Most are based off StackOverflow's reversed engineered WMD editor
(which might or might not be under a free license). Original
reverse engineering project:
`https://github.com/cky/wmd/tree <https://github.com/cky/wmd/tree>`_
(with 112 forks)

So implementation is in three steps:


-  Check with lawyers about possible implications of using a
   reverse engineered WMD editor version
-  If OK, find a good fork which suits MediaGoblin's needs
-  Find all markdown input fields in code and add the editor (along
   with tweaking and making it pretty)



}}}"	Tryggvi Björgvinsson
	541	Use versioned API URLs	programming		enhancement	joar	new	2012-11-16T11:33:09Z	2013-03-20T14:48:14Z	"The API development is phantastic, but it is bound to evolve and change heavily over time. To make things easier (ie more stable) for client developers, we should provide a versioned API. ie

use /api/1/entries/ /api/1/submit for now. This way we can deprecate existing API and replace it with newer one without constantly breaking clients.

Perhaps a /api/version call could return a list of supported API versions.

I think this should be done before MG becomes too widespread as breaking compatability is going to become harder then.

Does this sound sensible? I could help working on that if needed."	spaetz
	572	Move Columns from MediaEntry to ProcessingMetaData	programming		enhancement		new	2012-12-17T11:53:24Z	2015-06-22T21:37:56Z	"There is a new table for data used while (or at the end of) processing. It's currently only used for the callback url. We should use it for more things. So I propose to move various columns from `MediaEntry` into `ProcessingMetaData`.

Possible columns:
* transcoding_progress
* queued_task_id
* queued_media_file (*)
* fail_error (*)
* fail_metadata (*)

After a successful processing, none of these are needed.
After a failed processing, those with (*) might be needed for various reasons. We should rethink that part maybe anyway."	Elrond
	590	Provide Markdown formatting options rather than linking to Markdown website	graphic design/interface		enhancement		new	2013-01-09T03:32:06Z	2013-01-09T03:32:06Z	"When a new user is setting up their profile, the website text tells them that they can use Markdown, and links them to the Markdown website.

A better approach might be to do what Reddit does when allowing users to add basic text formatting to their comments. Reddit just has a link that says ""Formatting Help,"" which displays text formatting options when someone clicks on it. It displays things as, ""You Type"" and ""You See"", which I think makes sense for less technical users who might not know or care much about Markdown. Just showing the formatting options would help them do what they need to do without having to review the Markdown website."	Jim Campbell
	600	"""Liberate my data"" (data export button)"	programming		enhancement	spaetz	new	2013-01-21T16:32:53Z	2014-09-02T10:00:54Z	"As a nice service we need to help users to migrate their data. I plan to introduce a ""liberate my data"" button which exports a users media metadata, URLS, tags, comments etc.... into a json file. 

This service should also include the URL to the original media file (rather than the media file itself), so that an import slurper can upload the media directly from the old instance.
We should probably also provide a sample script which would download the media files of a user to their hard drive again.

What do people think of this?"	spaetz
	816	BCV (Buscador de Contenidos en video) / BCV (content search in video)	programming		enhancement		new	2013-11-21T17:23:51Z	2015-02-19T04:47:12Z	"youtube no quiere ser el primero. Por eso mi idea si es posible.

BCV (Buscador de Contenidos en video) / BCV (content search in video)

es:.
Tecnología BCV (Buscador de Contenidos en video) solo es una simple Base de Datos que indexara cosas que uno ve en los videos. Quien indexara esas cosas sera el propio autor del video. Con esta mejora se hallaran mejores búsquedas

en:.
BCV (content search in video) technology is only a simple database that host things that one sees in the videos. Who the author of the video host will be stuff. With this improvement, better searches is found"	Fabián Bonetti
	947	Media type configuration options are not documented	documentation		enhancement		accepted	2014-08-16T14:24:20Z	2016-07-25T00:54:35Z	"Enabling the various media types is well documented, however no hint is given on how to configure media specific options, e.g. video quality.

There are individual `config_spec.ini` files scattered around, but there's no mention of where to put those options in `mediagoblin_local.ini`."	Matt Molyneaux
	959	Create separate git repository for MediaGoblin themes	infrastructure		enhancement		new	2014-09-01T03:26:45Z	2014-12-09T16:21:34Z	"MediaGoblin should provide a separate mediagoblin-themes repository similar to that which the Pelican project maintains [0]. 

It would be simple to set up, and would provide a common platform for theme hosting and user theme discovery. The core themes could be
maintained directly in the repository, and any user-contributed themes could be listed / provided as git submodules.

To be included, each theme should ideally include at least one screenshot of the theme as deployed and state which MG versions it is valid against.

[0] https://github.com/getpelican/pelican-themes"	Jim Campbell
	1042	Embed Open Graph data into relevant pages	programming		enhancement		new	2014-11-26T01:32:42Z	2016-09-17T15:44:12Z	"[http://ogp.me/ The Open Graph Protocol] is used by a number of websites (such as Diaspora) to fetch thumbnails, descriptions, previews, etc. of media linked to in posts and comments.

I think this only requires a template change - all needed data should be in context at render time."	Matt Molyneaux
	1051	"""Max file size: X mb"" should state ""MiB"", not ""mb""."	graphic design/interface		enhancement		accepted	2014-12-04T23:04:26Z	2016-07-25T00:56:26Z	"First of all, thanks for your awesome work in Mediagoblin.

I know this might sound very picky and even stupid, but stating ""MB"", in caps, would be wrong, because the real unit used for files is, universally, but commonly misnamed, the mebibyte, MiB.

It's commonly misnamed as ""MB"" for historical reasons, and even if incorrect, I can understand the resistance to change.

But stating ""mb"" is wrong in all levels. Mega is ""M"", not ""m"" (which could be 'meters'), and ""b"" means bits, not bytes.

I'm providing a patch to be less annoying in case you feel this is an acceptable change. I hope it's well done, it comes from a ""git diff""

"	anongoblin
	5034	Inconsistent variable syntax in Makefile.in	programming		enhancement		new	2015-02-26T06:51:39Z	2016-09-18T02:00:29Z	`Makefile.in` uses both ${VARIABLE} and $(VARIABLE) syntax. It seems that some of the @variables@ from `Makefile.in` get turned into ${VARIABLES} in `Makefile`, so I'd recommend changing everything to use curly braces {} instead of parentheses ().	ayleph
	5565	Display file size of uploaded media	programming		enhancement		new	2018-04-10T17:15:17Z	2018-04-10T17:15:17Z	I think it would be useful to show the file size of uploaded media, on the media page itself, in the processing panels, or both. This could be of interest to people downloading files (especially potentially large video files). It would also be useful for sites that have implemented the user upload limit as it gives the user a way to see how much space each file takes up.	ayleph
	5567	Allowing setting per-user upload limits	programming		enhancement		new	2018-04-10T17:33:07Z	2018-04-10T17:33:07Z	You can set a global user upload limit in mediagoblin.ini. I'd like to add a mechanism to set per-user upload limits. I currently do this by manually editing the values in the database, but perhaps we could add this functionality to an administrator page on the web interface or to a gmg subcommand.	ayleph
