mediagoblin.git
10 years agoImport mock from unittest if on py3
Christopher Allan Webber [Tue, 16 Sep 2014 19:26:40 +0000 (14:26 -0500)]
Import mock from unittest if on py3

10 years agoMerge branch 'master' into merge-python3-port
Christopher Allan Webber [Tue, 16 Sep 2014 19:01:43 +0000 (14:01 -0500)]
Merge branch 'master' into merge-python3-port

Has some issues, will iteratively fix!

Conflicts:
mediagoblin/gmg_commands/__init__.py
mediagoblin/gmg_commands/deletemedia.py
mediagoblin/gmg_commands/users.py
mediagoblin/oauth/views.py
mediagoblin/plugins/api/views.py
mediagoblin/tests/test_api.py
mediagoblin/tests/test_edit.py
mediagoblin/tests/test_oauth1.py
mediagoblin/tests/test_util.py
mediagoblin/tools/mail.py
mediagoblin/webfinger/views.py
setup.py

10 years agoTemporarily disabling the mediagoblin errors middleware
Christopher Allan Webber [Mon, 15 Sep 2014 19:26:57 +0000 (14:26 -0500)]
Temporarily disabling the mediagoblin errors middleware

We don't have paste (core) in py3, so....

10 years agoNo reason to wrap the rest of the options in a quote
Christopher Allan Webber [Mon, 15 Sep 2014 17:10:29 +0000 (12:10 -0500)]
No reason to wrap the rest of the options in a quote

This commit sponsored by Thane Williams.  Thank you!

10 years agoUpgrading gunicorn. Referenced issue is resolved.
Christopher Allan Webber [Mon, 15 Sep 2014 16:46:56 +0000 (11:46 -0500)]
Upgrading gunicorn.  Referenced issue is resolved.

Also, upgrading seems to fix weird
"RuntimeError: dictionary changed size during iteration" issues
I was seeing.  (Looked like a gunicorn issue, not ours.)

10 years agopy2.7 compatibility with open(..., encoding="utf-8"), use io.open
Christopher Allan Webber [Fri, 12 Sep 2014 17:29:12 +0000 (12:29 -0500)]
py2.7 compatibility with open(..., encoding="utf-8"), use io.open

This commit sponsored by Peter Baumgarten.  Thank you!

10 years agoExplicitly open READMEFILE as utf-8
Christopher Allan Webber [Fri, 12 Sep 2014 15:42:23 +0000 (10:42 -0500)]
Explicitly open READMEFILE as utf-8

10 years agoFix unicode error in pdf media type
Christopher Allan Webber [Fri, 12 Sep 2014 14:30:46 +0000 (09:30 -0500)]
Fix unicode error in pdf media type

(we're checking against bytestrings, so make that explicit)

10 years agoSet up tox.ini to run more properly:
Christopher Allan Webber [Thu, 11 Sep 2014 20:34:19 +0000 (15:34 -0500)]
Set up tox.ini to run more properly:

 - Don't run dbupdate... the tests themselves do this, and we might
   mess up someone's db
 - We shouldn't run setup.py develop because that installs a new
   *live* db... the tests do isolation, so...
 - Install the package's dependencies by the package itself... it
   seems that removing "skipsdist = True" fixes this
 - Run py.test manually rather than use runtests.sh (which itself uses
   ./bin/py.test if it can)

10 years agoRaw image mediatype had a non-unicode logging call
Odin Hørthe Omdal [Sun, 3 Aug 2014 16:07:28 +0000 (18:07 +0200)]
Raw image mediatype had a non-unicode logging call

Was causing UnicodeDecodeError when file/folder was not ascii.
Fixes bug #935.

10 years agoAdd __repr__ for Collection and CollectionItem
Odin Hørthe Omdal [Sun, 7 Sep 2014 10:56:13 +0000 (12:56 +0200)]
Add __repr__ for Collection and CollectionItem

10 years agoSlight tweak to the description wording
Christopher Allan Webber [Sun, 7 Sep 2014 14:39:01 +0000 (09:39 -0500)]
Slight tweak to the description wording

10 years agoUpdate setup.py
Low Kian Seong [Mon, 25 Aug 2014 23:06:01 +0000 (07:06 +0800)]
Update setup.py

A `description` is needed so that project is not listed as `UNKNOWN` on `pypi`

10 years agoHandle cr2 files through the raw_image media type
Christopher Allan Webber [Sat, 6 Sep 2014 15:56:27 +0000 (10:56 -0500)]
Handle cr2 files through the raw_image media type

This commit sponsored by Jim Campbell.  Hey, I know that guy!  Thanks
Jim! :)

