Система Керування Бібліотекою
Система Керування Бібліотекою є веб-застосуванням на базі Django, яке пропонує цифрову платформу для управління та взаємодії з колекцією бібліотеки. Вона оптимізує процеси надання книг, повернення та управління інвентарем, забезпечуючи легкий доступ як для користувачів, так і для бібліотекарів. За допомогою цієї системи користувачі можуть шукати доступні книги, робити запити на позику та керувати позиченими предметами. Бібліотекарі, з свого боку, контролюють додавання, оновлення та видалення записів книг та можуть схвалювати або відхиляти запити на позику. Система також підтримує різноманітні ролі користувачів, від звичайних членів до персоналу та адміністраторів, кожен з яких має відмінні можливості.
Добре структурований користувацький інтерфейс забезпечує легкий доступ до всіх функцій, роблячи процес управління бібліотекою безперешкодним та ефективним. Цей проект має на меті об’єднати традиційні бібліотечні функції з сучасними технологічними інноваціями, сприяючи підвищенню ефективності та покращенню користувацького досвіду.
Ролі користувачів
Примітка
Розробникам важливо враховувати аспекти безпеки при впровадженні цих ролей, щоб гарантувати, що користувачі не зможуть виконувати дії, які виходять за рамки призначеної їм ролі.
Адміністратори
Адміністратори мають повний контроль над усією системою. Вони можуть отримати доступ до всіх функцій, що надаються адмін-сайтом Django, і керувати ними.
Адміністратори можуть створювати, змінювати або видаляти будь-які записи в додатку.
Можливості
Доступ до адміністративного сайту Django
Бібліотекарі
Працівники бібліотеки відповідають за повсякденну роботу в бібліотеці. Вони можуть додавати нові книги до бібліотечної колекції, керувати даними про наявні книги, а також приймати або відхиляти запити від постійних користувачів.
Можливості
Управління бібліотечним каталогом
Додавати, змінювати або видаляти авторів
Додавати, змінювати або видаляти жанри
Додавати, змінювати або видаляти дані про книги
Переглядати запити на позичення від користувачів
Приймати або відхиляти запити на позичення
Реєструвати повернені книги та оновлювати їх статус
Звичайний
Постійні зареєстровані користувачі є членами бібліотеки. Вони можуть шукати книги, запитувати їх, а також несуть відповідальність за своєчасне повернення позичених книг.
Можливості
Переглядати каталог книг
Переглядати деталі книги
Шукати книги
Робити запит на позичення доступних книжок
Перевіряти термін повернення запозичених книжок
Повертати запозичені книги
Анонімні
Анонімні користувачі - це відвідувачі, які не ввійшли в систему.
Можливості
Переглядати каталог книг
Переглядати деталі книги
Шукати книги
Доступ до сторінок реєстрації або входу
Моделі
Модель жанра
Модель Genre
представляє категорію або тип контенту, до якого належить книга, наприклад, «Художня література», «Нехудожня література», «Наука», «Романтика» тощо. Оскільки книга може належати до кількох категорій одночасно, вона реалізована як окрема модель.
Атрибути
- Name:
Назва жанру.
Модель книги
Модель Book
представляє фізичну книгу в бібліотечній колекції. Кожен запис про книгу містить основну бібліографічну інформацію, а також деталі, пов’язані з її поточним статусом у бібліотеці (наприклад, доступна, позичена тощо).
Атрибути
- Title:
Назва книги (255 символів або менше).
- Summary:
Короткий опис або синопсис книги.
- ISBN:
International Standard Book Number, унікальний ідентифікатор для книг..
- Available:
Поточний статус доступності книги. Або
True
, абоFalse
. За замовчуванням книги доступні.- Published date:
Дата, коли книга була опублікована.
- Publisher:
Організація або компанія, відповідальна за виробництво та розповсюдження книги.
- Genre(s):
Категорія або тип контенту, до якого належить книга (наприклад, художня література, нон-фікшн, наукова література).
- Author(s):
Ім’я особи або групи осіб, відповідальних за створення змісту книги.
- Borrower:
Користувач, який наразі позичив книгу, якщо це можливо.
Модель запиту на позику
Модель BorrowRequest
фіксує намір користувача взяти конкретну книгу. Вона відстежує статус запиту: очікує, схвалений, відхилений чи завершений.
Атрибути
- Book:
Посилання на книгу, яку потрібно взяти.
- Borrower:
Посилання на користувача, який хоче взяти книгу.
- Status:
Поточний статус заявки.
pending
approved
collected
complete
declined
Константи стану повинні бути інкапсульовані в моделі
BorrowRequest
.class BorrowRequestModel(models.Model): ... PENDING = 1 APPROVED = 2 COLLECTED = 3 COMPLETE = 4 DECLINED = 5 ...
- Overdue:
Прапорець, що вказує на те, чи був запит на позику прострочений.
- Request date:
Дата подання запиту на позику. Це обов’язкова інформація.
- Approval date:
Дата схвалення запиту, якщо це можливо. Необов’язково.
- Due date:
Дата, до якої книга має бути повернута. Необов’язкова, має бути вказана лише у разі схвалення запиту.
- Complete date:
Дата повернення книги та завершення запиту на позику. Необов’язкова, має бути встановлена тільки якщо запит досяг статусу «Завершено».
Відносини
Entity relationship diagram
Книга до жанру
Кожен Жанр
може бути пов’язаний з декількома Книгами
, і навпаки. Однак Книга
може не належати до жодного жанру. Цей зв’язок між Жанром
і Книгою
все ще вважається багато-до-багатьох, але з можливістю нульових жанрів для книги.
Книга до запиту на позику
Кожна Книга
може бути пов’язана з декількома Запитами на позику
, але кожен Запит на позику
посилається тільки на одну Книгу
, утворюючи зв’язок багато-до-одного.
Користувач до запиту на позику
Кожен Користувач
може зробити кілька Запитів на позику
, але кожен Запит на позику
відноситься тільки до однієї книги, формуючи зв’язок багато до однієї
.
Користувач до книги (як запозичувач)
Книга» може бути позичена «Користувачем», але в будь-який момент часу кожна «Книга» може бути позичена тільки одним користувачем. Це формує відносини «один до одного».
Подання та шаблони
Адмін-сайт
Адмін-сайт забезпечує повний контроль над всією системою. Тільки адміністратори мають право користуватися сайтом адміністратора. Бібліотекарі повинні використовувати свої виділені подання для виконання операцій, за винятком особливих випадків.
Автентифікація
Логін
Template
Форма з полями для введення імені користувача та пароля, а також кнопкою «Надіслати».
View logic
Перевірити введені облікові дані та автентифікувати користувача. У разі неправильних облікових даних вивести повідомлення про помилку.
Реєстрація
Template
Форма для реєстрації нового користувача. Обов’язковими полями є:
username
first name
last name
password
confirm password
View logic
Після відправлення, перегляд повинен підтвердити надані дані:
Перевірте, чи не зайнято вже ім’я користувача.
Переконайтеся, що поля «Пароль» і «Підтвердження пароля» збігаються.
Зберегти дані користувача, якщо всі перевірки пройдено. В іншому випадку, відобразити відповідні повідомлення про помилки.
Зберігаючи паролі в базі даних, завжди зберігайте їх у хешованому форматі, а не у вигляді простого тексту.
Підказка
Вбудована в Django модель User
та система автентифікації за замовчуванням обробляє хешування паролів, що є великим плюсом.
Історія запозичень
Це подання доступне лише для авторизованих користувачів.
Template
Користувачі можуть бачити список всіх своїх заявок на позики, незалежно від статусу схвалення/відхилення.
View logic
Авторизовані користувачі можуть бачити лише власні заявки на позики.
Бібліотекарі та адміністратори мають доступ до списку запитів на позики для будь-якого користувача, зареєстрованого в бібліотечній системі.
Бібліотечний фонд
Ці перегляди загалом доступні для всіх (в тому числі анонімних) користувачів. Функціонал для аутентифікованих користувачів включає в себе можливість позичати книги.
Список літератури
Template
Список (або таблиця) книг. Кожна позиція повинна містити інформацію про книгу:
title
автор(и)
опис (скорочене, якщо занадто довге, до 30 слів або менше)
статус доступності (Доступний або Не доступний)
View logic
Запит даних
Отримати усі книги з бази даних
Перевірка статусу доступності (візуальна позначка)
Для кожної книги визначте її статус доступності. Встановіть прапорець
Book.available
.
Примітка
Користувач все одно може створити запит на позику, незалежно від статусу доступності книги. Це лише візуальна позначка.
Детальний перегляд
Template
Детальний огляд конкретної книги, що містить вичерпну інформацію:
Назва: Покажіть назву книги на видному місці.
Жанр(и): Перелічіть усі пов’язані жанри (якщо такі є).
Автор(и): Перерахуйте всіх асоційованих авторів.
ISBN: Міжнародний стандартний номер книги.
Дата публікації: Коли вийшла друком книга.
Видавець: Назва організації або компанії, відповідальної за публікацію
Коротка анотація: Повне резюме або опис книги. книги.
Кнопки дій (Тільки для авторизованих користувачів):
Кнопка запиту на позику: Якщо користувач не має пов’язаного запиту на позику, він може створити новий.
Кнопка Забрати книгу: Якщо запит користувача на позику цієї книги було схвалено, дозвольте користувачеві підтвердити, що він забрав книгу.
View logic
Доступ до деталей книги:
Використовуйте ідентифікатор книги (зазвичай первинний ключ), щоб отримати інформацію про неї з бази даних.
Перевірка автентичності користувача:
Визначити, чи користувач автентифікований. Якщо так, відобразити відповідні кнопки дій на основі статусу доступності книги та наявних запитів користувача на позику.
Обробка запитів на позику:
Якщо авторизований користувач натискає кнопку «Запит на позику»:
Створіть новий запит на позику в моделі
BorrowRequest
зі статусом «на розгляді».Оновіть статус книги на «Очікує затвердження».
Перенаправлення користувача на сторінку підтвердження або відображення повідомлення про те, що запит було зроблено.
Опрацювання Позики Книги:
Якщо авторизований користувач має схвалений запит на позику і натискає кнопку «Зібрати книгу»:
Оновіть статус книги на «Позичена».
Оновіть статус запиту на позику до «завершено».
Перенаправляйте користувача на сторінку підтвердження або показуйте повідомлення про те, що він забрав книгу.
Примітка
Завжди переконуйтеся, що дії користувача автентифіковані та санкціоновані. Це запобігає несанкціонованим запитам на позику або збору книг. Також подумайте про те, щоб додати обробку помилок для випадків, коли не вдається отримати дані про книгу, або будь-яких інших непередбачуваних проблем.
Управління книгами
Ці перегляди доступні лише для персоналу (бібліотекарів та адміністраторів).
Створення та оновлення книг
Шаблон повинен містити форму з полями, що відповідають атрибутам книги. Ось основні елементи форми:
- Title:
Поле для введення тексту.
- Summary:
Текстова область для короткого опису або синопсису.
- ISBN:
Поле для введення міжнародного стандартного номера книги.
- Available:
Прапорець, що вказує на наявність книги. За замовчуванням стоїть
True
.- Published date:
Поле для введення дати.
- Publisher:
Поле для введення тексту.
- Жанри:
Список жанрів з можливістю вибору (наприклад, випадаючий список, прапорці тощо). Він повинен отримувати доступні жанри з бази даних і дозволяти користувачам вибирати нуль або більше жанрів.
- Автори:
Список авторів з можливістю вибору (наприклад, випадаючий список, прапорці тощо). Він повинен отримувати доступних авторів з бази даних і дозволяти користувачам вибирати одного або декількох авторів.
View logic
Якщо це дія оновлення, попередньо заповніть поля форми існуючими даними книги, отриманими з бази даних.
Для створення надайте бібліотекарю порожню форму для заповнення.
Переконайтеся, що опублікована дата є логічною (наприклад, не є датою майбутнього).
Перевірити необхідні вхідні дані відповідно до загальних правил моделі
Book
.Якщо перевірка пройшла успішно: збережіть зміни в базі даних; в іншому випадку надайте корисні повідомлення про помилки.
Примітка
Ви МОЖЕТЕ надати механізм (наприклад, модальну форму або форму швидкого введення) для додавання нового жанру або автора, не виходячи зі сторінки форми книги.
Видалення книги
Тільки бібліотекарі та адміністратори мають право виконувати цю дію.
Template
Форма підтвердження видалення з кнопками Подати та Скасувати.
View logic
Авторизуйте користувача перед виконанням видалення.
Якщо формуляр подано, книга має бути вилучена з бібліотечної колекції.
Якщо видалення скасовано, перегляд має бути перенаправлений назад на сторінку детального перегляду книги.
Запити на позики
Цей перегляд полегшує бібліотекарям і адміністраторам управління запитами на позики, допомагаючи оперативно їх обробляти.
Template
Уявіть таблицю, що відображає список запитів на позики. Кожен рядок відображає один запит на позику і включає в себе всі запити:
Назва книги: Назва запитуваної книги.
Користувач: Ідентифікатор користувача, який ініціював запит.
Дата запиту: Дата створення запиту.
Дата виконання: - Поле для введення бібліотекарями при затвердженні нових запитів. - Для затверджених запитів відображатиметься дата, встановлена бібліотекарем.
Статус: Поточний стан запиту (Новий, Затверджений, Завершений, Відхилений).
Кнопка «Затвердити»: Відображається для нових запитів. Перемикає статус на «Затверджено» і заморожує дату виконання.
Кнопка «Відхилити»: З’являється для нових запитів. Встановлює статус «Відхилено» і може запитувати причину відхилення.
Кнопка «Завершити»: Відображається для затверджених запитів. Позначає запит як завершений.
View Logic
Схвалити запит на позику: - Підтвердити наявність книги. - Змінити статус книги на «Позичена». - Переключіть запит на позику на «Затверджено». - Визначте дату повернення відповідно до побажань бібліотекаря. - Повідомте користувача про схвалення та дату повернення.
Відхилити запит на позику: - Змінити статус запиту на «Відхилено». - За бажанням, запитайте причину відмови у бібліотекаря. - Повідомте користувача про відхилення.
Завершити запит на позику: - Переконайтеся, що книга повернулася. - Оновити статус книги до «Доступна». - Змінити статус запиту на «Виконано». - Якщо потрібно, запишіть будь-які примітки або пошкодження під час повернення.
Примітка
Впровадження нагадувань про прострочені запити може функціонувати як система оповіщення як для бібліотекаря, так і для користувача.