def address_book(item_type): """Add a person or group to the address book.""" data = json.loads(request.data) address_book = AddressBook.query.first() if not address_book: address_book = AddressBook() address_book.save() if item_type == "person": person_obj = Person(**data) try: person_obj.save() address_book.person_list.append(person_obj) except MissingValueException as e: return jsonify({ "saved": False, "type": "person", "data": data, "message": "Missing {}".format(e) }) except Exception as e: raise e elif item_type == "group": data['persons'] = [Person.query.get(x) for x in data['persons']] try: group_obj = Group(**data) group_obj.save() address_book.group_list.append(group_obj) except MissingValueException as e: return jsonify({ "saved": False, "type": "person", "message": "Missing {}".format(e) }) except BadValueException as e: return jsonify({ "saved": False, "type": "person", "message": "One of the Ids provided is not in Database" }) except Exception as e: raise e else: return jsonify( {"message": "The url has to be address_book/[person|group]"}), 404 address_book.save() return jsonify({ "message": "saved {} to Address Book".format(item_type), "data": json.loads(dumps(address_book.wrap())) })
def new(request): a = AddressBook(first_name=request.POST['first_name'], last_name=request.POST['last_name'], phone=request.POST['phone'], address=request.POST['address'], city=request.POST['city'], state=request.POST['state'], country=request.POST['country'], zipcode=request.POST['zipcode'], email=request.POST['email']) a.save() return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
class AddressBookApp(Application): def __init__(self): super().__init__() self.addressbook = AddressBook() self.addressbook.load(self.config) def create_menu(self, menu): # 메뉴를 구성해야합니다. # super().create_menu(menu) menu.add('목록', self.print_book) menu.add('상세보기', self.print_detail) menu.add('검색', self.search) menu.add('추가', self.add) menu.add('수정', self.update) menu.add('삭제', self.delete) menu.add('종료', self.exit) # 검색방법: 키워드 검색... '길동' --> [홍길동, 고길동] def search(self): keyword = input('검색어: ') result = self.addressbook.search(keyword) print('=' * 50) print(f'검색 ({len(result)}건)') print('=' * 50) for index, entry in enumerate(result, 1): print( f'{index:02d}] {entry.name}: {entry.phone}, {entry.email}, {entry.addr}' ) print('-' * 50) def print_book(self): print('=' * 50) print('주소록') print('=' * 50) for index, entry in enumerate(self.addressbook.book, 1): print( f'{index:02d}] {entry.name}: {entry.phone}, {entry.email}, {entry.addr}' ) print('-' * 50) def print_detail(self): index = int(input('대상 선택(번호): ')) # 검색 entry = self.addressbook.book[index - 1] # entry 포멧팅 해서 출력 print(f'이름: {entry.name}') print(f'전화번호: {entry.phone}') print(f'email: {entry.email}') print(f'주소: {entry.addr}') def add(self): print('새 주소록 항목 추가') name = input('이름:') phone = input('전화번호:') email = input('이메일:') addr = input('주소:') self.addressbook.add(name, phone, email, addr) def update(self): index = int(input('대상 선택(번호): ')) # 검색 entry = self.addressbook.book[index - 1] print('주소록 항목 수정') name = input(f'이름({entry.name}):') if name.strip() == '': name = entry.name phone = input(f'전화번호({entry.phone}):') if phone.strip() == '': phone = entry.phone email = input(f'이메일({entry.email}):') if email.strip() == '': email = entry.email addr = input(f'주소({entry.addr}):') if addr.strip() == '': addr = entry.addr self.addressbook.update(index - 1, name, phone, email, addr) def delete(self): index = int(input('대상 선택(번호):')) entry = self.addressbook.book[index - 1] ans = input(f'{entry.name}을 삭제할까요?(Y/N)') if ans == 'Y': self.addressbook.delete(index - 1) def destroyed(self): self.addressbook.save(self.config)
class AddressBookApp(Application): def __init__(self): super().__init__() self.addressbook = AddressBook() self.addressbook.load(self.config) def create_menu(self, menu): self.menu.add('목록', self.print_book) # print_book() 이라고 쓰면 이 메서드의 리턴값을 넘겨주기 때문에 괄호를 쓰면 안됨 self.menu.add('상세보기', self.print_detail) self.menu.add('검색', self.search) self.menu.add('추가', self.add) self.menu.add('수정', self.update) self.menu.add('삭제', self.delete) self.menu.add('종료', self.exit) def print_book(self): print('='*50) print('주소록') print('='*50) for ix, entry in enumerate(self.addressbook.book): print(f'{ix+1:02d}. {entry.name} : {entry.phone}, {entry.email}, {entry.addr}') def print_detail(self): index = int(input('대상 선택 (번호): ')) entry = self.addressbook.book[index-1] print() print(f'이름 : {entry.name}') print(f'전화번호 : {entry.phone}') print(f'이메일 : {entry.email}') print(f'주소 : {entry.addr}') def search(self): # 부분 일치 검색 (키워드 검색) keyword = input('검색어 : ') result = self.addressbook.search(keyword) print('='*50) print(f'검색 결과 ({len(result)}건)') print('='*50) for index, entry in enumerate(result): print(f'{index+1:02d}) {entry.name} : {entry.phone}, {entry.email}, {entry.addr}') def add(self): print('\n<새 주소록 항목 추가>\n') name = input('이름 : ') phone = input('전화번호 : ') email = input('이메일 : ') addr = input('주소 : ') self.addressbook.add(name, phone, email, addr) print('\n등록이 완료되었습니다.') def update(self): index = int(input('대상 선택 (번호): ')) entry = self.addressbook.book[index-1] print('주소록 항목 수정') name = input(f'이름({entry.name}) -> ') if name.strip() == '': name = entry.name phone = input(f'전화번호({entry.phone}) -> ') if phone.strip() == '': phone = entry.phone email = input(f'이메일({entry.email}) -> ') if email.strip() == '': email = entry.email addr = input(f'주소({entry.addr}) -> ') if addr.strip() == '': addr = entry.addr self.addressbook.update(index-1, name, phone, email, addr) def delete(self): index = int(input('대상 선택 (번호): ')) entry = self.addressbook.book[index-1] if input(f'{entry.name}님을 정말로 삭제할까요? (y/n) ') == 'y': self.addressbook.delete(index-1) def destroyed(self): self.addressbook.save(self.config)