10 years agoFixes navbar for sandyseventiesspeedboat
Jessica Tallon [Fri, 5 Sep 2014 15:00:06 +0000 (16:00 +0100)]
Fixes navbar for sandyseventiesspeedboat

10 years agonow in the 0.7.1.dev cycle
Christopher Allan Webber [Wed, 27 Aug 2014 18:28:51 +0000 (13:28 -0500)]
now in the 0.7.1.dev cycle

10 years agoCorrecting, host-meta not webfinger.
Christopher Allan Webber [Wed, 27 Aug 2014 17:27:04 +0000 (12:27 -0500)]
Correcting, host-meta not webfinger.

10 years agoRun the following to fix the missing git submodule init step
Christopher Allan Webber [Wed, 27 Aug 2014 17:26:23 +0000 (12:26 -0500)]
Run the following to fix the missing git submodule init step

10 years agoAlso add git submodule init to the release docs
Christopher Allan Webber [Tue, 26 Aug 2014 17:31:29 +0000 (12:31 -0500)]
Also add git submodule init to the release docs

10 years agoAt version 0.7.0, at last!
Christopher Allan Webber [Mon, 25 Aug 2014 20:31:55 +0000 (15:31 -0500)]
At version 0.7.0, at last!

10 years agoCommitting extracted and compiled translations
Christopher Allan Webber [Mon, 25 Aug 2014 19:44:41 +0000 (14:44 -0500)]
Committing extracted and compiled translations

10 years agoCommitting present MediaGoblin translations before pushing extracted messages
Christopher Allan Webber [Mon, 25 Aug 2014 19:44:17 +0000 (14:44 -0500)]
Committing present MediaGoblin translations before pushing extracted messages

10 years agoUpdating release notes.
Christopher Allan Webber [Mon, 25 Aug 2014 16:43:17 +0000 (11:43 -0500)]
Updating release notes.

10 years agonot yet, anyway.
Christopher Allan Webber [Fri, 22 Aug 2014 21:21:48 +0000 (16:21 -0500)]
not yet, anyway.

10 years agoBlog media type doc
Christopher Allan Webber [Fri, 22 Aug 2014 21:13:09 +0000 (16:13 -0500)]
Blog media type doc

10 years agoupdating ayleph to Andrew Browning
Christopher Allan Webber [Fri, 22 Aug 2014 20:01:23 +0000 (15:01 -0500)]
updating ayleph to Andrew Browning

10 years agoUpdating the AUTHORS file for this release
Christopher Allan Webber [Fri, 22 Aug 2014 19:58:22 +0000 (14:58 -0500)]
Updating the AUTHORS file for this release

10 years agoeek, should be python2 not python22
Christopher Allan Webber [Fri, 22 Aug 2014 14:54:55 +0000 (09:54 -0500)]
eek, should be python2 not python22

10 years agoMake blog_post_listing easier to read
Jessica Tallon [Tue, 19 Aug 2014 13:03:53 +0000 (14:03 +0100)]
Make blog_post_listing easier to read

This is Elronds change on #948. As 'blog_slug' is always
set in request.matchdict there is no need to do a default-none
get on the dictionary. This change just makes it easier to read.

10 years agoList blogs by URL user rather than request user
ayleph [Sat, 16 Aug 2014 17:45:58 +0000 (10:45 -0700)]
List blogs by URL user rather than request user

The blog_post_listing function in mediagoblin/media_types/blow/views.py
attempts to access blogs based on the requesting user rather than the url
user. This results in server errors when an unauthenticated user attempts to
follow a link from another user's blog post listing, and 404 errors when an
authenticated user attempts to follow a link from another user's blog post
listing.

This change bases blog post listings on the URL user rather than the request
user.

10 years agoAdd docs on collection_add_media hook.
Elrond [Mon, 18 Aug 2014 22:56:37 +0000 (00:56 +0200)]
Add docs on collection_add_media hook.

10 years agoStart for documenting core hooks.
Elrond [Mon, 18 Aug 2014 22:39:33 +0000 (00:39 +0200)]
Start for documenting core hooks.

