1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- from O365 import Account
- from O365.address_book import Contact
- client_id = '925f74dc-f96a-4718-9ca7-d6cc3fa43e1e'
- client_secret = 'SS~8Q~QpBZV9toZuwkzW1XGGen2Hn833spNMtdq5'
- account = Account(
- (client_id, client_secret),
- auth_flow_type='credentials',
- tenant_id='2ad0dff5-07ce-4cc2-a852-99ce8b91c218'
- )
- mailboxes = [
- 'bedner@global-cube.de',
- 'brandt@global-cube.de',
- # 'd.ankenbrand@global-cube.de',
- 'gawliczek@global-cube.de',
- 'm.geiss@global-cube.de',
- 'matarrelli@global-cube.de',
- 'winkler@global-cube.de',
- 'winter@global-cube.de'
- ]
- def copy_contact(p_from: Contact, p_to: Contact):
- p_to.display_name = p_from.display_name
- p_to.name = p_from.name
- p_to.surname = p_from.surname
- p_to.title = p_from.title
- p_to.job_title = p_from.job_title
- p_to.company_name = p_from.company_name
- p_to.department = p_from.department
- p_to.office_location = p_from.office_location
- p_to.business_phones = p_from.business_phones
- p_to.mobile_phone = p_from.mobile_phone
- p_to.home_phones = p_from.home_phones
- p_to._Contact__emails = p_from._Contact__emails
- p_to.business_address = p_from.business_address
- # p_to.home_address = p_from.home_address
- p_to.other_address = p_from.other_address
- p_to.categories = p_from.categories
- p_to.personal_notes = p_from.personal_notes
- p_to.save()
- def main():
- account.authenticate()
- shared = account.address_book(resource='adressbuch@global-cube.net', address_book='personal')
- shared_contacts = {p.display_name: p for p in shared.get_contacts(limit=None)}
- for mailbox in mailboxes:
- print(mailbox)
- personal = account.address_book(resource=mailbox, address_book='personal')
- personal_contacts = {p.display_name: p for p in personal.get_contacts(limit=None)}
- extra_contacts = set(personal_contacts.keys()).difference(shared_contacts.keys())
- print(extra_contacts)
- # p.delete()
- for p in shared_contacts.values():
- if p.display_name not in personal_contacts:
- p_new = personal.new_contact()
- copy_contact(p, p_new)
- else:
- p_existing = personal_contacts[p.display_name]
- if p.modified > p_existing.modified:
- copy_contact(p, p_existing)
- if __name__ == '__main__':
- main()
- # gal = account.directory()
- # mails = [p.mail for p in gal.get_users()]
- # print(mails)
|