Delete orphaned uploads

If an upload is incomplete, it takes up space in the upload database and in the assetstore.  For S3 assetstores, these count towards disk usage even if never completed.  Two endpoints were added: system/uploads GET and DELETE which list an discard these partial uploads.  The uploads can be filtered by upload ID, user ID, parent ID, assetstore ID, and minimum age.  They can include untracked uploads (which can occur, for instance, on S3 if you had deleted the assetstore prior to this and then recreated it).

Partial uploads are deleted when an assetstore is deleted.

The web client S3 uploaded is now partially tested.
Can do.  If there are untracked uploads (S3 uploads that we don't have a
record of in our database), they won't get sorted, since they aren't in the
mongoDB.  I'll just tack them to the end observing the limit and offset
parameters.

On Thu, Oct 2, 2014 at 2:32 PM, Zach Mullen <notifications@github.com>
wrote:

> In girder/api/v1/system.py:
>
> > @@ -169,3 +171,66 @@ def unsetSetting(self, params):
> >                 explicitly restore a setting to its default value.""")
> >          .param('key', 'The key identifying the setting to unset.')
> >          .errorResponse('You are not a system administrator.', 403))
> > +
> > +    @access.admin
> > +    def getPartialUploads(self, params):
> > +        uploadList = self.model('upload').list(filters=params, limit=0)
>
> Let's make this have paging parameters like our other list operations, in
> case there are a ton of partial uploads for whatever reason.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/girder/girder/pull/367/files#r18358070>.
>