This is basicly a start by Chris Webber, I'm just commiting
it for him.

10 years agoAdd new hook 'collection_add_media'
Odin Hørthe Omdal [Sun, 17 Aug 2014 20:22:00 +0000 (22:22 +0200)]
Add new hook 'collection_add_media'

10 years agoTidy up federation code and add tests to cover more of the APIs
Jessica Tallon [Tue, 5 Aug 2014 21:04:50 +0000 (22:04 +0100)]
Tidy up federation code and add tests to cover more of the APIs

10 years agoUse oauthlib's safe characters when generating client_key and client_secret
Jessica Tallon [Tue, 5 Aug 2014 20:41:31 +0000 (21:41 +0100)]
Use oauthlib's safe characters when generating client_key and client_secret

10 years agoFix a python2.6 compatibility issue. Removing a dict comprehension.
Christopher Allan Webber [Mon, 18 Aug 2014 15:40:08 +0000 (10:40 -0500)]
Fix a python2.6 compatibility issue.  Removing a dict comprehension.

This commit sponsored by Christopher Beppler.  Thanks!

10 years agoAlways remove the session when running check_db_up_to_date()
Christopher Allan Webber [Fri, 15 Aug 2014 21:23:15 +0000 (16:23 -0500)]
Always remove the session when running check_db_up_to_date()

This commit sponsored by Francois Marier.  Thank you!

10 years agoImplement ServeCommand.{loadserver, loadapp}.
Berker Peksag [Fri, 15 Aug 2014 20:07:35 +0000 (23:07 +0300)]
Implement ServeCommand.{loadserver, loadapp}.

This is partly port from PasteScript.

10 years agoAdd an initial "gmg serve" implementation.
Berker Peksag [Fri, 15 Aug 2014 20:02:22 +0000 (23:02 +0300)]
Add an initial "gmg serve" implementation.

The CLI is similar to "paster serve".

10 years agoRestore different server options.
Berker Peksag [Fri, 15 Aug 2014 19:35:22 +0000 (22:35 +0300)]
Restore different server options.

10 years agoImprove mediagoblin._compat.py2_unicode.
Berker Peksag [Fri, 15 Aug 2014 15:57:48 +0000 (18:57 +0300)]
Improve mediagoblin._compat.py2_unicode.

- Encode obj.__repr__() to bytestring if its type is unicode in Python 2.
- Add internal encode_to_utf8() decorator.
- Do not raise an exception if a class does not have an __str__() method,
  just warn.

10 years agoMove the AlembicMigrationManager to top of the module.
Berker Peksag [Fri, 15 Aug 2014 12:40:35 +0000 (15:40 +0300)]
Move the AlembicMigrationManager to top of the module.

Also, add a simple docstring.

10 years agoProvide a better manager API for Alembic.
Berker Peksag [Fri, 15 Aug 2014 12:39:45 +0000 (15:39 +0300)]
Provide a better manager API for Alembic.

10 years agoAdd initial Alembic migrations.
Berker Peksag [Wed, 13 Aug 2014 16:30:23 +0000 (19:30 +0300)]
Add initial Alembic migrations.

10 years agoFix dict.keys() in Python 3.
Berker Peksag [Wed, 13 Aug 2014 16:27:49 +0000 (19:27 +0300)]
Fix dict.keys() in Python 3.

10 years agoFix a comment.
Berker Peksag [Wed, 13 Aug 2014 16:27:23 +0000 (19:27 +0300)]
Fix a comment.

10 years agoForgot to add starttls_config.ini
Jessica Tallon [Tue, 12 Aug 2014 20:47:23 +0000 (21:47 +0100)]
Forgot to add starttls_config.ini

10 years agoFix #861 - Add unit test and documentation for email_smtp_force_starttls
Jessica Tallon [Tue, 12 Aug 2014 15:56:08 +0000 (16:56 +0100)]
Fix #861 - Add unit test and documentation for email_smtp_force_starttls

10 years agoElrond keeps pointing out places I should "is not None" at :)
Christopher Allan Webber [Fri, 8 Aug 2014 18:24:59 +0000 (13:24 -0500)]
Elrond keeps pointing out places I should "is not None" at :)

