Пример #1
0
    def returnBook(self, name):
        try:
            book = super().searchByName(name)
            isbn = list(filter(lambda x: x[0] == book, self.booksissued))[0][1]

            #checking for correlation between self.bookissued and
            #Library.lended_book_data to extract rack value.
            for i in self.booksissued:
                if i[0] == book:
                    for j in Librarian.lended_book_data.get(book):
                        if j[0] == isbn:
                            rack = j[1]

            #return book and update member variables.
            Catalog._addBookItem(self, book, isbn, rack)
            print(f"Book '{book}' returned.\n")
            #updating variables :->
            self.booksissued.remove((book, isbn))
            self.issuedbookcount -= 1
            self.bookitems.remove(isbn)

            #updating Librarian.lended_book_data
            for i in list(Librarian.lended_book_data.keys()):
                #remove individual lended bookitem data from dictionary.
                try:
                    lis = Librarian.lended_book_data.get(book)
                    for j in lis:
                        if isbn == j[0]:
                            Librarian.lended_book_data[book] = list(
                                filter(lambda x: x[0] != isbn, lis))
                            # remove book from dictionary if all the bookitems are returned.
                            if len(Librarian.lended_book_data.get(book)) == 0:
                                Librarian.lended_book_data.pop(i)
                except TypeError:
                    return

        except IndexError:
            print(f"{self.name},'{book}' is not in your inventory.\n")