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.