10 years agoOkay, we don't know that indexes are falsey, so let's make it clearer. Yeek!
Christopher Allan Webber [Fri, 8 Aug 2014 18:18:57 +0000 (13:18 -0500)]
Okay, we don't know that indexes are falsey, so let's make it clearer.  Yeek!

10 years agothis negation needs parens.
Christopher Allan Webber [Fri, 8 Aug 2014 18:12:33 +0000 (13:12 -0500)]
this negation needs parens.

10 years agoPull the indexes out of the dictionary directly
Christopher Allan Webber [Fri, 8 Aug 2014 16:39:44 +0000 (11:39 -0500)]
Pull the indexes out of the dictionary directly

Instead of checking for their keys and pulling them out later, that is.

10 years agoIf the constraint already exists, roll back to a sane state.
Christopher Allan Webber [Fri, 8 Aug 2014 14:50:16 +0000 (09:50 -0500)]
If the constraint already exists, roll back to a sane state.

10 years agoExplaining why we're committing mid-migration
Christopher Allan Webber [Fri, 8 Aug 2014 14:47:33 +0000 (09:47 -0500)]
Explaining why we're committing mid-migration

10 years agoOnly add the constraint if we need to. Catch an exception if we don't.
Christopher Allan Webber [Thu, 7 Aug 2014 21:29:45 +0000 (16:29 -0500)]
Only add the constraint if we need to.  Catch an exception if we don't.

Also, updating the comment about sqlite being crazy :)

10 years agoDocument both migrations, comment out old migration
Christopher Allan Webber [Thu, 7 Aug 2014 19:45:08 +0000 (14:45 -0500)]
Document both migrations, comment out old migration

10 years agoAdd a new migration which removes/fixes the old migration
Christopher Allan Webber [Thu, 7 Aug 2014 18:24:07 +0000 (13:24 -0500)]
Add a new migration which removes/fixes the old migration

The previous migration, as it turns out, was not needed, and there
were many inconsistencies put in place by adding it.  See issue #920.

This commit sponsored by Gergő Tisza.  Thank you!

10 years agoUpdate TODOs in setup.py.
Berker Peksag [Thu, 7 Aug 2014 10:12:38 +0000 (13:12 +0300)]
Update TODOs in setup.py.

10 years agoFix another tests.
Berker Peksag [Thu, 7 Aug 2014 10:08:42 +0000 (13:08 +0300)]
Fix another tests.

(forgot to commit earlier)

10 years agoCommitting extracted and compiled translations
Christopher Allan Webber [Mon, 4 Aug 2014 18:46:24 +0000 (13:46 -0500)]
Committing extracted and compiled translations

10 years agoCommitting present MediaGoblin translations before pushing extracted messages
Christopher Allan Webber [Mon, 4 Aug 2014 18:45:15 +0000 (13:45 -0500)]
Committing present MediaGoblin translations before pushing extracted messages

10 years agombox_message.get_payload() returns bytestring.
Berker Peksag [Mon, 4 Aug 2014 19:08:23 +0000 (22:08 +0300)]
mbox_message.get_payload() returns bytestring.

10 years agoMake sort_keys True to avoid hash randomize feature in Python 3.
Berker Peksag [Mon, 4 Aug 2014 19:06:40 +0000 (22:06 +0300)]
Make sort_keys True to avoid hash randomize feature in Python 3.

10 years agoAdd more security checks when updating objects and tests
Jessica Tallon [Fri, 1 Aug 2014 21:26:12 +0000 (22:26 +0100)]
Add more security checks when updating objects and tests

10 years agoAdding Pump API stuff to the docs index.
Christopher Allan Webber [Mon, 4 Aug 2014 16:55:05 +0000 (11:55 -0500)]
Adding Pump API stuff to the docs index.

This commit sponsored by Joel Luellwitz.  Thanks!

10 years agoSet up virtualenv to use py2
Christopher Allan Webber [Sun, 3 Aug 2014 19:09:31 +0000 (14:09 -0500)]
Set up virtualenv to use py2

This commit sponsored by Jonas Öberg.  Thanks Jonas!

10 years agoUse the STARTTLS command to upgrade SMTP connections where possible.
Matt Molyneaux [Mon, 24 Mar 2014 15:00:19 +0000 (15:00 +0000)]
Use the STARTTLS command to upgrade SMTP connections where possible.

