From 64ef0337246d425b1e6cc48d9a973a6abc69433a Mon Sep 17 00:00:00 2001 From: Paul Franklin Date: Wed, 18 Mar 2015 14:01:13 -0700 Subject: [PATCH] 7155: Support creating directories in various scenarios --- gramps/gui/plug/report/_reportdialog.py | 20 ++++++++++++++------ gramps/plugins/export/exportxml.py | 6 ++++++ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/gramps/gui/plug/report/_reportdialog.py b/gramps/gui/plug/report/_reportdialog.py index 9fc7d54f5..38fbe65b3 100644 --- a/gramps/gui/plug/report/_reportdialog.py +++ b/gramps/gui/plug/report/_reportdialog.py @@ -520,12 +520,20 @@ class ReportDialog(ManagedWindow): # we will need to create the file/dir # need to make sure we can create in the parent dir parent_dir = os.path.dirname(os.path.normpath(self.target_path)) - if not os.access(parent_dir, os.W_OK): - ErrorDialog(_('Permission problem'), - _("You do not have permission to create " - "%s\n\n" - "Please select another path or correct " - "the permissions.") % self.target_path, + if os.path.isdir(parent_dir): + if not os.access(parent_dir, os.W_OK): + ErrorDialog(_('Permission problem'), + _("You do not have permission to create " + "%s\n\n" + "Please select another path or correct " + "the permissions.") % self.target_path, + parent=self.window) + return None + else: + ErrorDialog(_('No directory'), + _('There is no directory %s.\n\n' + 'Please select another directory ' + 'or create it.') % parent_dir, parent=self.window) return None diff --git a/gramps/plugins/export/exportxml.py b/gramps/plugins/export/exportxml.py index 10bff61fc..043540e5d 100644 --- a/gramps/plugins/export/exportxml.py +++ b/gramps/plugins/export/exportxml.py @@ -139,6 +139,12 @@ class GrampsXmlWriter(UpdateCallback): "Please make sure you have write access to the " "directory and try again.")) return 0 + else: + raise DbWriteFailure(_('No directory'), + _('There is no directory %s.\n\n' + 'Please select another directory ' + 'or create it.') % base ) + return 0 if os.path.exists(filename): if not os.access(filename, os.W_OK):