/[cvs]/joko/ToolBox/Windows/MapiContactsDumper/src/MapiContactsDumper.py
ViewVC logotype

Contents of /joko/ToolBox/Windows/MapiContactsDumper/src/MapiContactsDumper.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations)
Tue Oct 16 15:32:52 2007 UTC (16 years, 8 months ago) by joko
Branch: MAIN
CVS Tags: HEAD
File MIME type: text/x-python
initial commit

1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 # $Id: setup.py,v 1.1 2007/10/14 07:04:37 joko Exp $
5
6 # (c) 2007 Andreas Motl <andreas.motl@ilo.de>
7
8
9 SHARED_FOLDER = '/Öffentliche Ordner/Alle Öffentlichen Ordner/EDV/plugin_test'
10
11
12 # essential base packages
13 import os, sys
14
15 import getopt
16 import win32com.client
17
18 # for reading .ini files
19 import ConfigParser
20 import string
21
22
23
24 # ----------------------------------------------------------------------------
25 # bootstrapping
26 # ----------------------------------------------------------------------------
27
28 # find path to ourself
29 script_path = os.path.dirname(sys.argv[0])
30
31 # read config from ini-style file
32 config = ConfigParser.ConfigParser()
33 ini_filename = 'MapiContactsDumper.ini'
34 config.read(os.path.join(script_path, ini_filename))
35
36
37 # ----------------------------------------------------------------------------
38 # main
39 # ----------------------------------------------------------------------------
40
41 def searchFolder(folders, foldername):
42 for i in range(1, len(folders)):
43 if str(folders[i].Name) == foldername:
44 return folders[i]
45
46 def getFolderByPath(rootfolders, folderpath):
47 folder_parts = folderpath.split('/')
48 folder_parts = folder_parts[1:]
49 for part in folder_parts:
50 childfolder = searchFolder(rootfolders, part)
51 try:
52 rootfolders = childfolder.Folders
53 except:
54 pass
55 return childfolder
56
57 def readMapiContactsFolder_faxAddresses(folder):
58 items = folder.Items
59 entries = []
60 for i in range(1, len(items)):
61 contact = items[i]
62 entry = {
63 'label': contact.LastName + ' ' + contact.FirstName,
64 'faxnumber': contact.BusinessFaxNumber,
65 }
66 entries.append(entry)
67 return entries
68
69
70 def export_addressbook(entries):
71
72 if config.get('export', 'type') == 'twofiles':
73 path = config.get('export', 'path')
74
75 if not os.path.exists(path):
76 raise 'ERROR: Export path "%s" does not exist!' % path
77
78 names = open(os.path.join(path, 'names.txt'), 'w')
79 numbers = open(os.path.join(path, 'numbers.txt'), 'w')
80
81 for entry in entries:
82 print entry['label'] + ": " + entry['faxnumber']
83 names.write(entry['label'] + "\n")
84 numbers.write(entry['faxnumber'] + "\n")
85
86 names.close()
87 numbers.close()
88
89
90 def main():
91 opts_definition = ["folder=", "verbose"]
92 opts, args = getopt.gnu_getopt(sys.argv[1:], '', opts_definition)
93 #print opts
94 #print args
95
96 # put option list into dict
97 global options
98 options = {}
99 for option, value in opts:
100 option = option.replace('--', '')
101 #value = value.decode('cp1250')
102 #value = unicode(value, 'cp850')
103 #print option
104 options[option] = value
105
106 #print options
107
108 # http://www.boddie.org.uk/python/COM.html
109 mailer = win32com.client.Dispatch("Outlook.Application")
110 mapiroot = mailer.GetNamespace("MAPI")
111 #print mapi.Name
112
113 #sharedroot = mapiroot.Folders('Öffentliche Ordner')
114 #print sharedroot.Name
115
116 # hardcode folder
117 #options['folder'] = SHARED_FOLDER
118
119 # read folder from command line options
120 #contactsFolder = getFolderByPath(mapiroot.Folders, options['folder'])
121
122 # read folder from ini file
123 contactsFolder = getFolderByPath(mapiroot.Folders, config.get('mapi-contact-folders', 'folder1'))
124
125 #print contactsFolder.Name
126
127 entries = readMapiContactsFolder_faxAddresses(contactsFolder)
128 #print entries
129 export_addressbook(entries)
130
131
132 if __name__ == '__main__':
133 main()

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed