X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=controller.py;h=aafbc9dfa76239db3e75c6d8f7ccf487b07da4f7;hb=HEAD;hp=9397daf7fa3cd3f947c3eadd04950bd90e5ab0e2;hpb=3ad1b9aa9e5af7ee5e439d8018ce3c7f36d796b5;p=meabook diff --git a/controller.py b/controller.py index 9397daf..aafbc9d 100644 --- a/controller.py +++ b/controller.py @@ -3,8 +3,8 @@ Meabook controller class """ from meabook.constants import * -from meabook.caller import PhoneCaller from gettext import gettext as _ +from meabook.caller import PhoneCaller class MeabookController: @@ -30,8 +30,9 @@ class MeabookController: """Gets from model items with selected level.""" folders_list = list(self.get_all_folders(parent)) - files_list = [(fields['cn'], internal_name, 'f') for internal_name, \ - fields in self.model._get_files(['cn'], parent).items()] + files_list = [(fields[FIELD_LOWLEVEL], internal_name, TYPE_FILE) for \ + internal_name, fields in self.model.get_files([FIELD_LOWLEVEL], \ + parent).items()] return folders_list + files_list def get_item(self, _id): @@ -48,41 +49,41 @@ class MeabookController: for field in ordered_fields: if (field in fields_to_show) and (field in entry_fields): info.append((field, entry[field])) - if not 'image' in fields_to_show and 'image' in entry.keys(): - info.append(('image', entry['image'])) + if not FIELD_IMAGE in fields_to_show and FIELD_IMAGE in entry.keys(): + info.append((FIELD_IMAGE, entry[FIELD_IMAGE])) return info def get_all_folders(self, parent=0): """Gets all filials.""" - return [(name, internal_name, 'd') for name, internal_name in \ - self.model.get_folders(parent)] + return [(name, internal_name, TYPE_DIRECTORY) for name, internal_name \ + in self.model.get_folders(parent)] def get_all_subfolders(self): """Gets all departments.""" - return [(name, internal_name, 'd') for name, internal_name in \ - self.model.get_folders()] + return [(name, internal_name, TYPE_DIRECTORY) for name, internal_name \ + in self.model.get_folders()] - #def get_all_files(self): - # """Gets all peoples.""" + def get_files_by_pattern_ex(self, key, pattern=''): + """Gets all peoples matched pattern.""" - # # FIXME: read field names from Config - # files_dict = self.model.get_files(['cn']) - # return [(files_dict[internal_name]['cn'], internal_name, TYPE_FILE) \ - # for internal_name in files_dict] + files_dict = self.model.get_files_by_pattern([FIELD_LOWLEVEL, \ + FIELD_TOPLEVEL, FIELD_MIDDLELEVEL], key, pattern, False) + return [("%s" % files_dict[internal_name][FIELD_LOWLEVEL], "%s / %s" % ( + files_dict[internal_name][FIELD_TOPLEVEL], \ + files_dict[internal_name][FIELD_MIDDLELEVEL]), \ + internal_name, TYPE_FILE) for internal_name in files_dict] - def get_files_by_pattern(self, pattern, separated=False): + def get_files_by_pattern(self, pattern=''): """Gets all peoples matched pattern.""" - if not separated: - return [(name, internal_name, TYPE_FILE) for internal_name, name \ - in self.model.get_files_by_pattern(pattern)] - else: - files_dict = self.model._get_files(['cn', 'o', 'ou'], 'cn', pattern, True) - return [("%s" % files_dict[internal_name]['cn'], "%s / %s" % ( - files_dict[internal_name]['o'], files_dict[internal_name]['ou']), \ - internal_name, TYPE_FILE) for internal_name in files_dict] + files_dict = self.model.get_files_by_pattern([FIELD_LOWLEVEL, \ + FIELD_TOPLEVEL, FIELD_MIDDLELEVEL], FIELD_LOWLEVEL, pattern, True) + return [("%s" % files_dict[internal_name][FIELD_LOWLEVEL], "%s / %s" % ( + files_dict[internal_name][FIELD_TOPLEVEL], \ + files_dict[internal_name][FIELD_MIDDLELEVEL]), \ + internal_name, TYPE_FILE) for internal_name in files_dict] def get_fields(self): """Returns all exists fields from model.""" @@ -103,7 +104,8 @@ class MeabookController: def show_configuration_dialog(self): """Shows view Configuration Dialog.""" - self.view.create_configuration_dialog(self, self.config) + self.view.create_configuration_dialog(self, self.config.get_fields(), \ + self.config.get_order()) def show_fields_configuration_dialog(self, parent): """Shows FieldsConfigurationDialog.""" @@ -112,6 +114,7 @@ class MeabookController: self.get_localized_fields(), self.config.get_fields(), parent) if selected_fields is not None: self.config.set_fields(selected_fields) + return selected_fields def show_fields_order_configuration_dialog(self): """Shows FieldsOrderConfigurationDialog.""" @@ -120,6 +123,7 @@ class MeabookController: self.get_localized_fields(), self.config.get_order()) if selected_fields is not None: self.config.set_order(selected_fields) + return selected_fields def show_search_dialog(self): """Shows view Search Dialog.""" @@ -129,20 +133,35 @@ 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': + import shutil + 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