return self.cp.get('fields', 'show-fields').split(',')
-
def set_order(self, fields):
"""Sets fields order."""
"""Gets fields order."""
return self.cp.get('fields', 'fields-order').split(',')
-
- def get_last_active_level(self):
- """Gets last active level before exit."""
-
- return int(self.cp.get('general', 'last-active-level'))
-
- def set_last_active_level(self, level):
- """Sets last active level before exit."""
-
- self.cp.set('general', 'last-active-level', level)
def stop(self):
"""Exit the program."""
- self.config.set_last_active_level(self.view.get_current_level())
+ self.config.save()
self.model.close()
def get_items(self, parent=0):
"""Gets from model items with selected level."""
folders_list = list(self.get_all_folders(parent))
- files_list = [(fields['cn'], internal_name, 'file') for internal_name, \
+ files_list = [(fields['cn'], internal_name, 'fi') for internal_name, \
fields in self.model.get_files(['cn'], parent).items()]
return folders_list + files_list
def get_item(self, _id):
"""Gets person info."""
- return self.model.get_entry_by_id(_id)
+ info = []
+ entry = self.model.get_entry(_id)
+ entry_fields = entry.keys()
+ ordered_fields = []
+ fields_to_show = self.config.get_fields()
+ for field in dict().fromkeys(self.config.get_order()).keys():
+ if (field in fields_to_show) and (field in entry_fields):
+ info.append((field, entry[field]))
+ return info
def get_all_folders(self, parent=0):
"""Gets all filials."""
- return [(name, internal_name, 'folder') for name, internal_name in \
+ return [(name, internal_name, 'fo') for name, internal_name in \
self.model.get_folders(parent)]
def get_all_subfolders(self):
"""Gets all departments."""
- return [(name, internal_name, 'folder') for name, internal_name in \
+ return [(name, internal_name, 'fo') for name, internal_name in \
self.model.get_folders()]
def get_all_files(self):
"""Returns all exists fields from model."""
return self.model.get_fields()
+
+ def show_about_dialog(self):
+ """Shows view About Dialog."""
+
+ self.view.create_about_dialog()
+
+ def show_configuration_dialog(self):
+ """Shows view Configuration Dialog."""
+
+ self.view.create_configuration_dialog(self, self.config)
+
+ def show_import_dialog(self):
+ """Shows view IMport Dialog."""
+
+ path = self.view.create_import_dialog()
+ if not path:
+ return False
+
+ from meabook.parsers.ldif_parser import MeabookLDIFParser
+ parser = MeabookLDIFParser(open(path), self.model)
+ try:
+ self.view.create_progress_dialog()
+ parser.parse()
+ except:
+ self.view.create_information_dialog(_('Import error'), \
+ _('Unsupported file format!'))
for field, values in entry.items():
# update FIELDS table
- field_id = execute("SELECT id, name FROM fields WHERE name=?", \
+ field_id = execute("SELECT id FROM fields WHERE name=?", \
(field,)).fetchone()
if field_id is None:
execute("INSERT INTO fields values(NULL, ?)", (field,))
(field_id,)).fetchone()[0]
entry_dict[field_name] = value
return entry_dict
-
-
-
-# test perfomance
-if __name__ == "__main__":
- import profile
- database = SQLite('/tmp/')
- print database.get_entry(8)
- database.close()
-
regexp = re.compile(r'o=([^,]+)')
-class MyLDIFParser(LDIFParser):
+class MeabookLDIFParser(LDIFParser):
def __init__(self, fobj, database):
LDIFParser.__init__(self, fobj)
self.database = database
"""Process each entry from ldif file."""
# filter entries
- if not 'uid' in entry or not 'ou' in entry:
+ if (not 'uid' in entry) or (not 'ou' in entry):
return
- if 'deleted' in dn or not 'people' in dn:
+ if ('deleted' in dn) or (not 'people' in dn):
return
# choose proper name
print 'Wrong file name'
else:
parser.parse()
+