__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//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] 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 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 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 - : 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: {{{