Adds the option `email_smtp_force_tls` which will cause `send_email` to error
if it is unable to use the `STARTTLS` command (e.g. where the user knows the
SMTPd supports `STARTTLS` and wishes to protect themselves against a downgrade
attack)

Setting both `email_smtp_user_ssl` and `email_smtp_force_tls` may result in
undefined behaviour if the SMTPd has not been correctly configured.

TODO: Unit tests?
TODO: Documentation?

10 years agoUpdated video thumbnail pipeline to use decodebin2
ayleph [Sat, 2 Aug 2014 03:15:55 +0000 (20:15 -0700)]
Updated video thumbnail pipeline to use decodebin2

The video thumbnailer uses decodebin to automatically detect the file type in the thumbnail pipeline. However, decodebin does not properly demux theora streams, which causes the thumbnailer to fail for .ogv files. decodebin2 properly demuxes the theora stream and successfully creates thumbnails for .ogv files.

10 years agoFix some security concerns regrding inpersonation in federation code.
Jessica Tallon [Thu, 31 Jul 2014 19:33:04 +0000 (20:33 +0100)]
Fix some security concerns regrding inpersonation in federation code.

10 years agoFix #927 - Clean up federation code after Elrond's review
Jessica Tallon [Mon, 28 Jul 2014 22:36:39 +0000 (23:36 +0100)]
Fix #927 - Clean up federation code after Elrond's review

- Add json_error and use inplace of json_response where appropriate.
- Add garbage_collection to config spec file.
- Fix bugs in both garbage collection task and test
- Handle /api/whoami when no user logged in and a test for such a case.
- Validate ID is correct and user has comment privilege to comment.

10 years agoMake chown more generic.
Elrond [Wed, 30 Jul 2014 17:51:23 +0000 (19:51 +0200)]
Make chown more generic.

Some distributions (ubuntu 14.04 maybe?) don't create a
group for a new user.  So change the "chown" to use the
primary group of the user instead of forcing the group.
This should do the right thing in more cases.

Old: chown mediagoblin:mediagoblin
New: chown mediagoblin:

10 years agoFix #923 - add allow_admin to user_has_privilege decorator
Jessica Tallon [Fri, 25 Jul 2014 17:58:57 +0000 (18:58 +0100)]
Fix #923 - add allow_admin to user_has_privilege decorator

10 years agoAvoid "lego translations" on the nothing currently featured strings
Christopher Allan Webber [Tue, 29 Jul 2014 18:38:59 +0000 (13:38 -0500)]
Avoid "lego translations" on the nothing currently featured strings

This commit sponsored by Vinzenz Vietzke.  Thank you!

10 years agoCommitting extracted and compiled translations
Christopher Allan Webber [Tue, 29 Jul 2014 16:02:42 +0000 (11:02 -0500)]
Committing extracted and compiled translations

10 years agoCommitting present MediaGoblin translations before pushing extracted messages
Christopher Allan Webber [Tue, 29 Jul 2014 16:01:36 +0000 (11:01 -0500)]
Committing present MediaGoblin translations before pushing extracted messages

10 years agoMake translatable table columns titles in media processing panel
Laura Arjona Reina [Sat, 26 Jul 2014 00:54:56 +0000 (02:54 +0200)]
Make translatable table columns titles in media processing panel

10 years agoMake translatable takeaway privileges actions
Laura Arjona Reina [Fri, 25 Jul 2014 22:50:39 +0000 (00:50 +0200)]
Make translatable takeaway privileges actions

10 years agoMake translatable the titles of TextAreas in moderation form
Laura Arjona Reina [Fri, 25 Jul 2014 22:30:08 +0000 (00:30 +0200)]
Make translatable the titles of TextAreas in moderation form

10 years agoMake translatable 'Feature' button in the explanation about how to feature media.
Laura Arjona Reina [Fri, 25 Jul 2014 21:30:23 +0000 (23:30 +0200)]
Make translatable 'Feature' button in the explanation about how to feature media.

10 years agoMake consistent quotation marks when referring to button labels
Laura Arjona Reina [Fri, 25 Jul 2014 19:16:14 +0000 (21:16 +0200)]
Make consistent quotation marks when referring to button labels

10 years agoMake translatable some strings that weren't i18n'ed
Laura Arjona Reina [Thu, 24 Jul 2014 17:09:28 +0000 (19:09 +0200)]
Make translatable some strings that weren't i18n'ed

