def read_address_book_from_file(): file_name = "address_book.txt" if os.path.exists(file_name): file_address_book = open(file_name, 'rb') is_file_empty = os.path.getsize(file_name) == 0 if is_file_empty: book = AddressBook() else: book = pickle.load(file_address_book) file_address_book.close() else: book = AddressBook() file_address_book = open(file_name, 'tw') file_address_book.close() return book
def test_get_group_members(self): book = AddressBook() family = Group('family') friends = Group('friends') work = Group('work') book.add_group(family) book.add_group(friends) book.add_group(work) book.add_person(Person('John', 'Doe', Address('New York'), Email('*****@*****.**'), PhoneNumber('88005553535'), friends)) book.add_person(Person('Jane', 'Doe', Address('Chicago'), Email('*****@*****.**'), PhoneNumber('2128506'), [friends, work])) entries = book.get_group_members(work) self.assertEqual(len(entries), 1) entries = book.get_group_members(friends) self.assertEqual(len(entries), 2) self.assertEqual({entries[0].first_name, entries[1].first_name}, {'John', 'Jane'}) entries = book.get_group_members(family) self.assertEqual(len(entries), 0)
def load_vcf(folder): # type: (str) -> None contact_card_files = find_contact_files(folder) contacts = VCardContactConverter.from_vcards(contact_card_files) address_book = AddressBook() for contact in contacts: address_book.add_contact(contact) address_book.save_to_file() logger.info("Saved to {}".format(address_book.get_save_file_path()))
def test_add_person(self): address_book = AddressBook() person = Person( 'John', 'Doe', ['Russian Federation, Kemerovo region, Kemerovo, Kirova street 23, apt. 42'], ['+79834772053'], ['*****@*****.**'] ) address_book.add_person(person) self.assertIn(person, address_book)
def setUp(self): self.address_book = AddressBook() self.person1 = Person(first_name='p1fn', last_name='p1ln', emails=['p1em1@com', 'p1em2@com']) self.person2 = Person(first_name='p2fn', last_name='p2ln', emails=['p2em1@com', 'p2em2@com']) self.person3 = Person(first_name='p3fn', last_name='p3ln', emails=['p3em1@com', 'p3em2@com']) self.group1 = Group(name='Group1', persons=self.person1) self.group2 = Group(name='Group2', persons=[self.person3, self.person1])
def test_find_by_first_name(self): book = AddressBook() book.add_person(Person('John', 'Doe', Address('New York'), Email('*****@*****.**'), PhoneNumber('88005553535'))) entries = book.find_by_name('John') self.assertEqual(len(entries), 1) entry = entries[0] self.assertEqual(entry.first_name, 'John') self.assertEqual(entry.last_name, 'Doe') self.assertEqual(entry.street_addresses[0].address, 'New York') self.assertEqual(entry.emails[0].email, '*****@*****.**') self.assertEqual(entry.phone_numbers[0].number, '88005553535') self.assertEqual(entry.groups, [])
def test_find_by_last_name(self): book = AddressBook() book.add_person(Person('John', 'Doe', Address('New York'), Email('*****@*****.**'), PhoneNumber('88005553535'))) book.add_person(Person('Jane', 'Doe', Address('Chicago'), Email('*****@*****.**'), PhoneNumber('2128506'))) entries = book.find_by_name('Doe') self.assertEqual(len(entries), 2) self.assertEqual(entries[0].last_name, 'Doe') self.assertEqual(entries[1].last_name, 'Doe') self.assertEqual(len(book.find_by_name('Ivanov')), 0)
def test_get_address(self): address = Address(id=0, name="Toto", address="Tata", email="*****@*****.**", phone_numbers=["555 555-5555"]) book = AddressBook([address]) a = book.get_address(0) assert a.id == 0 assert a.name == "Toto" assert a.address == "Tata" assert a.email == "*****@*****.**" assert a.phone_numbers == ["555 555-5555"]
def create_address_book(self): from address_book import AddressBook from address import Address from work_address import WorkAddress expected = AddressBook("expected") expected.add_address( Address("Jane Weaver", "Tugusirna", "Rowland", "1877/2")) expected.add_address( Address("Rebecca Cunningham", "Murzuq", "Heffernan", "2/3")) expected.add_address( Address("Steven Pierce", "Matsena", "Mariners Cove", "153/4")) expected.add_address( WorkAddress("Jerzy Mardaus", "Kraków", "Ślusarska", "9/1", "Codecool Poland Sp. z o.o.")) expected.add_address( Address("Betty Jenkins", "Tirmiz", "Hollow Ridge", "011/5")) return expected
def test_find_person_by_full_name(self): address_book = AddressBook() ivan_popov_person = Person( 'Ivan', 'Popov', ['Russian Federation, Kemerovo region, Kemerovo, Kirova street 23, apt. 42'], ['+79834772053'], ['*****@*****.**'] ) ivan_sidorov_person = Person( 'Ivan', 'Sidorov', ['Russian Federation, Kemerovo region, Belovo, Kirova street 42, apt. 13'], ['+79834771122'], ['*****@*****.**'] ) address_book.add_person(ivan_popov_person) address_book.add_person(ivan_sidorov_person) found_person = address_book.find(first_name='Ivan', last_name='Sidorov') self.assertEqual(found_person, ivan_sidorov_person)
def test_find_person_by_email(self): address_book = AddressBook() john_person = Person( 'John', 'Doe', ['Russian Federation, Kemerovo region, Kemerovo, Kirova street 23, apt. 42'], ['+79834772053'], ['*****@*****.**'] ) ivan_person = Person( 'Ivan', 'Sidorov', ['Russian Federation, Kemerovo region, Belovo, Kirova street 42, apt. 13'], ['+79834771122'], ['*****@*****.**'] ) address_book.add_person(john_person) address_book.add_person(ivan_person) found_person = address_book.find(email='*****@*****.**') self.assertEqual(found_person, ivan_person)
def test_find_person_by_set_of_emails_prefix(self): address_book = AddressBook() john_person = Person( 'John', 'Doe', ['Russian Federation, Kemerovo region, Kemerovo, Kirova street 23, apt. 42'], ['+79834772053'], ['*****@*****.**'] ) ivan_person = Person( 'Ivan', 'Sidorov', ['Russian Federation, Kemerovo region, Belovo, Kirova street 42, apt. 13'], ['+79834771122'], ['*****@*****.**'] ) address_book.add_person(john_person) address_book.add_person(ivan_person) found_person = address_book.find(emails=['*****@*****.**', '*****@*****.**']) self.assertIsNone(found_person) ivan_person.add_email('*****@*****.**') found_person = address_book.find(emails=['sn0', 'iv']) self.assertEqual(found_person, ivan_person)
def choose_option(self, user_input): ab = AddressBook() if user_input == 1: ab.show() elif user_input == 2: name = input('input name: ') address = input('input address: ') phone = input('input phone: ') email = input('input email: ') ab.add(name, address, phone, email) elif user_input == 3: ab.show() name = input('input name for change: ') field = input('input field for change: ') new_info = input('input new info: ') ab.change(name, field, new_info) ab.show() elif user_input == 4: name = input('input name for delete: ') ab.delete(name) elif user_input == 5: name = input('input name: ') ab.search(name) elif user_input == 0: print('good bye!') else: return
from address_book import AddressBook from commands import list, add, delete, search, exit, remind from errors import NotExistError, AlreadyExistError, ValidationError available_commands = { 'list': list, 'add': add, 'delete': delete, 'search': search, 'exit': exit } book = AddressBook() print "Hello, this is your address book!" remind(book) print "Enter the one of commands below" while True: input = raw_input("{}\n".format(', '.join(available_commands.keys()))) command = input.lower() if command not in available_commands.keys(): print "I don\'t understand your command. Sorry!\n" else: try: available_commands[command](book) except (NotExistError, AlreadyExistError, ValidationError) as e: print(e)
def __init__(self): self.config = None self.address_book_list = [] # load config file xdg_config_home = os.environ.get("XDG_CONFIG_HOME") or \ os.path.expanduser("~/.config") config_file = os.environ.get("KHARD_CONFIG") or \ os.path.join(xdg_config_home, "khard", "khard.conf") if os.path.exists(config_file) == False: print("Config file %s not available" % config_file) sys.exit(2) self.config = ConfigObj(config_file, interpolation=False) # general settings if self.config.has_key("general") == False: print( "Error in config file\nMissing main section \"[general]\"." ) sys.exit(2) # editor self.config['general']['editor'] = self.config['general'].get("editor") \ or os.environ.get("EDITOR") if self.config['general']['editor'] is None: print("Error in config file\n" \ "Set path to your preferred text editor in khard's config file or the $EDITOR shell variable\n" \ "Example for khard.conf: editor = vim") sys.exit(2) self.config['general']['editor'] = find_executable( os.path.expanduser(self.config['general']['editor'])) if self.config['general']['editor'] is None: print( "Error in config file\nInvalid editor path or executable not found." ) sys.exit(2) # merge editor self.config['general']['merge_editor'] = self.config['general'].get("merge_editor") \ or os.environ.get("MERGE_EDITOR") if self.config['general']['merge_editor'] is None: print("Error in config file\n" \ "Set path to your preferred text merge editor in khard's config file or the $MERGE_EDITOR shell variable\n" \ "Example for khard.conf: merge_editor = vimdiff") sys.exit(2) self.config['general']['merge_editor'] = find_executable( os.path.expanduser(self.config['general']['merge_editor'])) if self.config['general']['merge_editor'] is None: print( "Error in config file\nInvalid merge editor path or executable not found." ) sys.exit(2) # default values for action and nickname settings if self.config['general'].has_key("default_action") == False: print( "Error in config file\nMissing default action parameter.") sys.exit(2) elif self.config['general'][ 'default_action'] not in self.get_list_of_actions(): print("Error in config file\n" \ "Non existing value for default action parameter\n" \ "Possible values are: %s" % ', '.join(self.get_list_of_actions())) sys.exit(2) if self.config['general'].has_key("show_nicknames") == False: self.config['general']['show_nicknames'] = False elif self.config['general']['show_nicknames'] == "yes": self.config['general']['show_nicknames'] = True elif self.config['general']['show_nicknames'] == "no": self.config['general']['show_nicknames'] = False else: print( "Error in config file\nshow_nicknames parameter must be yes or no." ) sys.exit(2) # load address books error_counter = 0 if self.config.has_key("addressbooks") == False: print( "Error in config file\nMissing main section \"[addressbooks]\"." ) sys.exit(2) if len(self.config['addressbooks'].keys()) == 0: print( "Error in config file\nNo address book entries available.") sys.exit(2) for name in self.config['addressbooks'].keys(): # create address book object try: address_book = AddressBook( name, self.config['addressbooks'][name]['path']) except KeyError as e: print( "Error in config file\nMissing path to the \"%s\" address book." % name) sys.exit(2) except IOError as e: print("Error in config file\n%s" % e) sys.exit(2) # load all vcard files for filename in glob.glob( os.path.join(address_book.get_path(), "*.vcf")): try: address_book.add_contact( CarddavObject.from_file(address_book, filename)) except IOError as e: print("Error: Could not open file %s\n%s" % (filename, e)) error_counter += 1 except vobject.base.ParseError as e: print("Error: Could not parse file %s\n%s" % (filename, e)) error_counter += 1 # add address book to list self.address_book_list.append(address_book) # check if one or more contacts could not be parsed if error_counter > 0: if error_counter == 1: print("\n1 vcard file could not be parsed") elif error_counter > 1: print("\n%d vcard files could not be parsed" % error_counter) sys.exit(2)
from address_book import AddressBook def check_entry(entry, expected_name, expected_number, expected_email): if entry.name == expected_name and entry.phone_number == expected_number and entry.email == expected_email: return True else: return False # start of tests print("=" * 25 + "\nSTART OF TESTS" + "\n" + "=" * 25) errors = 0 book = AddressBook() print("Entries = 0") if len(book.entries) == 0: print("SUCCESS") else: print("FAIL") errors += 1 print("\nEntries = 1") book.add_entry('Jon Doe', '012.345.5789', '*****@*****.**') if len(book.entries) == 1: print("SUCCESS") else: print("FAIL") errors += 1
city=input('City? '), state=input('State? '), zipcode=input('Zipcode? ')) def get_contact_from_user(): ''' Returns a Address class with the data entered from user ''' contact = Contact(name=get_name_from_user()) if input('Do you want to enter your home address (y/n): ').lower() == 'y': contact.set_home_address(get_address_from_user()) if input('Do you want to enter your work address (y/n): ').lower() == 'y': contact.set_work_address(get_address_from_user()) return contact ADDRESS_BOOK = AddressBook() while True: ACTION = input( 'What do you want to do (list/search/add/edit/delete/exit)? ').lower() if ACTION == 'add': ADDRESS_BOOK.add_contact(get_contact_from_user()) elif ACTION == 'edit': print('Editing') elif ACTION == 'list': ADDRESS_BOOK.display() elif ACTION == 'search': CONTACT = ADDRESS_BOOK.get_by_name(get_name_from_user()) if CONTACT: CONTACT.display() else:
def test_step13_address_book_type_error(self): from address_book import AddressBook book = AddressBook("Test") with self.assertRaises(TypeError, msg="Test dupy się nie powiódł ;("): book.add_address("dupa")
def test_step11_address_book_name(self): from address_book import AddressBook self.my_book = AddressBook("friends") self.assertEqual("friends", self.my_book.name)
def setUp(self): self.ab = AddressBook() with open('address_book.json', 'w'): pass
def add_addresses_to_book(self): from address_book import AddressBook self.my_book = AddressBook("friends") self.my_book.add_address(self.get_address()) self.my_book.add_address(self.get_work_address())
def create_new_address_book(): name = View.ask_for_adress_book_name() return AddressBook(name)
def __init__(self, i, o): super(ContactApp, self).__init__(i, o) self.menu_name = "Contacts" self.address_book = AddressBook() self.menu = None
def test_add_person_to_address_book(self, setup): book = AddressBook() book.append(setup) assert len(book) == 1
def test_add_group(self): address_book = AddressBook() group = Group('Brozzz') address_book.add_group(group) self.assertIn(group, address_book)
def test_delete_person_from_address_book(self, setup): book = AddressBook() book.append(setup) book.remove(setup) assert setup not in book