← Back to team overview

gtg team mailing list archive

[Merge] lp:~izidor/gtg/small_features into lp:gtg

 

Izidor Matušov has proposed merging lp:~izidor/gtg/small_features into lp:gtg.

Requested reviews:
  Gtg developers (gtg)
Related bugs:
  Bug #993920 in Getting Things GNOME!: "Save backups into backup/ folder"
  https://bugs.launchpad.net/gtg/+bug/993920
  Bug #996236 in Getting Things GNOME!: "Search filter is not deleted on emtpy search string if tag_pane is closed"
  https://bugs.launchpad.net/gtg/+bug/996236

For more details, see:
https://code.launchpad.net/~izidor/gtg/small_features/+merge/119281

Two small features which could still make it to GTG 0.3 :)
-- 
https://code.launchpad.net/~izidor/gtg/small_features/+merge/119281
Your team Gtg developers is requested to review the proposed merge of lp:~izidor/gtg/small_features into lp:gtg.
=== modified file 'AUTHORS'
--- AUTHORS	2012-08-08 18:15:53 +0000
+++ AUTHORS	2012-08-12 23:07:21 +0000
@@ -108,3 +108,4 @@
 * Nicolas Maître <nimai@xxxxxxxxx>
 * Abhiram <abhiram.ampabathina@xxxxxxxxx>
 * Alan Gomes <alangalvino@xxxxxxxxx>
+* Stefan Handschuh <https://launchpad.net/~handschuh> (no email provided)

=== modified file 'CHANGELOG'
--- CHANGELOG	2012-08-12 21:17:10 +0000
+++ CHANGELOG	2012-08-12 23:07:21 +0000
@@ -45,6 +45,8 @@
     * Re-enabled support for gtg:// URI
     * Fix for bug #1026400: script_pocketmod doesn't have execute permission
     * Fix for bug #1027817: Export plugin: changing output format moves widgets up and down
+    * Save backups into backup/ folder, creates backups of tags.xml closes #993920
+    * Search filter is deleted on empty search if tag_pane is closed, by Stefan Handschuh, closes #996236
 
 2012-02-13 Getting Things GNOME! 0.2.9
     * Big refractorization of code, now using liblarch

=== modified file 'GTG/core/datastore.py'
--- GTG/core/datastore.py	2012-07-26 17:47:06 +0000
+++ GTG/core/datastore.py	2012-08-12 23:07:21 +0000
@@ -269,7 +269,7 @@
             xmlroot.appendChild(t_xml)
             already_saved.append(tagname)
 
-        cleanxml.savexml(self.tagfile, doc)
+        cleanxml.savexml(self.tagfile, doc, backup=True)
 
     ##########################################################################
     ### Tasks functions

=== modified file 'GTG/gtk/browser/browser.py'
--- GTG/gtk/browser/browser.py	2012-07-13 17:24:28 +0000
+++ GTG/gtk/browser/browser.py	2012-08-12 23:07:21 +0000
@@ -1541,7 +1541,19 @@
         self.search_actions = []
         new_actions = []
         query = self.quickadd_entry.get_text()
-        query=query.strip()
+        query = query.strip()
+
+        # If the tag pane is hidden, reset search filter when query is empty
+        if query == '' and not self.config.get("tag_pane"):
+            tree = self.req.get_tasks_tree(refresh=False)
+            filters = tree.list_applied_filters()
+            for tag_id in self.req.get_all_tags():
+                tag = self.req.get_tag(tag_id)
+                if tag.is_search_tag() and tag_id in filters:
+                    self.req.remove_tag(tag_id)
+                    self.apply_filter_on_panes(CoreConfig.ALLTASKS_TAG)
+                    return
+
         if query:
             if self.req.get_task_id(query) is not None:
                 new_actions.append('open')

=== modified file 'GTG/tools/cleanxml.py'
--- GTG/tools/cleanxml.py	2012-05-23 08:55:31 +0000
+++ GTG/tools/cleanxml.py	2012-08-12 23:07:21 +0000
@@ -94,6 +94,12 @@
     return doc, xmlproject
 
 
+def _get_backup_name(zefile):
+    """ Get name of backups which are in backup/ directory """
+    dirname, filename = os.path.split(zefile)
+    return os.path.join(dirname, 'backup', filename)
+
+
 def openxmlfile(zefile, root):
     """ Open an XML file in a robust way
 
@@ -115,7 +121,7 @@
             return _try_openxmlfile(zefile, root)
         else:
             # Creating empty file
-            doc,xmlproject = emptydoc(root)
+            doc, xmlproject = emptydoc(root)
             newfile = savexml(zefile, doc)
             if not newfile:
                 Log.error("Could not create a new file %s" % zefile)
@@ -139,8 +145,9 @@
                 Log.warning('Failed with reason: %s' % msg)
 
         # Try to revert to backup
+        backup_name = _get_backup_name(zefile)
         for i in range(BACKUP_NBR):
-            backup_file = "%s.bak.%d" % (zefile, i)
+            backup_file = "%s.bak.%d" % (backup_name, i)
             if os.path.exists(backup_file):
                 Log.info("Trying to restore backup file %s" % backup_file)
                 try:
@@ -158,11 +165,22 @@
     rootproject = doc.createElement(root)
     doc.appendChild(rootproject)
     return doc, rootproject
-    
+
 #write a XML doc to a file
 def savexml(zefile,doc,backup=False):
 #    print "writing %s file" %(zefile)
     tmpfile = zefile+'__'
+    backup_name = _get_backup_name(zefile)
+
+    # Create backup directory
+    backup_dir = os.path.dirname(backup_name)
+    if not os.path.exists(backup_dir):
+        try:
+            os.makedirs(backup_dir)
+        except IOError as error:
+            print "Error while creating backup/ directory:", msg
+            return False
+
     try:
         if os.path.exists(zefile):
             os.rename(zefile, tmpfile)
@@ -185,17 +203,18 @@
                 #We keep BACKUP_NBR versions of the file
                 #The 0 is the youngest one
                 while backup_nbr > 0 :
-                    older = "%s.bak.%s" %(zefile,backup_nbr)
+                    older = "%s.bak.%s" % (backup_name, backup_nbr)
                     backup_nbr -= 1
-                    newer = "%s.bak.%s" %(zefile,backup_nbr)
+                    newer = "%s.bak.%s" % (backup_name, backup_nbr)
                     if os.path.exists(newer) :
                         shutil.move(newer,older)
                 #The bak.0 is always a fresh copy of the closed file
                 #So that it's not touched in case of bad opening next time
-                current = "%s.bak.0" %(zefile)
+                current = "%s.bak.0" % backup_name
                 shutil.copy(zefile,current)
 
-                daily_backup = "%s.%s.bak" % (zefile, datetime.date.today().strftime("%Y-%m-%d"))
+                daily_backup = "%s.%s.bak" % (backup_name,
+                        datetime.date.today().strftime("%Y-%m-%d"))
                 if not os.path.exists(daily_backup):
                     shutil.copy(zefile, daily_backup)
             return True