10 years agoUse isinstance and six.text_type to check types of an object.
Berker Peksag [Mon, 28 Jul 2014 12:26:13 +0000 (15:26 +0300)]
Use isinstance and six.text_type to check types of an object.

10 years agoFix urlparse import.
Berker Peksag [Mon, 28 Jul 2014 12:25:20 +0000 (15:25 +0300)]
Fix urlparse import.

10 years agoDisable cache support of LazyProxy.
Berker Peksag [Mon, 28 Jul 2014 12:24:49 +0000 (15:24 +0300)]
Disable cache support of LazyProxy.

Since Babel 1.0, there's a enable_cache keyword argument of LazyProxy,
but we can't pass it directly.

10 years agoUpdate .gitignore.
Berker Peksag [Mon, 28 Jul 2014 10:29:26 +0000 (13:29 +0300)]
Update .gitignore.

10 years agoCleanup mediagoblin._compat and fix translation tests.
Berker Peksag [Mon, 28 Jul 2014 10:27:19 +0000 (13:27 +0300)]
Cleanup mediagoblin._compat and fix translation tests.

10 years agoUpdate dependency list.
Berker Peksag [Mon, 28 Jul 2014 10:24:17 +0000 (13:24 +0300)]
Update dependency list.

10 years agoSkip test_sql_migrations on Python 3 for now.
Berker Peksag [Mon, 28 Jul 2014 10:22:42 +0000 (13:22 +0300)]
Skip test_sql_migrations on Python 3 for now.

10 years agoRemove an usage of deprecated cgi.parse_qs().
Berker Peksag [Mon, 28 Jul 2014 09:54:59 +0000 (12:54 +0300)]
Remove an usage of deprecated cgi.parse_qs().

10 years agofunc_name removed in Python 3.
Berker Peksag [Mon, 28 Jul 2014 07:35:14 +0000 (10:35 +0300)]
func_name removed in Python 3.

10 years agoRemove the option about whether or not spectrograms are created. They always are.
Christopher Allan Webber [Fri, 25 Jul 2014 21:02:28 +0000 (16:02 -0500)]
Remove the option about whether or not spectrograms are created.  They always are.

This commit sponsored by Emily O'Leary.  Thanks, Emily!

10 years agoAdd __unicode__ representation to Notification and MediaCommentMixin
Tryggvi Bjorgvinsson [Sat, 19 Jul 2014 12:35:50 +0000 (12:35 +0000)]
Add __unicode__ representation to Notification and MediaCommentMixin

Instead of having __repr__ return a unicode object which it should
not do, we use the __unicode__ method to allow use of Notification
and MediaCommentMixin objects in unicode strings.

10 years agoAdding thallian to the authors list
Christopher Allan Webber [Thu, 24 Jul 2014 17:15:12 +0000 (12:15 -0500)]
Adding thallian to the authors list

10 years agoFix by thallian: use correct datetime.strptime
Christopher Allan Webber [Thu, 24 Jul 2014 17:09:17 +0000 (12:09 -0500)]
Fix by thallian: use correct datetime.strptime

datetime.dateime already imported, so....

10 years agoMerge branch 'Federation'
Jessica Tallon [Tue, 22 Jul 2014 23:23:23 +0000 (00:23 +0100)]
Merge branch 'Federation'

10 years agoSwitch from slug to ID and clean up style to conform to PEP-8
Jessica Tallon [Mon, 21 Jul 2014 17:32:47 +0000 (18:32 +0100)]
Switch from slug to ID and clean up style to conform to PEP-8

10 years agoCreate test for garbage collection
Jessica Tallon [Thu, 17 Jul 2014 10:39:24 +0000 (11:39 +0100)]
Create test for garbage collection

10 years agoAdd unseralize for API objects
Jessica Tallon [Wed, 16 Jul 2014 16:59:03 +0000 (17:59 +0100)]
Add unseralize for API objects

10 years agoAdd garbage collection task
Jessica Tallon [Tue, 15 Jul 2014 20:24:25 +0000 (21:24 +0100)]
Add garbage collection task

10 years agooops - add decorators for federated APIs
Jessica Tallon [Sat, 12 Jul 2014 08:15:16 +0000 (09:15 +0100)]
oops - add decorators for federated APIs