finished working on extended import
[meabook] / controller.py
index 6f897c1..c1fc9d0 100644 (file)
@@ -2,6 +2,7 @@
 Meabook controller class
 """
 
+import shutil
 from meabook.constants import *
 from meabook.caller import PhoneCaller
 from gettext import gettext as _
@@ -130,20 +131,34 @@ class MeabookController:
     def show_import_dialog(self):
         """Shows view IMport Dialog."""
 
-        path = self.view.create_import_dialog()
-        if not path:
+        result = self.view.create_import_dialog()
+        if not result:
             return False
 
-        from meabook.parsers.ldif_parser import MeabookLDIFParser
-        parser = MeabookLDIFParser(open(path), self.model)
-        try:
-            self.view.create_progress_dialog(_('Importing'))
-            #FIXME: implement update_fraction
-            parser.parse()
-            self.config.set_fields(self.model.get_fields())
-            self.config.set_order(self.model.get_fields())
-        except:
-            self.view.create_information_dialog(_('Import error'), \
-                _('Unsupported file format!'))
-        else:
-            return True
+        import_type, path = result
+        if import_type == 'ldif':
+            from meabook.parsers.ldif_parser import MeabookLDIFParser
+            parser = MeabookLDIFParser(open(path), self.model)
+            try:
+                self.view.create_progress_dialog(_('Importing'))
+                #FIXME: implement update_fraction
+                parser.parse()
+            except:
+                self.view.create_information_dialog(_('Import error'), \
+                    _('Unsupported file format!'))
+                return False
+        elif import_type == 'db':
+            self.model.close()
+            try:
+                shutil.copy(path, self.model._path)
+            except:
+                self.model.connect()                
+                self.view.create_information_dialog(_('Import error'), \
+                    _('Unable to copy database file!'))
+                return False
+            else:
+                self.model.connect()                
+        
+        self.config.set_fields(self.model.get_fields())
+        self.config.set_order(self.model.get_fields())
+        return True