{"id":23669152,"url":"https://github.com/topotun77/library_of_books","last_synced_at":"2025-12-13T01:30:14.570Z","repository":{"id":264184429,"uuid":"892589118","full_name":"Topotun77/library_of_books","owner":"Topotun77","description":"Система управления библиотекой книг","archived":false,"fork":false,"pushed_at":"2024-11-22T16:30:15.000Z","size":19413,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-29T08:18:02.629Z","etag":null,"topics":["logging","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Topotun77.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-22T11:59:05.000Z","updated_at":"2024-12-04T11:18:18.000Z","dependencies_parsed_at":"2024-11-22T21:19:40.996Z","dependency_job_id":null,"html_url":"https://github.com/Topotun77/library_of_books","commit_stats":null,"previous_names":["topotun77/library_of_books"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Topotun77%2Flibrary_of_books","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Topotun77%2Flibrary_of_books/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Topotun77%2Flibrary_of_books/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Topotun77%2Flibrary_of_books/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Topotun77","download_url":"https://codeload.github.com/Topotun77/library_of_books/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239680932,"owners_count":19679507,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["logging","python"],"created_at":"2024-12-29T08:17:59.048Z","updated_at":"2025-12-13T01:30:14.510Z","avatar_url":"https://github.com/Topotun77.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Система управления библиотекой книг\n\n### В видео показан процесс работы с приложением (кликните на картинку скриншота для просмотра видео):\n\n[![Посмотрите видео](https://github.com/Topotun77/library_of_books/blob/master/Media/ScreenShot01.JPG?raw=true)](https://disk.yandex.ru/i/jnuVZ2AuR5oYfw)\n\n#### Данный проект представляет собой консольное приложение по ведению учета книг в библиотеке и позволяет производить \nследующие операции: \n\n1. Регистрацию пользователя.\n2. Вход/выход пользователя в систему.\n3. Добавление книги.\n4. Удаление книги.\n5. Поиск книги.\n6. Отображение всех книг.\n7. Изменение статуса книги (“в наличии” или “выдана”).\n\n#### Ниже приведет полный перечень пунктов меню:\n```\nВыберете одно из следующих действий:\n\t0 = Завершить работу,\n\t1 = Регистрация пользователя,\n\t2 = Вход в систему,\n\t3 = Выход из системы,\n\t4 = Добавить книгу,\n\t5 = Удалить книгу по ID,\n\t6 = Найти и удалить книгу,\n\t7 = Поиск книг по ключевому слову,\n\t8 = Поиск книг по ключевому слову с учетом их наличия,\n\t9 = Взять книгу домой,\n\t10 = Вывести список всех книг,\n\tЛюбой другой ввод = Вывести содержимое всей базы.\n```\n\n#### В проекте использовано логирование важных операций пользователей, таких как:\n\n- Регистрация пользователя.\n- Вход/выход пользователя в систему.\n- Неудачные попытки входа в систему.\n- Добавление книг.\n- Удаление книг.\n- Журналируются ошибки, возникающие в процессе работы приложения.\n\nЛогирование реализовано как через декоратор к методам `@loging_decor`, так и непосредственно в функциях. \n\nПри написании кода все функции и основные блоки кода подробно документировались.\nПеременные и функции в коде аннонировались.\n\n#### Пример оформления кода:\n```python\n@loging_decor\ndef del_book(self, book: Book) -\u003e str:\n    \"\"\"\n    Метод удаляет книгу по ее ID.\n    :param book: Объект класса Book\n    :return: Успех/неудача\n    \"\"\"\n    if self.current_user is None:\n        return color(f'Войдите в свой аккаунт чтобы удалить книгу \"{book}\".')\n    if self.contains_book(book_name=book.title, available=False) is None:\n        return color(f'Книга \"{book.title}\" не была найдена в базе.', RED)\n    else:\n        self.books.remove(book)\n        self.__write_json()\n        return color(f'Книга \"{book.title}\" удалена успешно.', LIGHTYELLOW)\n```\n#### При разработке проекта были созданы следующие модули:\n- `main.py` - основной модуль, предназначенный для запуска приложения.\n- `models.py` - модуль, содержащий описание классов со всеми аттрибутами и методами. \n- `constants.py` - константы, используемые в проекте.\n- `utilities.py` - дополнительные утилиты.\n- `tests.py` - модуль тестирования.\n\n#### Дополнительно используются файлы:\n- `bd.json` - файл с базой данных в формате `JSON`.\n- `library_books.log` - журнал (лог) приложения.\n\nТакже есть возможность использования данного модуля в качестве библиотеки внутри других решений.\n\nДля наглядности тестирование реализовано моделированием различных ситуаций.\nМожно реализовать через `Unittest`.\n\n---\n### Ниже приведен полный текст технического задания:\n\n#### Тестовое задание \n**Задание:** Разработка системы управления библиотекой\n#### Описание\nНеобходимо разработать консольное приложение для управления библиотекой книг. \nПриложение должно позволять добавлять, удалять, искать и отображать книги. Каждая книга должна содержать следующие поля:  \n • id (уникальный идентификатор, генерируется автоматически)  \n • title (название книги)  \n • author (автор книги)  \n • year (год издания)  \n • status (статус книги: “в наличии”, “выдана”)\n\n#### Требования\n 1. Добавление книги: Пользователь вводит title, author и year, после чего книга добавляется в библиотеку с уникальным id и статусом “в наличии”.\n 2. Удаление книги: Пользователь вводит idкниги, которую нужно удалить.\n 3. Поиск книги: Пользователь может искать книги по title, author или year.\n 4. Отображение всех книг: Приложение выводит список всех книг с их id, title, author, year и status.\n 5. Изменение статуса книги: Пользователь вводит id книги и новый статус (“в наличии” или “выдана”).\n\n#### Дополнительные требования\n • Реализовать хранение данных в текстовом или json формате.  \n • Обеспечить корректную обработку ошибок (например, попытка удалить несуществующую книгу).  \n • Написать функции для каждой операции (добавление, удаление, поиск, отображение, изменение статуса).  \n • Не использовать сторонние библиотеки.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftopotun77%2Flibrary_of_books","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftopotun77%2Flibrary_of_books","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftopotun77%2Flibrary_of_books/lists"}