Sebastian Spaeth [Tue, 8 Jan 2013 15:57:15 +0000 (16:57 +0100)]
Merge branch 'WIP/test_performance'
Sebastian Spaeth [Tue, 8 Jan 2013 12:31:16 +0000 (13:31 +0100)]
tests: More instances where a fresh database is not needed
Save test runtime by not dumping the databases when not needed.
Sebastian Spaeth [Wed, 19 Dec 2012 13:18:03 +0000 (14:18 +0100)]
Don't read full image media into RAM on copying (#419)
We copy uploaded media from the queue store to the local workbench
and then to its final destination. The latter was done by simply:
dst.write(src.read()) which is of course evil as it reads the whole
file content into RAM. Which *might* arguably still be OK for
images, but you never know.
Make use of the provided storage() methods that offer chunked copying
rather than opening and fudging with files ourselves.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Tue, 8 Jan 2013 10:57:25 +0000 (11:57 +0100)]
Don't get a fresh app when not needed
These tests, don't need fresh databases, so don't discard and recreate
the tables. This reduces test suite runtime on my laptop from 130 to 96
seconds.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Tue, 8 Jan 2013 09:22:13 +0000 (10:22 +0100)]
Do not fail is a user exists already
When the tests want to create a new user, don't fail if it already
exists and just reuse the existing one. This allows us to run tests
without dumping the whole database if that is not needed for the tests.
The upcoming tests for test_edit will make use of this.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Tue, 8 Jan 2013 07:59:32 +0000 (08:59 +0100)]
Fix slug lookup regression (#587)
Removing the Mongo InvalidID legacy code removed an explicit check for
"int" for the id lookup. This led the @get_user_media_entry decorator to
fail if we looked up a nonexisting non-numerical slug (it tried to query
the id with a string, which failed). Cast id to int and return 404 in
case it is non-numeric which fixes the regression. It does not fix the
underlying problem of slug_or_id lookups that were discussed.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Joar Wandborg [Mon, 7 Jan 2013 20:33:43 +0000 (21:33 +0100)]
Made the airy header element responsive again
Sebastian Spaeth [Mon, 7 Jan 2013 12:52:14 +0000 (13:52 +0100)]
Remove custom GMQuery class
We provided a custom GMQuery class that offered a .sort() method for
compatibility with the Mongo syntax. Now that we have settled for sqlalchemy
which uses the order_by() method, we can safely remove this custom class
and move a little closer to "pure" and native sqlalchemy usage.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Mon, 7 Jan 2013 12:03:51 +0000 (13:03 +0100)]
Mv db.sql.base to db.base
This concludes the db.sql.* -> db.* move. Our db abstraction layer is
sqlalchemy, so there is no need to a separate db.sql.* hierarchy.
All tests have been run for each of the commit series to make sure
everything works at every step.
Sebastian Spaeth [Mon, 7 Jan 2013 12:03:33 +0000 (13:03 +0100)]
Move mediagoblin.db.sql.extratypes to mediagoblin.db.extratypes
No other functional changes.
Sebastian Spaeth [Fri, 30 Nov 2012 09:10:35 +0000 (10:10 +0100)]
Move db.sql.models* to db.models*
Sebastian Spaeth [Fri, 30 Nov 2012 08:49:45 +0000 (09:49 +0100)]
Move db.sql.util to db.util
Now that sqlalchemy is providing the database abstractions, there is no
need to hide everything in db.sql. sub-modules. It complicates the code
and provides a futher layer of indirection.
Move the db.sql.util.py to db.util.py and adapt the importers.
Sebastian Spaeth [Mon, 7 Jan 2013 10:15:04 +0000 (11:15 +0100)]
Remove mediagoblin.db.sql.fake.DESCENDING
This is the last remnant that requires us to keep db.sql.fake.py. Use
ModelName.desc() or sqlalchemy.sql.expression.desc(column) to achieve
descending sorts.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Christopher Allan Webber [Mon, 7 Jan 2013 03:46:38 +0000 (21:46 -0600)]
Also make slug unit test work with the new optionally-translitcodec-free code
Christopher Allan Webber [Mon, 7 Jan 2013 03:41:08 +0000 (21:41 -0600)]
Make translitcodec optional, and work nicely without it.
Joar Wandborg [Wed, 2 Jan 2013 19:05:07 +0000 (20:05 +0100)]
Made api_test use @require_active_login
Elrond [Wed, 26 Dec 2012 22:40:42 +0000 (23:40 +0100)]
prepare_queue_task: Take app not request.
First rename prepare_entry to prepare_queue_task, because
this is really more like what this thing does.
Thanks to Velmont for noting that we do not need a request
in here, but an "app" is good enough. Which means, that
this stuff can be called from tool scripts too.
Elrond [Tue, 18 Dec 2012 11:32:42 +0000 (12:32 +0100)]
upload refactor: Use prepare_entry in api.
Elrond [Tue, 18 Dec 2012 11:24:10 +0000 (12:24 +0100)]
Use run_process_media in the api.
Now refactor in the api. Start with run_process_media.
Elrond [Mon, 17 Dec 2012 19:05:37 +0000 (20:05 +0100)]
Processing: Factor out prepare_entry.
prepare_entry handles the task_id setup and generating a
queue filename and file. it returns the queue file.
Elrond [Mon, 17 Dec 2012 18:54:26 +0000 (19:54 +0100)]
Factor out the actual calling of the processing.
Calling the processing task and handling the exceptions is
easy, but has a bunch of caveats, so factor it out into an
easy callable function.
Elrond [Mon, 17 Dec 2012 18:42:31 +0000 (19:42 +0100)]
upload refactor: push url handling
Start to refactor our upload handling in main submit and
the api. Start factoring out the handling of PuSH url
handling.
Odin Hørthe Omdal [Wed, 26 Dec 2012 15:16:33 +0000 (16:16 +0100)]
Bug #584, upgrade EXIF.py from master to read Nikon data
Sebastian Spaeth [Wed, 26 Dec 2012 09:21:45 +0000 (10:21 +0100)]
Fix up symlinks in exif bump
Previous exif bump copied the newer version into
mediagoblin/tools/extlib/exif but not in extlib/exif. Fix this by
bumping extlib/exif and symlinking to tools/extlib/exif.
Do note that this is still the version fetched from http://sourceforge.net/projects/exif-py/
while the upstream maintainer seems to be active on:
https://github.com/ianare/exif-py
(The sf.net download is quite new though)
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Tue, 25 Dec 2012 19:52:25 +0000 (20:52 +0100)]
Remove ObjectId from the tree
This was one of the last remaining Mongo holdouts and has been removed from
the tree herewith. Good bye, ObjectId.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Tue, 25 Dec 2012 19:45:59 +0000 (20:45 +0100)]
Remove temporary emacs files that have slipped in
Thanks Elrond for hilighting this :-)
Sebastian Spaeth [Tue, 25 Dec 2012 19:28:19 +0000 (20:28 +0100)]
Remove InvalidId
It was a NoOp in our Non-mongo world. So it is safe to remove.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Fri, 30 Nov 2012 09:03:53 +0000 (10:03 +0100)]
Move db.sql.migrations to db.migrations
Sebastian Spaeth [Fri, 30 Nov 2012 08:32:25 +0000 (09:32 +0100)]
Move db.sql.open to db.open
Now that mongo has been ripped out and sqlalchemy is already providing
the database abstraction, there is no need to hide everything in the sql
module. Transition db.sql.open to db.open and adapt all direct importers.
Sebastian Spaeth [Thu, 29 Nov 2012 16:23:28 +0000 (17:23 +0100)]
RIP out mongo
Since sqlalchemy is providing our database abstraction and we have
moved away from Mongo as the underlying database, it is now time to
simplify things and rip out mongo. This provides the bulk of the
changes, and can stand on its own. There are some followup tasks
that can be done, such as removing now unneeded abstraction layers,
e.g. db.sql.fake.py
Sebastian Spaeth [Mon, 19 Nov 2012 16:38:46 +0000 (17:38 +0100)]
Update extlib/EXIF
Bump bundled EXIF lib to 1.0.10 as release in Sep 2012.
Also skip unused detailed EXIF tags for reading, we might turn that
on when we need them.
Adapt test to wording change in EXIF Flas field and due to the fact
that we use "details=False" by default now (we did not use these
anyway)
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Tue, 25 Dec 2012 18:18:23 +0000 (19:18 +0100)]
Merge branch '512_bump_video_js'
Sebastian Spaeth [Thu, 20 Dec 2012 08:07:59 +0000 (09:07 +0100)]
Bump bundled video.js to v3.2.3 (#512)
There is nothing inherently wrong with the currently bundled version,
but the last one was uploaded in March 2012 and there have been
upstream releases since. So bump to the latest available release 3.2.3.
Might help with the reported issue 512 of an unresponsive video player.
Do note that the Flash fallback option is removed. If we decide
this should be added it is easy to add it back.
We still use our own customized theme.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Christopher Allan Webber [Tue, 18 Dec 2012 22:46:20 +0000 (16:46 -0600)]
makeadmin and changepasswd had swapped help text
Elrond [Mon, 17 Dec 2012 16:36:34 +0000 (17:36 +0100)]
(SQL) Media types: Refactor backrefnames.
We need to know the name of the backref, so that we can
access it by name on the MediaEntry. We might be able to
get this name by inspection, but this way is easier, for
now.
Elrond [Sun, 23 Dec 2012 20:44:05 +0000 (21:44 +0100)]
Remove mongo style .id = ObjectId()
On SQL we can't generate the primary key on our own. So
just remove this stuff.
Elrond [Sun, 23 Dec 2012 20:01:13 +0000 (21:01 +0100)]
Mongo removal: Remove the validate=True arg to obj.save()
all callers were forced to use validate=True anyway. So
remove this useless stuff.
Elrond [Sun, 23 Dec 2012 22:55:44 +0000 (23:55 +0100)]
Fix some unicode related issues in oauth and the api.
Found using the previous commit.
Elrond [Sun, 23 Dec 2012 22:52:08 +0000 (23:52 +0100)]
Testsuite: Turn SQLAlchemy warnings into errors
We should handle SQLAlchemy warnings. And to make that a
lot easier, turn them into real errors. That way they
1) Turn up more prominently.
2) Have a useful backtrace.
This only happens in the testsuite, so that normal useage
is not impacted.
Joar Wandborg [Sat, 22 Dec 2012 23:34:27 +0000 (00:34 +0100)]
Added API tests
Elrond [Sat, 15 Dec 2012 23:45:57 +0000 (00:45 +0100)]
Rewrite routing using new MGRoute class
MGRoute subclasses Rule():
Rule doesn't have a way to tag extra data, like the
controller function, we need. So MGRoute has a new
attribute .gmg_controller, which holds this.
Rewrite everything to use this new Rule variant and drop
all the other stuff that mapped endpoints to controller
functions, mostly.
Elrond [Sat, 15 Dec 2012 20:30:13 +0000 (21:30 +0100)]
Rewrite routing.py / get_url_map
Move most of the "init routing" code inside get_url_map().
Maybe not the best solution, but better than running the
init code directly at module load time.
Elrond [Sat, 15 Dec 2012 23:50:20 +0000 (00:50 +0100)]
Move things from routing.py to tools/routing.py
This stops a cyclic import.
Move add_route, mount and endpoint_to_controller into
tools/routing.py and change all callers.
Elrond [Sat, 1 Dec 2012 20:36:18 +0000 (21:36 +0100)]
Refactor routing in app.py.
Move some things out of app.py into functions in
routing.py. This makes app.py a bit more readable and
allows us to rewrite routing.
Sebastian Spaeth [Sun, 23 Dec 2012 11:12:11 +0000 (12:12 +0100)]
Compare user by id not object equality
Elrond correctly remarked that we should be comparing user by id
and not by comparing User objects (as I mistakenly did). He is
right, of course!
Also removing the 2 stray debug prints that were left over.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Sun, 23 Dec 2012 11:08:51 +0000 (12:08 +0100)]
Improve sqlalchemy filter rules
Thanks to Elrond's review. 1) Use filter_by more consistently
rather than mixing filter and filter_by. 2) Add multiple AND
conditions in the same filter rule rather than using separate
ones. 3) The atom feeds used filter_by(Modelname.attr == ...)
which was the wrong pattern, of course.
Thanks for repairing my junk Elrond!
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Sun, 23 Dec 2012 10:58:51 +0000 (11:58 +0100)]
Convert return HttpException to raise HttpException
controllers (view function) raise HttpException's and do not return them.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Sun, 23 Dec 2012 10:57:45 +0000 (11:57 +0100)]
Provide tools.response.render_http_exception and use that
After the webob->werkzeug transition, controller functions can raise
werkzeug.HttpExceptions. We need to catch these in app.py when calling
the controller and handle them, rendering the corresponding error Response()
object. For consistency, we also want to allow meddleware functions to
raise HttpExceptions (e.g. the csrf meddleware needs to complain about lack
of cookies), so wrap the request and response parts of the meddleware too.
Finally, the urlmap.match() can also raise HttpExceptions, so we give it the
same treatment (render_http_exception). I am not sure, if we do not need to
handle the Redirect exception there in any different way though...
The new function render_http_exception makes use of the render_error infrastructure
to return a nicely templated error page. It also checks if the stock error
messages was used in cases where we have localizations (403, 404) and use those.
It is now possible to do things like "raise Forbidden(_('You suckr'))" or
raise NotFound(_('where is my left show again')) if you want to return
customized error messages to the user.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Sat, 22 Dec 2012 11:05:03 +0000 (12:05 +0100)]
Revert accidental checkin
Commit
8d19cb2445e2aa1f53431da26d866bf9b5e25872 accidentally included
my docs/source/build directory. Removing it again. Thanks to Elrond for
noticing.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Christopher Allan Webber [Fri, 21 Dec 2012 15:08:52 +0000 (09:08 -0600)]
We're in 0.3.3.dev territory now.
Sebastian Spaeth [Fri, 21 Dec 2012 09:35:05 +0000 (10:35 +0100)]
Remove mongolisms from auth.views
Remove find find_one etc and use sqlalchemy syntax
Sebastian Spaeth [Mon, 17 Dec 2012 11:56:29 +0000 (12:56 +0100)]
Remove Mongoism query.skip()
sqlalchemy supports slice() or [n:m] just fine.
Right now, it seems we cannot distinguish beween "empty" results
and out-of bound slices. It would be nice if we could distinguish
these somehow.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Fri, 21 Dec 2012 10:25:38 +0000 (11:25 +0100)]
Remove mongolisms from user_pages.view #451
Sebastian Spaeth [Fri, 21 Dec 2012 10:25:13 +0000 (11:25 +0100)]
Refactor media_collect
Remove lots of MOngolisms. Refactor this to remove some indentation
levels. Don't do:
if success:
...
if success:
....
if success:
...
Sebastian Spaeth [Fri, 21 Dec 2012 08:11:21 +0000 (09:11 +0100)]
Merge branch '577_denoise_video_transcoding'
Sebastian Spaeth [Fri, 21 Dec 2012 07:20:54 +0000 (08:20 +0100)]
Don't dbug log every added plugin route
It is killing testsuite output by drowning out all signals. It should
be sufficient to state in the pluginmanager that routes have been added,
if we need that kind of output.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Fri, 16 Nov 2012 10:32:35 +0000 (11:32 +0100)]
Don't require webob as dependency
It is pushing up the daisies. Also relnote the change.
Sebastian Spaeth [Fri, 16 Nov 2012 10:36:04 +0000 (11:36 +0100)]
Remove webob compatability
Remove the aliases we provided for webob compatability as webob is
now gone. Grepped the code base to check for occurences of the old
parameters to be safe. Keep request.GET attribute as alias for
request.args as it is often used and django is also using that
attribute.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Fri, 16 Nov 2012 10:31:16 +0000 (11:31 +0100)]
plugins/api: webob.Response -> werkzeug.Response
Sebastian Spaeth [Wed, 12 Dec 2012 10:38:51 +0000 (11:38 +0100)]
plugins/api: use headers.set(), not headers.update()
The werkzeug.Response().headers do not offer an update() method as
the same key can be twice in the header 'dict'. Thus, iterate over
the header keys and use header.set(key, value) which replaces an
existing header key.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Fri, 16 Nov 2012 10:21:15 +0000 (11:21 +0100)]
replace webob.Response with werkzeug Response
Replace webob usage in one more file. Document a TODO that should
be clarified, we should probably be using json_response rather than
Response() here.
Modify the TestMeddleware to not rely on the content_type attribute
being present, while werkzeug.wrappers Response() has it the BaseResponse()
object which is often returned in tests does not have it.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Fri, 16 Nov 2012 10:13:01 +0000 (11:13 +0100)]
Transition webob BadRequest|HTTPFound to webob/redirect
More transitioning away from webob
Response import from webob was unused
Sebastian Spaeth [Wed, 12 Dec 2012 10:54:43 +0000 (11:54 +0100)]
tests/auth: Don't rely on case sensitive error strings
webob's 404 status is "404 NOT FOUND" while werkzeug's is
"404 Not Found". Our test suite was checking the upper case string
for equality. Just test the status error code "404" rather than the
full string which might change at some points/versions and should
not need to be tested.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Fri, 16 Nov 2012 10:05:08 +0000 (11:05 +0100)]
webob.HTTPFound --> MG.tools.redirect
Transition away from webob.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Thu, 15 Nov 2012 15:55:15 +0000 (16:55 +0100)]
Transition webob.HttpForbidden to webob's exceptions Forbidden
Also the BadRequest exception.
Sebastian Spaeth [Thu, 15 Nov 2012 15:49:51 +0000 (16:49 +0100)]
Remove webobisms from decorators.py
Use our own redirect function rather than webobs HttpFound
Also replace HttpForbidden() with webob's Forbidden()
Sebastian Spaeth [Thu, 15 Nov 2012 15:57:33 +0000 (16:57 +0100)]
purge webob from docs and replace with werkzeug
Sebastian Spaeth [Fri, 16 Nov 2012 09:25:50 +0000 (10:25 +0100)]
Remove webob from render_to_response
We were still using webob's Response objects for template rendering.
Transition to werkzeug's Response object. One caveat was that it
seemed to have used the default mimetype "text/plain" for all pages,
so we override the default Response class, setting the default mime
type to "text/html".
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Fri, 16 Nov 2012 08:12:34 +0000 (09:12 +0100)]
Extend redirect helper to take optional location keyword
In order to move away from webob with its redirect(location=...) we
need to provide a redirect function that allows to directly specify
the URL rather than the urlgen parameters that we now use.
Extend our MG.tools:redirect helper so we can pass in the direct URL
via the optional "location" keyword.
This commit does not switch over any redirect consumers yet.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Thu, 20 Dec 2012 22:10:07 +0000 (23:10 +0100)]
Remove SimpleFieldAlias
It was only used for the model._id -> model.id conversion and is not
needed anymore.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Fri, 30 Nov 2012 09:49:06 +0000 (10:49 +0100)]
Move DBModel._id -> DBModel.id
We were refering to model._id in most of the code base as this is
what Mongo uses. However, each use of _id required a) fixup of queries:
e.g. what we did in our find() and find_one() functions moving all
'_id' to 'id'. It also required using AliasFields to make the ._id
attribute available. This all means lots of superfluous fixing and
transitioning in a SQL world.
It will also not work in the long run. Much newer code already refers
to the objects by model.id (e.g. in the oauth plugin), which will break
with Mongo. So let's be honest, rip out the _id mongoism and live with
.id as the one canonical way to address objects.
This commit modifies all users and providers of model._id to use
model.id instead. This patch works with or without Mongo removed first,
but will break Mongo usage (even more than before)
I have not bothered to fixup db.mongo.* and db.sql.convert
(which converts from Mongo to SQL)
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Thu, 20 Dec 2012 23:27:59 +0000 (00:27 +0100)]
Fix up tests
empty find() queries would not work anymore with the simplified .find
compatability code, so remove these and use proper sqlalchemy in the
tests.
The storage test failed because my virtualenv environment ran
mediagoblin/local/mediagoblin/tests/test_storage.py and somehow decided
the 2 classes are different objects. Just test against the full class name.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Christopher Allan Webber [Thu, 20 Dec 2012 19:54:03 +0000 (13:54 -0600)]
Fixing tyop'ed "dbupdate"
Christopher Allan Webber [Thu, 20 Dec 2012 17:16:29 +0000 (11:16 -0600)]
NOW RELEASING: MediaGoblin 0.3.2! :D
Christopher Allan Webber [Thu, 20 Dec 2012 16:11:54 +0000 (10:11 -0600)]
Committing extracted and compiled translations
Christopher Allan Webber [Thu, 20 Dec 2012 16:11:34 +0000 (10:11 -0600)]
Committing present MediaGoblin translations before pushing extracted messages
Christopher Allan Webber [Thu, 20 Dec 2012 15:48:47 +0000 (09:48 -0600)]
0.3.2 release notes
Christopher Allan Webber [Thu, 20 Dec 2012 15:27:56 +0000 (09:27 -0600)]
Updating AUTHORS with new contributors. Nice job new contributors! :)
Christopher Allan Webber [Thu, 20 Dec 2012 15:19:50 +0000 (09:19 -0600)]
Committing extracted and compiled translations
Christopher Allan Webber [Thu, 20 Dec 2012 14:22:49 +0000 (08:22 -0600)]
Docs fix: Adding proper blank line after the "Run::"
Christopher Allan Webber [Thu, 20 Dec 2012 14:18:19 +0000 (08:18 -0600)]
Added documentation on how to add STL support, and notes on running ./bin/gmg dbupdate
Sebastian Spaeth [Wed, 19 Dec 2012 14:43:38 +0000 (15:43 +0100)]
Only log output and write progress to db if it has changed
De-noisify the transcoding log and db updates. Previously we would log
and save the progress percentage every second, even if it had not changed
at all. Save progress:oercentage in the Transcoder and only log/update
when the percentage has actually changed.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Tue, 18 Dec 2012 15:54:07 +0000 (16:54 +0100)]
Try ipython-based shell first, falling back to plain shell
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Tue, 18 Dec 2012 15:54:07 +0000 (16:54 +0100)]
Try ipython-based shell first, falling back to plain shell
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Christopher Allan Webber [Tue, 18 Dec 2012 22:46:20 +0000 (16:46 -0600)]
makeadmin and changepasswd had swapped help text
Jef van Schendel [Sun, 16 Dec 2012 20:57:19 +0000 (21:57 +0100)]
Remove collection_thumbnail styling, so collection thumbnails are styled the same as other thumbnails
Sebastian Spaeth [Sat, 15 Dec 2012 20:00:41 +0000 (21:00 +0100)]
Release note 0.3.2 blurb
On MongoDB...
Christopher Allan Webber [Sat, 15 Dec 2012 00:29:00 +0000 (18:29 -0600)]
Adding info to the docs about running dbupdate
Both adding info to run it when adding new media types, and adding
info that you might need to stop mediagoblin before you run these
commands.
Christopher Allan Webber [Fri, 14 Dec 2012 16:49:05 +0000 (10:49 -0600)]
Switching both gettext calls to _() so babel can find/extract them.
Babel looks for _() and gettext() so this is necessary.
Christopher Allan Webber [Fri, 14 Dec 2012 15:28:44 +0000 (09:28 -0600)]
Add comments explaining how translitcodec *is* used
Sebastian Spaeth [Fri, 14 Dec 2012 14:16:49 +0000 (15:16 +0100)]
Add example to the lazy gettext version to make clear when it's appropriate
I needed an example to really get when lazy_gettext would be good...
Sebastian Spaeth [Fri, 14 Dec 2012 11:55:21 +0000 (12:55 +0100)]
Use the correct translation mechanism
We accidentally used the fake translation mechanism here which will not
actually translate anything.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Fri, 14 Dec 2012 09:54:53 +0000 (10:54 +0100)]
Fiy python2.7'ism (#566)
The oauth plugin used timedelta.total_seconds which was introduced
in python 2.7 only. To preserve backwards compatability, we simply
calculate the time difference in seconds manually.
I considered monkeypatching total_seconds to the timedelta object,
but it is a built-in type written in C (I believe) and modifying
attributes failed horribly. Switch this to use total_seconds once we
require python 2.7 as minimum version.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Jef van Schendel [Thu, 13 Dec 2012 22:39:19 +0000 (23:39 +0100)]
Small styling edits to thumbnails
Elrond [Thu, 13 Dec 2012 20:07:16 +0000 (21:07 +0100)]
Make "add media to collection" a normal <img/>
This button used to be a css style <a href=...> </a> (note:
No contents for the <a>). Using this approach has various
drawbacks. Most notably:
- Not clickable in text mode browsers
- Possibly getting marked as a hidden (spam) link
- No alt attribute
So replaced with a real <img/>.
I have no idea what to put in the alt attribute.
Elrond [Thu, 13 Dec 2012 14:29:36 +0000 (15:29 +0100)]
Migrate some fixes from base.html to airy/base.html.
When fixing our templates, we should always take a look at
the other themes and fix those too.
Elrond [Wed, 12 Dec 2012 20:25:17 +0000 (21:25 +0100)]
Do not translate just a variable expansion.
No point in translating <p>{{ var }}</p>. Really.
This does not hurt the string freeze, as it removes a
translateable string. So any translations of this string
are just well ... usefuless afterwards.
Elrond [Mon, 3 Dec 2012 15:36:34 +0000 (16:36 +0100)]
Fix spacing in links to attachment files.
We had """<a href="abc.dat"> abc.dat</a>""" (note the
apace). And this space is being rendered as a link by
browsers. This looks strange, really.
So fix the spacing.
Christopher Allan Webber [Wed, 12 Dec 2012 16:13:56 +0000 (10:13 -0600)]
We don't need to save entries during processing... also adding comments explaining such
Sebastian Spaeth [Wed, 12 Dec 2012 11:29:22 +0000 (12:29 +0100)]
More unicode fixes in the test suite
Pass in unicode not (binary) strings where sqlite expects unicode
values to prevent the test suite from (correctly) complaining about
errors.
I now pass the full suite without any complaints.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>