Commits

Marcin Kasperski committed 6e1901f

Updated context parsing

Comments (0)

Files changed (1)

src/mekk/nozbe2xmind/xmind_reader.py

 from context_icons import IconsMapper
 import simplejson
 import logging
+import datetime
+import re
+
 log = logging.getLogger(__name__)
 
 def find_mismatches(old, new, checked_tags):
         zwróconym przez check_projects). Przed zapisem trzeba
         project_id zamienić na project_hash.
 
-        Ponadto nowe
-        akcje zawierają pewne unikalne id.
+        Ponadto nowe akcje zawierają pewne unikalne id.
         """
         orig_lkp = dict([ (p['hash'], p) for p in self.orig_actions ])
 
-        icon_map = IconsMapper()
-        # Mapowanie kodów markerów na hasze kontekstów
-        ctx_marker_to_hash = {}
-        for ctx in self.orig_contexts:
-            hash = ctx['hash']
-            icon = ctx['icon']
-            if icon and hash:
-                # TODO: obsłużyć w id_for_icon samo id
-                marker = icon_map.id_for_icon("icon-%s.png" % icon)
-                if marker:
-                    ctx_marker_to_hash[marker] = hash
+        ctx_name_to_obj = dict(
+            (ctx['name'], ctx) for ctx in self.orig_contexts)
 
         # Lista nowych akcji. Nie zwracamy od razu, bo chcemy zrobić
         # dopasowanie z skasowanymi (wykrywanie cut&paste)
             # Tablica jeszcze nie obsłużonych akcji. Trzymamy
             # tak, bo trzeba włazić rekurencyjnie w głąb
 
-            import datetime
             now_time = datetime.datetime.now().strftime("%Y-%m-%d %T")
 
             pending = list( project_topic.get_subtopics() )
                 else:
                     new["done"] = False
 
-                for mark in markers:
-                    if not mark in [DONE_MARK, NEXT_ACTION_MARK]:
-                        h = ctx_marker_to_hash.get(mark)
-                        if h:
-                            new["context_hash"] = h
-                            break
+                action_labels = [ l 
+                                  for l in re.split("\s*,\s*",
+                                                    action_topic.get_label() or "")
+                                  if l ]
+                for ctx_name in action_labels:
+                    ctx = ctx_name_to_obj.get(ctx_name)
+                    if ctx:
+                        new["context_hash"] = ctx['hash']
+                    else:
+                        print "Unknown context, skipping:", ctx_name
 
                 if not hash:
                     # Nowa akcja