Система Керування Бібліотекою

Система Керування Бібліотекою є веб-застосуванням на базі Django, яке пропонує цифрову платформу для управління та взаємодії з колекцією бібліотеки. Вона оптимізує процеси надання книг, повернення та управління інвентарем, забезпечуючи легкий доступ як для користувачів, так і для бібліотекарів. За допомогою цієї системи користувачі можуть шукати доступні книги, робити запити на позику та керувати позиченими предметами. Бібліотекарі, з свого боку, контролюють додавання, оновлення та видалення записів книг та можуть схвалювати або відхиляти запити на позику. Система також підтримує різноманітні ролі користувачів, від звичайних членів до персоналу та адміністраторів, кожен з яких має відмінні можливості.

Добре структурований користувацький інтерфейс забезпечує легкий доступ до всіх функцій, роблячи процес управління бібліотекою безперешкодним та ефективним. Цей проект має на меті об’єднати традиційні бібліотечні функції з сучасними технологічними інноваціями, сприяючи підвищенню ефективності та покращенню користувацького досвіду.

Ролі користувачів

Примітка

Розробникам важливо враховувати аспекти безпеки при впровадженні цих ролей, щоб гарантувати, що користувачі не зможуть виконувати дії, які виходять за рамки призначеної їм ролі.

Адміністратори

Адміністратори мають повний контроль над усією системою. Вони можуть отримати доступ до всіх функцій, що надаються адмін-сайтом Django, і керувати ними.

Адміністратори можуть створювати, змінювати або видаляти будь-які записи в додатку.

Можливості

  • Доступ до адміністративного сайту Django

Бібліотекарі

Працівники бібліотеки відповідають за повсякденну роботу в бібліотеці. Вони можуть додавати нові книги до бібліотечної колекції, керувати даними про наявні книги, а також приймати або відхиляти запити від постійних користувачів.

Можливості

  • Управління бібліотечним каталогом

    • Додавати, змінювати або видаляти авторів

    • Додавати, змінювати або видаляти жанри

    • Додавати, змінювати або видаляти дані про книги

  • Переглядати запити на позичення від користувачів

  • Приймати або відхиляти запити на позичення

  • Реєструвати повернені книги та оновлювати їх статус

Звичайний

Постійні зареєстровані користувачі є членами бібліотеки. Вони можуть шукати книги, запитувати їх, а також несуть відповідальність за своєчасне повернення позичених книг.

Можливості

  • Переглядати каталог книг

  • Переглядати деталі книги

  • Шукати книги

  • Робити запит на позичення доступних книжок

  • Перевіряти термін повернення запозичених книжок

  • Повертати запозичені книги

Анонімні

Анонімні користувачі - це відвідувачі, які не ввійшли в систему.

Можливості

  • Переглядати каталог книг

  • Переглядати деталі книги

  • Шукати книги

  • Доступ до сторінок реєстрації або входу

Моделі

Модель авторів

Модель Author фіксує інформацію про особу або групу осіб, відповідальних за створення книги.

Атрибути

Name:

Повне ім’я автора. Не більше 255 символів.

Bio:

Коротка біографія або опис автора.

Модель жанра

Модель 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:

Дата повернення книги та завершення запиту на позику. Необов’язкова, має бути встановлена тільки якщо запит досяг статусу «Завершено».

Відносини

