Hi Andy, thanks for posting on the forum about this... I added the S3 
bucket info to the documentation, but didn't think to test deleting files 
from it.  After trying it out a little bit ago, I got the same result as 
you did.  What is happening is that the db resource is deleted, but Django 
hits an error while trying to delete the actual file on S3 (that's why the 
redirect didn't work).  You'll see that the files you were trying to delete 
still exist in your bucket.

I was able to fix it up, drawing mainly from this question 
<http://stackoverflow.com/questions/5372934/how-do-i-get-django-admin-to-delete-files-when-i-remove-an-object-from-the-datab>
 (see 
the second answer, and the comments).  It will be easy for you to do in 
this one case, but will require some more info in the documentation, and 
ultimately a modification in the arches code to accommodate S3 storage.

For now, *carefully* head into your virtual environment, and open up this 
file: /ENV/lib/python2.7/site-packages/arches/app/models/models.py.  Around 
line 433 is a function called auto_delete_file_on_delete.  In that 
function, you'll see a line that says "if 
os.path.isfile(instance.val.path):"  That line is causing a server error, 
because instance.val doesn't have a path property when you use S3 storage 
(it has a url property).  
To make the fix, replace the contents of the function with this:

    if instance.val:
        try:
            if os.path.isfile(instance.val.path):
                os.remove(instance.val.path)
        except:
            storage, name = instance.val.storage, instance.val.name
            storage.delete(name)

Now if you revert to local storage it'll still try the old method, but when 
it comes across an error it will use the new code that is necessary for 
dealing with S3.

This is really a hack, not a fix, so be sure to back up the models.py file 
before you make these changes.  Also, if you are using a text editor like 
notepad++, be sure that you are using spaces (not tabs) to make the correct 
indentation.

Good luck and let us know how it goes!
Adam

On Wednesday, October 21, 2015 at 3:38:32 PM UTC-5, Andy Graham wrote:
>
> Hello All,
> A question about an error I am getting trying to delete Media resources on 
> S3.  When I delete the resource via the Resource Manager (Delete Resource 
> in the left side tool bar) I get the message that states "You won't be able 
> to undo this operation!", then I click on the Delete button and nothing 
> happens, however, if I go back to the Map or Search the resource has been 
> deleted.
>
> Using the developer tools for the browser I have traced the error back to 
> the delete-resource.js in the arches/app/media/js/views/forms  folder.
>
> Specifically:
>
>         deleteResource: function() {
>             $.ajax({
>                 method: 'DELETE',
>                 url: '',
>                 success: function() {
>                     location.href = arches.urls.home;
>                 }
>             });
>
> The error seems to be taking place at the url:, which isn't populated. 
>  Does anyone have suggestions for the proper way to reference the S3 bucket 
> here, and if there are any specific permissions that need to be set to 
> allow deleting files from S3?  Any help is appreciated, thanks.
>
> Andy
>

-- 
-- To post, send email to [email protected]. To unsubscribe, send 
email to [email protected]. For more information, 
visit https://groups.google.com/d/forum/archesproject?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Arches Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to