erDiagram USER ||--o{ BORROWREQUEST: "Makes" BOOK ||--o{ BORROWREQUEST: "Is Requested" BOOK }o--|{ GENRE: "May Belong to" BOOK ||--|{ AUTHOR: "Written by" USER |o--|| BOOK: "Borrows (At a given time)" BORROWREQUEST { integer status date requested date approved date due_date date completed } BOOK { string title string isbn text summary bool status string publisher } GENRE { string name } AUTHOR { string name text bio }

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

  1. Запит даних

    • Отримати усі книги з бази даних

  2. Перевірка статусу доступності (візуальна позначка)

    • Для кожної книги визначте її статус доступності. Встановіть прапорець Book.available.

    Примітка

    Користувач все одно може створити запит на позику, незалежно від статусу доступності книги. Це лише візуальна позначка.

Детальний перегляд

Template

Детальний огляд конкретної книги, що містить вичерпну інформацію:

  • Назва: Покажіть назву книги на видному місці.

  • Жанр(и): Перелічіть усі пов’язані жанри (якщо такі є).

  • Автор(и): Перерахуйте всіх асоційованих авторів.

  • ISBN: Міжнародний стандартний номер книги.

  • Дата публікації: Коли вийшла друком книга.

  • Видавець: Назва організації або компанії, відповідальної за публікацію

  • Коротка анотація: Повне резюме або опис книги. книги.

  • Кнопки дій (Тільки для авторизованих користувачів):

    • Кнопка запиту на позику: Якщо користувач не має пов’язаного запиту на позику, він може створити новий.

    • Кнопка Забрати книгу: Якщо запит користувача на позику цієї книги було схвалено, дозвольте користувачеві підтвердити, що він забрав книгу.

View logic

  1. Доступ до деталей книги:

    • Використовуйте ідентифікатор книги (зазвичай первинний ключ), щоб отримати інформацію про неї з бази даних.

  2. Перевірка автентичності користувача:

    • Визначити, чи користувач автентифікований. Якщо так, відобразити відповідні кнопки дій на основі статусу доступності книги та наявних запитів користувача на позику.

  3. Обробка запитів на позику:

    • Якщо авторизований користувач натискає кнопку «Запит на позику»:

      1. Створіть новий запит на позику в моделі BorrowRequest зі статусом «на розгляді».

      2. Оновіть статус книги на «Очікує затвердження».

      3. Перенаправлення користувача на сторінку підтвердження або відображення повідомлення про те, що запит було зроблено.

  4. Опрацювання Позики Книги:

    • Якщо авторизований користувач має схвалений запит на позику і натискає кнопку «Зібрати книгу»:

      1. Оновіть статус книги на «Позичена».

      2. Оновіть статус запиту на позику до «завершено».

      3. Перенаправляйте користувача на сторінку підтвердження або показуйте повідомлення про те, що він забрав книгу.

Примітка

Завжди переконуйтеся, що дії користувача автентифіковані та санкціоновані. Це запобігає несанкціонованим запитам на позику або збору книг. Також подумайте про те, щоб додати обробку помилок для випадків, коли не вдається отримати дані про книгу, або будь-яких інших непередбачуваних проблем.

Управління книгами

Ці перегляди доступні лише для персоналу (бібліотекарів та адміністраторів).

Управління авторами та жанрами

Тільки бібліотекарі та адміністратори можуть додавати, змінювати або видаляти авторів і жанри. Для виконання CRUD-операцій не потрібні додаткові перегляди (окрім адмін-сайту). Бібліотекарі мають доступ до авторів і жанрів через сайт адміністратора. Тільки адміністратори можуть видаляти авторів або жанри.

Створення та оновлення книг

Шаблон повинен містити форму з полями, що відповідають атрибутам книги. Ось основні елементи форми:

Title:

Поле для введення тексту.

Summary:

Текстова область для короткого опису або синопсису.

ISBN:

Поле для введення міжнародного стандартного номера книги.

Available:

Прапорець, що вказує на наявність книги. За замовчуванням стоїть True.

Published date:

Поле для введення дати.

Publisher:

Поле для введення тексту.

Жанри:

Список жанрів з можливістю вибору (наприклад, випадаючий список, прапорці тощо). Він повинен отримувати доступні жанри з бази даних і дозволяти користувачам вибирати нуль або більше жанрів.

Автори:

Список авторів з можливістю вибору (наприклад, випадаючий список, прапорці тощо). Він повинен отримувати доступних авторів з бази даних і дозволяти користувачам вибирати одного або декількох авторів.

View logic

  • Якщо це дія оновлення, попередньо заповніть поля форми існуючими даними книги, отриманими з бази даних.

  • Для створення надайте бібліотекарю порожню форму для заповнення.

  • Переконайтеся, що опублікована дата є логічною (наприклад, не є датою майбутнього).

  • Перевірити необхідні вхідні дані відповідно до загальних правил моделі Book.

  • Якщо перевірка пройшла успішно: збережіть зміни в базі даних; в іншому випадку надайте корисні повідомлення про помилки.

Примітка

Ви МОЖЕТЕ надати механізм (наприклад, модальну форму або форму швидкого введення) для додавання нового жанру або автора, не виходячи зі сторінки форми книги.

Видалення книги

Тільки бібліотекарі та адміністратори мають право виконувати цю дію.

Template

Форма підтвердження видалення з кнопками Подати та Скасувати.

View logic

  • Авторизуйте користувача перед виконанням видалення.

  • Якщо формуляр подано, книга має бути вилучена з бібліотечної колекції.

  • Якщо видалення скасовано, перегляд має бути перенаправлений назад на сторінку детального перегляду книги.

Запити на позики

Цей перегляд полегшує бібліотекарям і адміністраторам управління запитами на позики, допомагаючи оперативно їх обробляти.

Template

Уявіть таблицю, що відображає список запитів на позики. Кожен рядок відображає один запит на позику і включає в себе всі запити:

  • Назва книги: Назва запитуваної книги.

  • Користувач: Ідентифікатор користувача, який ініціював запит.

  • Дата запиту: Дата створення запиту.

  • Дата виконання: - Поле для введення бібліотекарями при затвердженні нових запитів. - Для затверджених запитів відображатиметься дата, встановлена бібліотекарем.

  • Статус: Поточний стан запиту (Новий, Затверджений, Завершений, Відхилений).

  • Кнопка «Затвердити»: Відображається для нових запитів. Перемикає статус на «Затверджено» і заморожує дату виконання.

  • Кнопка «Відхилити»: З’являється для нових запитів. Встановлює статус «Відхилено» і може запитувати причину відхилення.

  • Кнопка «Завершити»: Відображається для затверджених запитів. Позначає запит як завершений.

View Logic

  1. Схвалити запит на позику: - Підтвердити наявність книги. - Змінити статус книги на «Позичена». - Переключіть запит на позику на «Затверджено». - Визначте дату повернення відповідно до побажань бібліотекаря. - Повідомте користувача про схвалення та дату повернення.

  2. Відхилити запит на позику: - Змінити статус запиту на «Відхилено». - За бажанням, запитайте причину відмови у бібліотекаря. - Повідомте користувача про відхилення.

  3. Завершити запит на позику: - Переконайтеся, що книга повернулася. - Оновити статус книги до «Доступна». - Змінити статус запиту на «Виконано». - Якщо потрібно, запишіть будь-які примітки або пошкодження під час повернення.

Примітка

Впровадження нагадувань про прострочені запити може функціонувати як система оповіщення як для бібліотекаря, так і для користувача.