From b8958c150bbb02213f3124146fb15ae8fb0c58bd Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Fri, 22 Dec 2023 21:02:59 +0200 Subject: [PATCH 1/7] Move submodules with specifications to "spec" directory --- .gitmodules | 4 ++-- src/{appx => spec}/blog | 0 src/{appx => spec}/libms | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename src/{appx => spec}/blog (100%) rename src/{appx => spec}/libms (100%) diff --git a/.gitmodules b/.gitmodules index 14e078726..6003f9eed 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,10 +2,10 @@ path = problem-sets url = git@github.com:edu-python-course/problem-sets [submodule "src/appx/blog"] - path = src/appx/blog + path = src/spec/blog url = git@github.com:edu-python-course/blog-spec [submodule "src/appx/libms"] - path = src/appx/libms + path = src/spec/libms url = git@github.com:edu-python-course/libms-spec.git [submodule "src/spec/giver"] path = src/spec/giver diff --git a/src/appx/blog b/src/spec/blog similarity index 100% rename from src/appx/blog rename to src/spec/blog diff --git a/src/appx/libms b/src/spec/libms similarity index 100% rename from src/appx/libms rename to src/spec/libms From fa7bf0ec1e08edb5deff7074b1437fa2ee25847b Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Fri, 22 Dec 2023 21:03:38 +0200 Subject: [PATCH 2/7] Fix indentation in appx toctree (tabs vs spaces) --- src/index.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.txt b/src/index.txt index 1b667ae38..fabcfb1d1 100644 --- a/src/index.txt +++ b/src/index.txt @@ -22,7 +22,7 @@ .. toctree:: :name: appx :caption: Additional materials - :maxdepth: 1 + :maxdepth: 1 appx/software_list appx/code_edit From 1b239333ae236d1aef4891c75ef224675067660e Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Fri, 22 Dec 2023 21:12:30 +0200 Subject: [PATCH 3/7] Update specifications submodules --- src/index.txt | 4 ++-- src/spec/blog | 2 +- src/spec/libms | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/index.txt b/src/index.txt index fabcfb1d1..d654b9789 100644 --- a/src/index.txt +++ b/src/index.txt @@ -33,8 +33,8 @@ appx/assignments appx/conv_store appx/wtk - appx/blog/spec - appx/libms/spec + spec/blog/index + spec/libms/index .. rubric:: References diff --git a/src/spec/blog b/src/spec/blog index 6bd83e049..6e7cbc29b 160000 --- a/src/spec/blog +++ b/src/spec/blog @@ -1 +1 @@ -Subproject commit 6bd83e049ab696587fd5f53a8101e3a66575b006 +Subproject commit 6e7cbc29bd4fbb0155df0104111de26cdc1681cd diff --git a/src/spec/libms b/src/spec/libms index a7b79a2c2..a1762d276 160000 --- a/src/spec/libms +++ b/src/spec/libms @@ -1 +1 @@ -Subproject commit a7b79a2c262c0506f6577e1230c01264d1777060 +Subproject commit a1762d276c5ef518e6febee266bfb215bae877c9 From c12cbc34be6263f620d55b18979ab85c6af8063f Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Fri, 22 Dec 2023 21:20:12 +0200 Subject: [PATCH 4/7] Move specifications translations according --- .../{appx/blog/spec.po => spec/blog/index.po} | 410 ++++++++--------- .../libms/spec.po => spec/libms/index.po} | 426 +++++++++--------- 2 files changed, 418 insertions(+), 418 deletions(-) rename src/_locales/uk/LC_MESSAGES/{appx/blog/spec.po => spec/blog/index.po} (86%) rename src/_locales/uk/LC_MESSAGES/{appx/libms/spec.po => spec/libms/index.po} (84%) diff --git a/src/_locales/uk/LC_MESSAGES/appx/blog/spec.po b/src/_locales/uk/LC_MESSAGES/spec/blog/index.po similarity index 86% rename from src/_locales/uk/LC_MESSAGES/appx/blog/spec.po rename to src/_locales/uk/LC_MESSAGES/spec/blog/index.po index 1a54bad42..64694f331 100644 --- a/src/_locales/uk/LC_MESSAGES/appx/blog/spec.po +++ b/src/_locales/uk/LC_MESSAGES/spec/blog/index.po @@ -19,11 +19,11 @@ msgstr "" "Generated-By: Babel 2.13.1\n" "X-Generator: Poedit 3.4.1\n" -#: ../../src/appx/blog/spec.rst:10 +#: ../../src/spec/blog/spec.rst:10 msgid "Blog Site" msgstr "Сайт Блогу" -#: ../../src/appx/blog/spec.rst:12 +#: ../../src/spec/blog/spec.rst:12 msgid "" "The project aims to develop a robust and user-friendly web application using " "the Django framework. The primary objective is to create a blogging platform " @@ -39,15 +39,15 @@ msgstr "" "форматування своїх статей, а також забезпечить безперешкодний досвід читання " "для відвідувачів." -#: ../../src/appx/blog/spec.rst:19 +#: ../../src/spec/blog/spec.rst:19 msgid "**Key Features**" msgstr "**Основні функції**" -#: ../../src/appx/blog/spec.rst:22 +#: ../../src/spec/blog/spec.rst:22 msgid "User Registration and Authentication" msgstr "Реєстрація та Аутентифікація Користувачів" -#: ../../src/appx/blog/spec.rst:23 +#: ../../src/spec/blog/spec.rst:23 msgid "" "The application will provide user registration and authentication " "functionality, allowing individuals to create accounts, log in, and manage " @@ -60,11 +60,11 @@ msgstr "" "мати персоналізовані облікові записи та зберігати право власності на їхні " "опубліковані статті." -#: ../../src/appx/blog/spec.rst:30 +#: ../../src/spec/blog/spec.rst:30 msgid "Article Management" msgstr "Керування Статтями" -#: ../../src/appx/blog/spec.rst:31 +#: ../../src/spec/blog/spec.rst:31 msgid "" "Authors will have the ability to create, edit, and delete articles within " "the application. The system will offer a user-friendly editor. Additionally, " @@ -75,11 +75,11 @@ msgstr "" "рамках додатка. Система надасть зручний редактор. Крім того, автори зможуть " "категоризувати статті, присвоюючи їм відповідні теми." -#: ../../src/appx/blog/spec.rst:37 +#: ../../src/spec/blog/spec.rst:37 msgid "Topic Subscription:" msgstr "Підписка на Теми:" -#: ../../src/appx/blog/spec.rst:38 +#: ../../src/spec/blog/spec.rst:38 msgid "" "The application will include a subscription feature that allows users to " "subscribe to topics of interest. By subscribing to specific topics, users " @@ -91,7 +91,7 @@ msgstr "" "рамках додатка. Система надасть зручний редактор. Крім того, автори зможуть " "категоризувати статті, присвоюючи їм відповідні теми." -#: ../../src/appx/blog/spec.rst:45 +#: ../../src/spec/blog/spec.rst:45 msgid "" "Overall, the project aims to deliver an efficient blogging platform that " "caters to both authors and readers. By providing a seamless user experience " @@ -107,17 +107,17 @@ msgstr "" "залученість користувачів та забезпечить, що читачі будуть інформовані про " "найцікавіші для них теми." -#: ../../src/appx/blog/spec.rst:52 +#: ../../src/spec/blog/spec.rst:52 msgid "" "Here is a starter repository template, that may helps: `Starter template`_." msgstr "" "Ось шаблон стартового репозиторію, який може допомогти: `Starter template`_." -#: ../../src/appx/blog/spec.rst:55 +#: ../../src/spec/blog/spec.rst:55 msgid "Challenge: Functional views" msgstr "Виклик: Функціональні представлення" -#: ../../src/appx/blog/spec.rst:57 +#: ../../src/spec/blog/spec.rst:57 msgid "" "It's ok not to return **actual** content for now. Just ensure all the routes " "are available and provide correct data. Use anything you like to return " @@ -127,7 +127,7 @@ msgstr "" "всі маршрути доступні та надають правильні дані. Використовуйте будь-що, що " "ви хочете повернути в HTTP-відповіді." -#: ../../src/appx/blog/spec.rst:61 +#: ../../src/spec/blog/spec.rst:61 msgid "" "``/about/``: Provides a regular text for a user, describing the " "functionalities of the django site." @@ -135,7 +135,7 @@ msgstr "" "``/about/``: надає звичайний текст для користувача, що описує функції сайту " "django." -#: ../../src/appx/blog/spec.rst:63 +#: ../../src/spec/blog/spec.rst:63 msgid "" "``/``: A site's homepage. This will contain a list of blogs published via " "the django site." @@ -143,7 +143,7 @@ msgstr "" "``/``: Головна сторінка сайту. Тут буде перелік блогів, опублікованих через " "сайт Django." -#: ../../src/appx/blog/spec.rst:65 +#: ../../src/spec/blog/spec.rst:65 msgid "" "``/
/``: A single article detail view. The URL contains dynamic part " "in it. This will be used to fetch a single article from the database." @@ -152,92 +152,92 @@ msgstr "" "частину. Вона буде використовуватися для отримання однієї статті з бази " "даних." -#: ../../src/appx/blog/spec.rst:68 +#: ../../src/spec/blog/spec.rst:68 msgid "" "``/
/comment/``: This view will be used to add comments to a article." msgstr "" "``/
/comment/``: Це представлення буде використовуватися для " "додавання коментарів до статті." -#: ../../src/appx/blog/spec.rst:70 +#: ../../src/spec/blog/spec.rst:70 msgid "``/create/``: A article creation form." msgstr "``/create/``: Форма створення статті." -#: ../../src/appx/blog/spec.rst:71 +#: ../../src/spec/blog/spec.rst:71 msgid "``/
/update/``: A view to update an existing article data." msgstr "" "``/
/update/``: Представлення для оновлення існуючих даних статті." -#: ../../src/appx/blog/spec.rst:72 +#: ../../src/spec/blog/spec.rst:72 msgid "``/
/delete/``: A view to confirm article deletion." msgstr "" "``/
/delete/``: Представлення для підтвердження видалення статті." -#: ../../src/appx/blog/spec.rst:73 +#: ../../src/spec/blog/spec.rst:73 msgid "``/topics/``: A list of topics available on the site." msgstr "``/topics/``: Перелік доступних тем на сайті." -#: ../../src/appx/blog/spec.rst:74 +#: ../../src/spec/blog/spec.rst:74 msgid "" "``/topics//add/``: Add the selected topic to preferred topics list." msgstr "``/topics//add/``: Додати обрану тему до списку обраних тем." -#: ../../src/appx/blog/spec.rst:75 +#: ../../src/spec/blog/spec.rst:75 msgid "``/topics//remove/``: Removes the selected topic from preferred." msgstr "``/topics//remove/``: Видаляє вибрану тему з обраних." -#: ../../src/appx/blog/spec.rst:76 +#: ../../src/spec/blog/spec.rst:76 msgid "``/topics//subscribe/``: A view to subscribe for a topic." msgstr "``/topics//subscribe/``: Представлення для підписки на тему." -#: ../../src/appx/blog/spec.rst:77 +#: ../../src/spec/blog/spec.rst:77 msgid "``/topics//unsubscribe/``: A view to unsubscribe from a topic." msgstr "``/topics//unsubscribe/``: Представлення для відписки від теми." -#: ../../src/appx/blog/spec.rst:78 +#: ../../src/spec/blog/spec.rst:78 msgid "``/profile//``: A site user's personal page." msgstr "``/profile//``: Особиста сторінка користувача сайту." -#: ../../src/appx/blog/spec.rst:79 +#: ../../src/spec/blog/spec.rst:79 msgid "" "``/set-password/``: This route will be used to change users' credential data." msgstr "" "``/set-password/``: Цей маршрут буде використовуватися для зміни облікових " "даних користувачів." -#: ../../src/appx/blog/spec.rst:81 +#: ../../src/spec/blog/spec.rst:81 msgid "``/set-userdata/``: This route will be user to change users' data." msgstr "" "``/set-userdata/``: Цей маршрут буде використовуватися для зміни даних " "користувачів." -#: ../../src/appx/blog/spec.rst:82 +#: ../../src/spec/blog/spec.rst:82 msgid "``/deactivate/``: Account deactivation (deletion) view." msgstr "" "``/deactivate/``: Представлення для деактивації облікового запису " "(видалення)." -#: ../../src/appx/blog/spec.rst:83 +#: ../../src/spec/blog/spec.rst:83 msgid "``/register/``: This view contains a user registration form." msgstr "``/register/``: Сторінка з формою для реєстрації нового користувача." -#: ../../src/appx/blog/spec.rst:84 +#: ../../src/spec/blog/spec.rst:84 msgid "``/login/``: This view contains a login form." msgstr "``/login/``: Сторінка з формою для логіна." -#: ../../src/appx/blog/spec.rst:85 +#: ../../src/spec/blog/spec.rst:85 msgid "" "``/logout/``: Logout page. This view should redirect user back to homepage." msgstr "" "``/logout/``: Логаут. Має перенаправляти користувача назад на домашню " "сторінку.." -#: ../../src/appx/blog/spec.rst:89 ../../src/appx/blog/spec.rst:201 -#: ../../src/appx/blog/spec.rst:231 ../../src/appx/blog/spec.rst:409 +#: ../../src/spec/blog/spec.rst:89 ../../src/spec/blog/spec.rst:201 +#: ../../src/spec/blog/spec.rst:231 ../../src/spec/blog/spec.rst:409 msgid "Optional task(s)" msgstr "Додаткові завдання" -#: ../../src/appx/blog/spec.rst:91 +#: ../../src/spec/blog/spec.rst:91 msgid "" "``/archive///``: This view provides a list of articles " "published on a specified month of a specified year. This view should apply " @@ -254,11 +254,11 @@ msgstr "" "обмежений [1..12], ведучий нуль може бути пропущений. Приклади правильних " "URL-адрес:" -#: ../../src/appx/blog/spec.rst:105 +#: ../../src/spec/blog/spec.rst:105 msgid "Challenge: Data models" msgstr "Завдання: моделі даних" -#: ../../src/appx/blog/spec.rst:108 +#: ../../src/spec/blog/spec.rst:108 msgid "" "Django admin may be used to create some dummy data. To gather access to " "admin section you need to create a superuser. The easiest way to do that is " @@ -269,43 +269,43 @@ msgstr "" "суперкористувача. Найпростіший спосіб зробити це - використовувати команду " "Django:" -#: ../../src/appx/blog/spec.rst:117 ../../src/appx/blog/spec.rst:218 +#: ../../src/spec/blog/spec.rst:117 ../../src/spec/blog/spec.rst:218 msgid "General" msgstr "Основне" -#: ../../src/appx/blog/spec.rst:118 +#: ../../src/spec/blog/spec.rst:118 msgid "Each model will be registered for admin site." msgstr "Кожна модель буде зареєстрована на сторінці адміністрації сайту." -#: ../../src/appx/blog/spec.rst:121 ../../src/appx/blog/spec.rst:456 +#: ../../src/spec/blog/spec.rst:121 ../../src/spec/blog/spec.rst:456 msgid "Article topic" msgstr "Тема статті" -#: ../../src/appx/blog/spec.rst:122 +#: ../../src/spec/blog/spec.rst:122 msgid "This is a simple model, that contains information about topic:" msgstr "Ось проста модель, що містить інформацію про тему:" -#: ../../src/appx/blog/spec.rst:124 +#: ../../src/spec/blog/spec.rst:124 msgid "topic title (unique value, 64 characters or fewer)" msgstr "назва теми (унікальне значення, не більше 64 символів)" -#: ../../src/appx/blog/spec.rst:125 +#: ../../src/spec/blog/spec.rst:125 msgid "topic short description (255 characters or fewer)" msgstr "короткий опис теми (не більше 255 символів)" -#: ../../src/appx/blog/spec.rst:128 ../../src/appx/blog/spec.rst:470 +#: ../../src/spec/blog/spec.rst:128 ../../src/spec/blog/spec.rst:470 msgid "Article" msgstr "Стаття" -#: ../../src/appx/blog/spec.rst:129 +#: ../../src/spec/blog/spec.rst:129 msgid "Article requires title (255 characters or fewer)." msgstr "Стаття вимагає наявності заголовка (не більше 255 символів)." -#: ../../src/appx/blog/spec.rst:130 +#: ../../src/spec/blog/spec.rst:130 msgid "Article requires content (at least 255 characters)." msgstr "Стаття вимагає наявності змісту (принаймні 255 символів)." -#: ../../src/appx/blog/spec.rst:131 +#: ../../src/spec/blog/spec.rst:131 msgid "" "Creation date should be autogenerated at article creation, and would never " "be updated." @@ -313,27 +313,27 @@ msgstr "" "Дата створення буде автоматично генеруватися при створенні статті і не буде " "оновлюватися пізніше." -#: ../../src/appx/blog/spec.rst:133 +#: ../../src/spec/blog/spec.rst:133 msgid "Updated date will be update at each article save." msgstr "Дата оновлення буде оновлюватися при кожному збереженні статті." -#: ../../src/appx/blog/spec.rst:136 ../../src/appx/blog/spec.rst:463 +#: ../../src/spec/blog/spec.rst:136 ../../src/spec/blog/spec.rst:463 msgid "Article comment" msgstr "Коментар до статті" -#: ../../src/appx/blog/spec.rst:137 +#: ../../src/spec/blog/spec.rst:137 msgid "Comment requires creation date (autogenerated)." msgstr "Коментар вимагає наявності дати створення (автоматично генерується)." -#: ../../src/appx/blog/spec.rst:138 +#: ../../src/spec/blog/spec.rst:138 msgid "Comment requires message text." msgstr "Коментар вимагає наявності тексту повідомлення." -#: ../../src/appx/blog/spec.rst:141 +#: ../../src/spec/blog/spec.rst:141 msgid "Relationships" msgstr "Відносини" -#: ../../src/appx/blog/spec.rst:143 +#: ../../src/spec/blog/spec.rst:143 msgid "" "Standard Django user model **will be** used for now. To apply model " "reference pass ``\"auth.User\"`` as related model. Users can be created via " @@ -344,11 +344,11 @@ msgstr "" "модель. Користувачі можуть бути створені через адміністративну сторінку. Ви " "також можете посилатися на ту саму модель, як показано нижче:" -#: ../../src/appx/blog/spec.rst:156 +#: ../../src/spec/blog/spec.rst:156 msgid "``article`` and ``topics`` have *many-to-many* relationship." msgstr "``article`` та ``topics`` мають *багато-до-багатьох* відношення." -#: ../../src/appx/blog/spec.rst:157 +#: ../../src/spec/blog/spec.rst:157 msgid "" "``article`` and ``user`` have *one-to-many* relationship. A article can have " "**only one** author, but users can create as many articles as they want." @@ -357,7 +357,7 @@ msgstr "" "бути **лише один** автор, але користувачі можуть створювати стільки статей, " "скільки їм потрібно." -#: ../../src/appx/blog/spec.rst:160 +#: ../../src/spec/blog/spec.rst:160 msgid "" "``article`` and ``comment`` have *one-to-many* relationship. A article may " "be a container for many comments, but a comment is related to a single " @@ -367,7 +367,7 @@ msgstr "" "бути контейнером для багатьох коментарів, але коментар пов'язаний лише з " "однією статтею." -#: ../../src/appx/blog/spec.rst:163 +#: ../../src/spec/blog/spec.rst:163 msgid "" "``comment`` and ``user`` have *one-to-many* relationship. It's similar to " "*article - user* relationship." @@ -375,7 +375,7 @@ msgstr "" "``comment`` та ``user`` мають *один-до-багатьох* відношення. Це схоже на " "відношення *стаття - користувач*." -#: ../../src/appx/blog/spec.rst:165 +#: ../../src/spec/blog/spec.rst:165 msgid "" "``topic`` and ``user`` use *many-to-many* relationship. A single user can " "prefer none or as many topics as needed and vice versa. This relationship " @@ -394,15 +394,15 @@ msgstr "" "список статей для користувача, а *notify* відповідає за розсилку новин для " "користувача." -#: ../../src/appx/blog/spec.rst:176 +#: ../../src/spec/blog/spec.rst:176 msgid "UML diagram" msgstr "UML діаграми" -#: ../../src/appx/blog/spec.rst:181 +#: ../../src/spec/blog/spec.rst:181 msgid "Challenge: ORM" msgstr "Завдання: ORM" -#: ../../src/appx/blog/spec.rst:183 +#: ../../src/spec/blog/spec.rst:183 msgid "" "Update existing views to represent entities that are actually stored inside " "the project's database." @@ -410,20 +410,20 @@ msgstr "" "Оновіть існуючі подання, щоб представити сутності, які фактично зберігаються " "в базі даних проекту." -#: ../../src/appx/blog/spec.rst:186 +#: ../../src/spec/blog/spec.rst:186 msgid "``/``: should represent a list of existing articles." msgstr "``/``: повинен представляти список існуючих статей." -#: ../../src/appx/blog/spec.rst:187 +#: ../../src/spec/blog/spec.rst:187 msgid "``/
/``: should represent a single existing article." msgstr "``/
/``: повинен представляти окрему існуючу статтю." -#: ../../src/appx/blog/spec.rst:188 +#: ../../src/spec/blog/spec.rst:188 msgid "Detail view should obtain a list of article related comments." msgstr "" "Вью для перегляду окремої статті повинен отримувати зв'язані коментарі." -#: ../../src/appx/blog/spec.rst:189 +#: ../../src/spec/blog/spec.rst:189 msgid "" "``/profile//``: should contain information about user and a " "list of articles authored by this user." @@ -431,7 +431,7 @@ msgstr "" "``/profile//``: повинен містити інформацію про користувача та " "список статей, написаних цим користувачем." -#: ../../src/appx/blog/spec.rst:191 +#: ../../src/spec/blog/spec.rst:191 msgid "" "All views related to a single entity (*detail*, *update*, *delete*, " "*profile*) should raise ``Http404`` in case entity could not be fetched." @@ -440,7 +440,7 @@ msgstr "" "*видалення*, *профіль*) мають викликати ``Http404`` у випадку, якщо сутність " "не вдалося отримати." -#: ../../src/appx/blog/spec.rst:196 +#: ../../src/spec/blog/spec.rst:196 msgid "" "It's common to store dedicated functions/classes that supports some specific " "business logic in a separate module called ``services.py`` or ``utils.py`` " @@ -450,7 +450,7 @@ msgstr "" "розумно зберігати в окремому модулі з назвою ``services.py`` або ``utils." "py`` всередині директорії додатку." -#: ../../src/appx/blog/spec.rst:203 +#: ../../src/spec/blog/spec.rst:203 msgid "" "Create a service to fetch articles, ordered by a specified user preferences. " "This means, topics preferred by a user affects articles orders. Queryset " @@ -462,25 +462,25 @@ msgstr "" "зазначених у статті співпадає з вподобаннями користувача, тим ближче вона до " "початку видачі." -#: ../../src/appx/blog/spec.rst:209 +#: ../../src/spec/blog/spec.rst:209 msgid "Challenge: Templates" msgstr "Завдання: Шаблони" -#: ../../src/appx/blog/spec.rst:212 +#: ../../src/spec/blog/spec.rst:212 msgid "Helpful link: `Bootstrap template`_" msgstr "Корисне посилання: `Bootstrap template`_" -#: ../../src/appx/blog/spec.rst:215 +#: ../../src/spec/blog/spec.rst:215 msgid "Links related to user data **may be** placeholders for now." msgstr "" "Посилання, що стосуються даних користувача, **можуть бути** плейсхолдерами " "наразі." -#: ../../src/appx/blog/spec.rst:219 +#: ../../src/spec/blog/spec.rst:219 msgid "**All** templates should be inherited from the ``base.html`` template." msgstr "**Усі** шаблони повинні успадковувати ``base.html`` шаблон." -#: ../../src/appx/blog/spec.rst:220 +#: ../../src/spec/blog/spec.rst:220 msgid "" "Each page has a descriptive title HTML tag, which included ``| Blog`` " "suffix, e.g. \"Articles | Blogs\", \"Sample | Blog\", \"Login | Blog\" etc." @@ -488,13 +488,13 @@ msgstr "" "Кожна сторінка має описовий тег HTML заголовка, включаючи суфікс ``| Blog``, " "наприклад, \"Articles | Blogs\", \"Sample | Blog\", \"Login | Blog\" і т.д." -#: ../../src/appx/blog/spec.rst:222 +#: ../../src/spec/blog/spec.rst:222 msgid "Each page should contain a link to homepage (``/`` URL route)." msgstr "" "Кожна сторінка повинна містити посилання на головну сторінку (шлях URL ``/" "``)." -#: ../../src/appx/blog/spec.rst:223 +#: ../../src/spec/blog/spec.rst:223 msgid "" "Each page contains a list of registered topics. Each view of this kind " "filters only articles of a relevant topic. This should be implemented with a " @@ -504,87 +504,87 @@ msgstr "" "типу фільтрує лише статті відповідної теми. Це слід реалізувати за допомогою " "власного обробника контексту шаблону (template context processor)." -#: ../../src/appx/blog/spec.rst:226 +#: ../../src/spec/blog/spec.rst:226 msgid "Replace content block for *about* page with some static content." msgstr "" "Замініть блок вмісту (content block) для сторінки *about* на деякий " "статичний вміст." -#: ../../src/appx/blog/spec.rst:227 +#: ../../src/spec/blog/spec.rst:227 msgid "" "Application-level templates should be located within appropriate " "applications." msgstr "Шаблони рівня застосунків розташовуватися у відповідних застосунках." -#: ../../src/appx/blog/spec.rst:233 +#: ../../src/spec/blog/spec.rst:233 msgid "" "Each page should contain a list of links to archive views for the last year." msgstr "" "Кожна сторінка має містити список посилань на перегляди архіву за останній " "рік." -#: ../../src/appx/blog/spec.rst:235 +#: ../../src/spec/blog/spec.rst:235 msgid "Each page should contain an inclusion-block(s) with following links:" msgstr "Кожна сторінка повинна містити блок(и) включення з такими посиланнями:" -#: ../../src/appx/blog/spec.rst:237 +#: ../../src/spec/blog/spec.rst:237 msgid "``/registration/``: new user registration form" msgstr "``/register/``: форма реєстрації нового користувача" -#: ../../src/appx/blog/spec.rst:238 +#: ../../src/spec/blog/spec.rst:238 msgid "``/login/``: user login form" msgstr "``/login/``: форма логіна користувача" -#: ../../src/appx/blog/spec.rst:239 +#: ../../src/spec/blog/spec.rst:239 msgid "``/create/``: article creation page" msgstr "``/create/``: форма створення статті" -#: ../../src/appx/blog/spec.rst:242 +#: ../../src/spec/blog/spec.rst:242 msgid "Articles list" msgstr "Список статей" -#: ../../src/appx/blog/spec.rst:243 +#: ../../src/spec/blog/spec.rst:243 msgid "Main page contains a list of published articles." msgstr "Головна сторінка містить список опублікованих статей." -#: ../../src/appx/blog/spec.rst:244 +#: ../../src/spec/blog/spec.rst:244 msgid "Each article entity is rendered using a custom template tag." msgstr "" "Кожен елемент статті відображається за допомогою власного шаблонного тегу." -#: ../../src/appx/blog/spec.rst:245 +#: ../../src/spec/blog/spec.rst:245 msgid "``article`` template tag renders information about a article object:" msgstr "Шаблонний тег ``article`` відображає інформацію про об'єкт статті:" -#: ../../src/appx/blog/spec.rst:247 +#: ../../src/spec/blog/spec.rst:247 msgid "article title" msgstr "заголовок статті" -#: ../../src/appx/blog/spec.rst:248 +#: ../../src/spec/blog/spec.rst:248 msgid "article content (trimmed to ~50 characters)" msgstr "зміст статті (обрізаний до ~50 символів)" -#: ../../src/appx/blog/spec.rst:249 +#: ../../src/spec/blog/spec.rst:249 msgid "article creation date" msgstr "дата створення статті" -#: ../../src/appx/blog/spec.rst:250 +#: ../../src/spec/blog/spec.rst:250 msgid "related topics (3 topics or fewer)" msgstr "пов'язані теми (3 або менше)" -#: ../../src/appx/blog/spec.rst:251 +#: ../../src/spec/blog/spec.rst:251 msgid "number of related comments" msgstr "кількість коментарів до статті" -#: ../../src/appx/blog/spec.rst:258 +#: ../../src/spec/blog/spec.rst:258 msgid "Article details" msgstr "Деталі статті" -#: ../../src/appx/blog/spec.rst:260 +#: ../../src/spec/blog/spec.rst:260 msgid "Article update and deletion views **would not** affect data for now." msgstr "Оновлення та видалення статей **не будуть** впливати на дані наразі." -#: ../../src/appx/blog/spec.rst:262 +#: ../../src/spec/blog/spec.rst:262 msgid "" "A article detail page contains links to **update** or **delete** current " "article." @@ -592,71 +592,71 @@ msgstr "" "На сторінці деталей статті мають бути посилання на **оновлення** або " "**видалення** поточної статті." -#: ../../src/appx/blog/spec.rst:264 +#: ../../src/spec/blog/spec.rst:264 msgid "Page provides information about article:" msgstr "Сторінка надає інформацію про статтю:" -#: ../../src/appx/blog/spec.rst:266 +#: ../../src/spec/blog/spec.rst:266 msgid "Article title" msgstr "Заголовок статті" -#: ../../src/appx/blog/spec.rst:267 +#: ../../src/spec/blog/spec.rst:267 msgid "Creation date" msgstr "Дата створення" -#: ../../src/appx/blog/spec.rst:268 ../../src/appx/blog/spec.rst:275 +#: ../../src/spec/blog/spec.rst:268 ../../src/spec/blog/spec.rst:275 msgid "Author name" msgstr "Ім'я автора" -#: ../../src/appx/blog/spec.rst:269 +#: ../../src/spec/blog/spec.rst:269 msgid "Related topics" msgstr "Пов'язані теми" -#: ../../src/appx/blog/spec.rst:270 +#: ../../src/spec/blog/spec.rst:270 msgid "Article content" msgstr "Вміст статті" -#: ../../src/appx/blog/spec.rst:272 +#: ../../src/spec/blog/spec.rst:272 msgid "Page contains a list of related comments." msgstr "Сторінка містить список пов'язаних коментарів." -#: ../../src/appx/blog/spec.rst:273 +#: ../../src/spec/blog/spec.rst:273 msgid "Each comment contains:" msgstr "Кожен коментар містить:" -#: ../../src/appx/blog/spec.rst:276 +#: ../../src/spec/blog/spec.rst:276 msgid "Comment creation time" msgstr "Час створення коментаря" -#: ../../src/appx/blog/spec.rst:277 +#: ../../src/spec/blog/spec.rst:277 msgid "Comment message" msgstr "Текст комментаря" -#: ../../src/appx/blog/spec.rst:280 +#: ../../src/spec/blog/spec.rst:280 msgid "Profile page" msgstr "Строніка профілю" -#: ../../src/appx/blog/spec.rst:281 +#: ../../src/spec/blog/spec.rst:281 msgid "Author page contains information about author:" msgstr "Сторінка автора містить інформацію про автора:" -#: ../../src/appx/blog/spec.rst:283 +#: ../../src/spec/blog/spec.rst:283 msgid "First name" msgstr "Ім'я" -#: ../../src/appx/blog/spec.rst:284 +#: ../../src/spec/blog/spec.rst:284 msgid "Last name" msgstr "Прізвище" -#: ../../src/appx/blog/spec.rst:286 +#: ../../src/spec/blog/spec.rst:286 msgid "Add more information, if needed." msgstr "Додайте більше інформації за бажанням." -#: ../../src/appx/blog/spec.rst:288 +#: ../../src/spec/blog/spec.rst:288 msgid "Author page contains a list of articles created by this author." msgstr "Сторінка автора містить список статей, створених цим автором." -#: ../../src/appx/blog/spec.rst:289 +#: ../../src/spec/blog/spec.rst:289 msgid "" "Author page contains buttons/links to change user data and password or " "deactivate a user's account." @@ -664,11 +664,11 @@ msgstr "" "Сторінка автора містить кнопки/посилання для зміни користувача та пароля або " "деактивації облікового запису користувача." -#: ../../src/appx/blog/spec.rst:293 +#: ../../src/spec/blog/spec.rst:293 msgid "Forms" msgstr "Форми" -#: ../../src/appx/blog/spec.rst:295 +#: ../../src/spec/blog/spec.rst:295 msgid "" "There is **no need** to add actual forms now. They will be generated by " "Django. This section describes the final view of these pages. It's ok just " @@ -678,7 +678,7 @@ msgstr "" "Django. Цей розділ описує кінцевий вигляд цих сторінок. Для майбутнього " "використання достатньо створити окремі шаблони." -#: ../../src/appx/blog/spec.rst:299 +#: ../../src/spec/blog/spec.rst:299 msgid "" "``/register/`` page contains a new user registration form. It should take " "inputs from the user:" @@ -686,23 +686,23 @@ msgstr "" "Сторінка ``/register/`` містить форму реєстрації нового користувача. Вона " "повинна отримувати введені дані від користувача:" -#: ../../src/appx/blog/spec.rst:302 ../../src/appx/blog/spec.rst:310 +#: ../../src/spec/blog/spec.rst:302 ../../src/spec/blog/spec.rst:310 msgid "username" msgstr "username" -#: ../../src/appx/blog/spec.rst:303 +#: ../../src/spec/blog/spec.rst:303 msgid "email" msgstr "email" -#: ../../src/appx/blog/spec.rst:304 ../../src/appx/blog/spec.rst:311 +#: ../../src/spec/blog/spec.rst:304 ../../src/spec/blog/spec.rst:311 msgid "password" msgstr "password" -#: ../../src/appx/blog/spec.rst:305 ../../src/appx/blog/spec.rst:324 +#: ../../src/spec/blog/spec.rst:305 ../../src/spec/blog/spec.rst:324 msgid "confirm password" msgstr "confirm password" -#: ../../src/appx/blog/spec.rst:307 +#: ../../src/spec/blog/spec.rst:307 msgid "" "``/login/`` page contains a user login form. It should take the inputs from " "the user:" @@ -710,7 +710,7 @@ msgstr "" "Сторінка ``/login/`` містить форму входу користувача. Вона повинна " "отримувати введені дані від користувача:" -#: ../../src/appx/blog/spec.rst:313 +#: ../../src/spec/blog/spec.rst:313 msgid "" "``/create/`` and ``/
/update/`` pages contain a form to collect a " "article's data:" @@ -718,33 +718,33 @@ msgstr "" "Сторінки ``/create/`` та ``/
/update/`` містять форму для збору " "даних статті:" -#: ../../src/appx/blog/spec.rst:316 +#: ../../src/spec/blog/spec.rst:316 msgid "title" msgstr "title" -#: ../../src/appx/blog/spec.rst:317 +#: ../../src/spec/blog/spec.rst:317 msgid "relevant topics" msgstr "відповідні теми" -#: ../../src/appx/blog/spec.rst:318 +#: ../../src/spec/blog/spec.rst:318 msgid "content" msgstr "content" -#: ../../src/appx/blog/spec.rst:320 +#: ../../src/spec/blog/spec.rst:320 msgid "``/
/delete`` page contains a simple delete confirmation form." msgstr "" "Сторінка ``/
/delete`` містить просту форму для підтвердження " "видалення." -#: ../../src/appx/blog/spec.rst:321 +#: ../../src/spec/blog/spec.rst:321 msgid "Change password form has two fields:" msgstr "Форма зміни пароля має два поля:" -#: ../../src/appx/blog/spec.rst:323 +#: ../../src/spec/blog/spec.rst:323 msgid "new password" msgstr "new password" -#: ../../src/appx/blog/spec.rst:326 +#: ../../src/spec/blog/spec.rst:326 msgid "" "Change user's data form collects all information, that can be changed, e.g. " "``username``, ``first name``, ``last name`` etc." @@ -752,7 +752,7 @@ msgstr "" "Форма зміни даних користувача збирає всю інформацію, яка може бути змінена, " "наприклад, ``username``, ``first name``, ``last name`` та інше." -#: ../../src/appx/blog/spec.rst:328 +#: ../../src/spec/blog/spec.rst:328 msgid "" "User preferences page contains a list of available topics. User can mark " "some topics as preferred. Also for preferred topics an option to *subscribe* " @@ -762,48 +762,48 @@ msgstr "" "може відмітити деякі теми як пріоритетні (переваги). Також для пріоритетних " "тем стає доступною опція *підписки* на розсилку новинних листів." -#: ../../src/appx/blog/spec.rst:333 +#: ../../src/spec/blog/spec.rst:333 msgid "Challenge: Articles' slugs" msgstr "Виклик: Slug-и статей" -#: ../../src/appx/blog/spec.rst:336 +#: ../../src/spec/blog/spec.rst:336 msgid "This is an optional challenge in addition to:" msgstr "Це додатковий виклик у додаток до:" -#: ../../src/appx/blog/spec.rst:338 +#: ../../src/spec/blog/spec.rst:338 msgid "`Challenge: Functional views`_" msgstr "`Challenge: Functional views`_" -#: ../../src/appx/blog/spec.rst:339 +#: ../../src/spec/blog/spec.rst:339 msgid "`Challenge: Templates`_" msgstr "`Challenge: Templates`_" -#: ../../src/appx/blog/spec.rst:340 +#: ../../src/spec/blog/spec.rst:340 msgid "`Challenge: Data models`_" msgstr "`Challenge: Data models`_" -#: ../../src/appx/blog/spec.rst:341 +#: ../../src/spec/blog/spec.rst:341 msgid "`Challenge: ORM`_" msgstr "`Challenge: ORM`_" -#: ../../src/appx/blog/spec.rst:343 +#: ../../src/spec/blog/spec.rst:343 msgid "Update ``Article`` model with ``slug`` field. The slug value is:" msgstr "" "Оновіть модель ``Article``, додавши поле ``slug``. Значення slug поля є:" -#: ../../src/appx/blog/spec.rst:345 +#: ../../src/spec/blog/spec.rst:345 msgid "required for each article" msgstr "обов'язкове для кожної статті" -#: ../../src/appx/blog/spec.rst:346 +#: ../../src/spec/blog/spec.rst:346 msgid "unique for each article" msgstr "унікальне для кожної статті" -#: ../../src/appx/blog/spec.rst:348 +#: ../../src/spec/blog/spec.rst:348 msgid "Create a data migration to provide slugs for existing articles." msgstr "Створіть міграцію даних для надання slug-ів існуючим статтям." -#: ../../src/appx/blog/spec.rst:349 +#: ../../src/spec/blog/spec.rst:349 msgid "" "``slug`` should be auto-generated on article save. The pattern is ``article." "title-article.created_date``, e.g. \"Sample article\" created at " @@ -814,60 +814,60 @@ msgstr "" "наприклад, стаття з назвою \"Sample article\", створена \"24/03/2023\", " "отримає slug: ``sample-article-2023-03-24``." -#: ../../src/appx/blog/spec.rst:353 +#: ../../src/spec/blog/spec.rst:353 msgid "Update detail view URL path with article slug as dynamic portion." msgstr "" "Оновіть шлях URL для представлення деталей статті з динамічною частиною, " "якою буде slug статті." -#: ../../src/appx/blog/spec.rst:356 +#: ../../src/spec/blog/spec.rst:356 msgid "Challenge: Auth forms" msgstr "Завдання: форми авторизації" -#: ../../src/appx/blog/spec.rst:358 +#: ../../src/spec/blog/spec.rst:358 msgid "Create form for new users registration with required fields:" msgstr "" "Створити форму для реєстрації нових користувачів із обов'язковими полями:" -#: ../../src/appx/blog/spec.rst:360 +#: ../../src/spec/blog/spec.rst:360 msgid "``username``" msgstr "``username``" -#: ../../src/appx/blog/spec.rst:361 +#: ../../src/spec/blog/spec.rst:361 msgid "``email``" msgstr "``email``" -#: ../../src/appx/blog/spec.rst:362 +#: ../../src/spec/blog/spec.rst:362 msgid "``password``" msgstr "``password``" -#: ../../src/appx/blog/spec.rst:363 +#: ../../src/spec/blog/spec.rst:363 msgid "``confirm password``" msgstr "``confirm password``" -#: ../../src/appx/blog/spec.rst:365 +#: ../../src/spec/blog/spec.rst:365 msgid "``username`` value should be validated against existing values." msgstr "" "Значення ``username`` повинно перевірятися на відповідність існуючим " "значенням." -#: ../../src/appx/blog/spec.rst:366 +#: ../../src/spec/blog/spec.rst:366 msgid "``password`` and ``confirm password`` values should match." msgstr "Значення ``password`` і ``confirm password`` мають збігатися." -#: ../../src/appx/blog/spec.rst:367 +#: ../../src/spec/blog/spec.rst:367 msgid "Create form for existing users login." msgstr "Створити форму для входу існуючих користувачів." -#: ../../src/appx/blog/spec.rst:368 +#: ../../src/spec/blog/spec.rst:368 msgid "Validations errors are to be rendered on the template." msgstr "Помилки перевірки повинні відображатися на шаблоні." -#: ../../src/appx/blog/spec.rst:371 +#: ../../src/spec/blog/spec.rst:371 msgid "Challenge: Authentication" msgstr "Завдання: Автентифікація" -#: ../../src/appx/blog/spec.rst:373 +#: ../../src/spec/blog/spec.rst:373 msgid "" "For anonymous users ``/register/`` and ``/login/`` links should be visible " "in navbar." @@ -875,7 +875,7 @@ msgstr "" "Для анонімних користувачів посилання ``/register/`` і ``/login/`` мають бути " "видимими на панелі навігації." -#: ../../src/appx/blog/spec.rst:375 +#: ../../src/spec/blog/spec.rst:375 msgid "" "For authenticated users ``/logout/`` and ``/create/`` links should be " "visible in navbar." @@ -883,14 +883,14 @@ msgstr "" "Для автентифікованих користувачів посилання ``/logout/`` і ``/create/`` " "мають бути видимими на панелі навігації." -#: ../../src/appx/blog/spec.rst:377 +#: ../../src/spec/blog/spec.rst:377 msgid "" "If authenticated user is admin or stuff they should see a link to admin page." msgstr "" "Якщо автентифікований користувач є адміністратором або іншим, він має " "побачити посилання на сторінку адміністратора." -#: ../../src/appx/blog/spec.rst:379 +#: ../../src/spec/blog/spec.rst:379 msgid "" "``/register/``: Users should provide all required information about them: " "desired username and email. Name data (both first and last) is optional. " @@ -904,7 +904,7 @@ msgstr "" "перенаправлені на сторінку входу для виконання процесу автентифікації. " "Недійсна форма повинна надавати інформацію про помилку(и)." -#: ../../src/appx/blog/spec.rst:384 +#: ../../src/spec/blog/spec.rst:384 msgid "" "``/login/``: Users should provide their credentials to login. In case login " "is successful they should be redirected to their profile (if no ``?" @@ -914,7 +914,7 @@ msgstr "" "успішного входу вони повинні бути перенаправлені до свого профілю (якщо " "немає рядка запиту ``?next=url``)." -#: ../../src/appx/blog/spec.rst:387 +#: ../../src/spec/blog/spec.rst:387 msgid "" "``/create/``: Only authenticated users should be able to visit this page. In " "case anonymous user is trying to request this view they should be redirected " @@ -929,7 +929,7 @@ msgstr "" "створенні статті вона повинна мати автором поточного аутентифікованого " "користувача." -#: ../../src/appx/blog/spec.rst:392 +#: ../../src/spec/blog/spec.rst:392 msgid "" "``/
/comment/``: Currently authenticated user should be referenced " "as a comment's author." @@ -937,7 +937,7 @@ msgstr "" "``/
/comment/``: У коментарі поточного аутентифікованого користувача " "повинна бути зазначена його ідентифікація як автора." -#: ../../src/appx/blog/spec.rst:394 +#: ../../src/spec/blog/spec.rst:394 msgid "" "Articles may be modified or deleted only by their authors from the detail " "article page. However, admins can still performs articles actions from the " @@ -947,21 +947,21 @@ msgstr "" "статті. Однак адміністратори все ще можуть виконувати дії зі статтями через " "адміністративну сторінку." -#: ../../src/appx/blog/spec.rst:397 +#: ../../src/spec/blog/spec.rst:397 msgid "User related paths are restricted for non-authorized users." msgstr "" "Шляхи, пов'язані з користувачем, обмежені для неаутентифікованих " "користувачів." -#: ../../src/appx/blog/spec.rst:399 +#: ../../src/spec/blog/spec.rst:399 msgid "``/set-password/``" msgstr "``/set-password/``" -#: ../../src/appx/blog/spec.rst:400 +#: ../../src/spec/blog/spec.rst:400 msgid "``/set-userdata/``" msgstr "``/set-userdata/``" -#: ../../src/appx/blog/spec.rst:402 +#: ../../src/spec/blog/spec.rst:402 msgid "" "``POST`` request ``/deactivate/`` should mark current authenticated user as " "*deleted* and log them user." @@ -970,14 +970,14 @@ msgstr "" "аутентифікованого користувача як *видаленого* і виходити з системи для цього " "користувача." -#: ../../src/appx/blog/spec.rst:404 +#: ../../src/spec/blog/spec.rst:404 msgid "" "Authenticated users should be able to adjust their preferred topics lists." msgstr "" "Авторизовані користувачі повинні мати можливість налаштовувати свої списки " "обраних тем." -#: ../../src/appx/blog/spec.rst:405 +#: ../../src/spec/blog/spec.rst:405 msgid "" "Authenticated users should be able to **subscribe** or **unsubscribe** for a " "selected topic." @@ -985,7 +985,7 @@ msgstr "" "Авторизовані користувачі повинні мати можливість **підписатися** або " "**відписатися** на обрану тему." -#: ../../src/appx/blog/spec.rst:411 +#: ../../src/spec/blog/spec.rst:411 msgid "" "Adjust the order of article list according to authenticated user " "preferences. For anonymous users keep default ordering." @@ -994,7 +994,7 @@ msgstr "" "аутентифікованого користувача. Для анонімних користувачів залиште типове " "сортування за замовчуванням." -#: ../../src/appx/blog/spec.rst:413 +#: ../../src/spec/blog/spec.rst:413 msgid "" "Implement account reactivation behavior. The exact workflow does not mater. " "The sample scenario is to collect email for the user and check it for " @@ -1007,11 +1007,11 @@ msgstr "" "цього створіть запит для адміністратора на активацію облікового запису та " "надішліть підтверджувальний лист електронною поштою, коли все буде готово." -#: ../../src/appx/blog/spec.rst:419 +#: ../../src/spec/blog/spec.rst:419 msgid "Challenge: Article related forms" msgstr "Виклик: Форми пов'язані зі статтями" -#: ../../src/appx/blog/spec.rst:421 +#: ../../src/spec/blog/spec.rst:421 msgid "" "Implement a article form. This form will be used to create new articles and " "to update existing ones." @@ -1019,15 +1019,15 @@ msgstr "" "Реалізуйте форму статті. Ця форма буде використовуватися для створення нових " "статей та оновлення існуючих." -#: ../../src/appx/blog/spec.rst:423 +#: ../../src/spec/blog/spec.rst:423 msgid "Each created article should have at least one related topic." msgstr "Кожна створена стаття повинна мати принаймні одну пов'язану тему." -#: ../../src/appx/blog/spec.rst:424 +#: ../../src/spec/blog/spec.rst:424 msgid "Implement a comment form to gather a comment from a user." msgstr "Реалізуйте форму коментаря, щоб збирати коментарі від користувача." -#: ../../src/appx/blog/spec.rst:425 +#: ../../src/spec/blog/spec.rst:425 msgid "" "Only ``POST`` requests to ``/
/comment/`` are allowed from this " "moment." @@ -1035,65 +1035,65 @@ msgstr "" "З даного моменту дозволені лише запити типу ``POST`` до ``/
/comment/" "``." -#: ../../src/appx/blog/spec.rst:427 +#: ../../src/spec/blog/spec.rst:427 msgid "Implement functionality:" msgstr "Реалізуйте функціональність:" -#: ../../src/appx/blog/spec.rst:429 +#: ../../src/spec/blog/spec.rst:429 msgid "article creation" msgstr "створення статті" -#: ../../src/appx/blog/spec.rst:430 +#: ../../src/spec/blog/spec.rst:430 msgid "article update" msgstr "оновлення статті" -#: ../../src/appx/blog/spec.rst:431 +#: ../../src/spec/blog/spec.rst:431 msgid "article comment (create a related comment)" msgstr "коментування статті (створення коментаря)" -#: ../../src/appx/blog/spec.rst:432 +#: ../../src/spec/blog/spec.rst:432 msgid "article deletion" msgstr "видалення статті" -#: ../../src/appx/blog/spec.rst:434 +#: ../../src/spec/blog/spec.rst:434 msgid "Only authenticated users can create articles." msgstr "Лише аутентифіковані користувачі можуть створювати статі." -#: ../../src/appx/blog/spec.rst:435 +#: ../../src/spec/blog/spec.rst:435 msgid "Article can be edited only by its author." msgstr "Стаття може редагуватись лише її автором." -#: ../../src/appx/blog/spec.rst:436 +#: ../../src/spec/blog/spec.rst:436 msgid "Article can be deleted only by its author." msgstr "Стаття може видалятись лише її автором." -#: ../../src/appx/blog/spec.rst:437 +#: ../../src/spec/blog/spec.rst:437 msgid "Only authenticated users can comment articles." msgstr "Лише аутентифіковані користувачі можуть коментувати статті." -#: ../../src/appx/blog/spec.rst:444 +#: ../../src/spec/blog/spec.rst:444 msgid "Challenge: Class-Based Views" msgstr "Завдання: Class-Based Views" -#: ../../src/appx/blog/spec.rst:446 +#: ../../src/spec/blog/spec.rst:446 msgid "Replace **all** existing views via ``CBV``." msgstr "Замінити **всі** існуючі перегляди через ``CBV``." -#: ../../src/appx/blog/spec.rst:447 +#: ../../src/spec/blog/spec.rst:447 msgid "Existing functionality should not be corrupted." msgstr "Існуюча функціональність не повинна бути пошкоджена." -#: ../../src/appx/blog/spec.rst:450 +#: ../../src/spec/blog/spec.rst:450 msgid "It's ok to use built-in Django CBV if needed." msgstr "" "Якщо потрібно, можна використовувати вбудовані класи відображення у Django " "(CBV)." -#: ../../src/appx/blog/spec.rst:453 +#: ../../src/spec/blog/spec.rst:453 msgid "Challenge: Serializers" msgstr "Завдання: Серіалізатори" -#: ../../src/appx/blog/spec.rst:457 +#: ../../src/spec/blog/spec.rst:457 msgid "" "Topic serializer is for read-only purposes only. Topics can be created via " "admin page only." @@ -1101,7 +1101,7 @@ msgstr "" "Серіалізатор для теми призначений лише для операцій читання (read-only). " "Теми можна створювати лише через адміністративну сторінку." -#: ../../src/appx/blog/spec.rst:459 +#: ../../src/spec/blog/spec.rst:459 msgid "" "Serialized data should contain all available data, e.g. ``pk``, ``title``, " "``description``." @@ -1109,7 +1109,7 @@ msgstr "" "Серіалізовані дані повинні містити всю доступну інформацію, наприклад, " "``pk``, ``title``, ``description``." -#: ../../src/appx/blog/spec.rst:464 +#: ../../src/spec/blog/spec.rst:464 msgid "" "article comment serializer can perform both reading and writing operations. " "But it can't be used to *update* or *delete* comment." @@ -1118,7 +1118,7 @@ msgstr "" "операції запису. Проте він не може використовуватися для оновлення або " "видалення коментаря." -#: ../../src/appx/blog/spec.rst:466 +#: ../../src/spec/blog/spec.rst:466 msgid "" "Random, or pre-defined user may be used as comment's author for now. This " "will be fixed in the future." @@ -1126,7 +1126,7 @@ msgstr "" "Наразі можна використовувати випадкового або попередньо визначеного " "користувача як автора коментаря. Це буде виправлено у майбутньому." -#: ../../src/appx/blog/spec.rst:471 +#: ../../src/spec/blog/spec.rst:471 msgid "" "article serializer provides full access to articles. All operations are " "available: list, retrieve, create, update and destroy." @@ -1135,11 +1135,11 @@ msgstr "" "отримання списку, отримання окремої статті, створення нової статті, " "оновлення та видалення." -#: ../../src/appx/blog/spec.rst:475 +#: ../../src/spec/blog/spec.rst:475 msgid "User" msgstr "Користувач" -#: ../../src/appx/blog/spec.rst:476 +#: ../../src/spec/blog/spec.rst:476 msgid "" "User serializer provides full access to site users data. All operations are " "available for now: list, retrieve, create, update and destroy. This behavior " @@ -1151,16 +1151,16 @@ msgstr "" "Однак, ця поведінка буде виправлена у майбутньому для запобігання " "несанкціонованим змінам даних." -#: ../../src/appx/blog/spec.rst:482 +#: ../../src/spec/blog/spec.rst:482 msgid "Challenge: API views" msgstr "Завдання: API views" -#: ../../src/appx/blog/spec.rst:484 +#: ../../src/spec/blog/spec.rst:484 msgid "All blog-site functionality are to be mirrored via REST API." msgstr "" "Вся функціональність сайту повинна бути відображена за допомогою REST API." -#: ../../src/appx/blog/spec.rst:487 +#: ../../src/spec/blog/spec.rst:487 msgid "" "It's ok to pass *pre-defined* user as argument in request's body. This will " "be fixed in the next challenge." @@ -1168,27 +1168,27 @@ msgstr "" "Наразі дозволяється передавати *наперед визначеного* користувача у тілі " "запиту. Це буде виправлено у наступному розділі." -#: ../../src/appx/blog/spec.rst:491 +#: ../../src/spec/blog/spec.rst:491 msgid "Challenge: Authentication and Permissions" msgstr "Завдання: Автентифікація та Дозволи" -#: ../../src/appx/blog/spec.rst:493 +#: ../../src/spec/blog/spec.rst:493 msgid "Implement authentication system for REST API." msgstr "Реалізуйте систему аутентифікації для REST API." -#: ../../src/appx/blog/spec.rst:495 +#: ../../src/spec/blog/spec.rst:495 msgid "For non-authenticated users it is possible to create a new account" msgstr "" "Для неаутентифікованих користувачів можлива створення нового облікового " "запису" -#: ../../src/appx/blog/spec.rst:496 +#: ../../src/spec/blog/spec.rst:496 msgid "" "For non-authenticated users it is possible to obtain authentication data." msgstr "" "Для неаутентифікованих користувачів можлива отримання даних аутентифікації." -#: ../../src/appx/blog/spec.rst:499 +#: ../../src/spec/blog/spec.rst:499 msgid "" "Access to user data is restricted. Authorized users can manipulate only " "their own data (e.g. ``retrieve``, ``update``)." @@ -1197,7 +1197,7 @@ msgstr "" "маніпулювати лише своїми власними даними (наприклад, ``retrieve``, " "``update``)." -#: ../../src/appx/blog/spec.rst:501 +#: ../../src/spec/blog/spec.rst:501 msgid "" "Admins can retrieve all users data (``list``), but can't change them via " "REST API. However, it is still possible via admin page." @@ -1206,7 +1206,7 @@ msgstr "" "можуть змінювати їх через REST API. Однак це все ще можливо через " "адміністративну сторінку." -#: ../../src/appx/blog/spec.rst:503 +#: ../../src/spec/blog/spec.rst:503 msgid "" "Authorized users can ``create`` articles or ``update`` and ``delete`` " "articles created by them." @@ -1214,11 +1214,11 @@ msgstr "" "Авторизовані користувачі можуть ``create`` статті або ``update`` та " "``delete`` статті, створені ними." -#: ../../src/appx/blog/spec.rst:505 +#: ../../src/spec/blog/spec.rst:505 msgid "Authorized users can add comments to a specified article." msgstr "Авторизовані користувачі можуть додавати коментарі до вказаної статті." -#: ../../src/appx/blog/spec.rst:506 +#: ../../src/spec/blog/spec.rst:506 msgid "Authorized users can adjust their topics preferences." msgstr "" "Авторизовані користувачі можуть налаштовувати свої уподобання щодо тем." diff --git a/src/_locales/uk/LC_MESSAGES/appx/libms/spec.po b/src/_locales/uk/LC_MESSAGES/spec/libms/index.po similarity index 84% rename from src/_locales/uk/LC_MESSAGES/appx/libms/spec.po rename to src/_locales/uk/LC_MESSAGES/spec/libms/index.po index e131f1d55..178205c85 100644 --- a/src/_locales/uk/LC_MESSAGES/appx/libms/spec.po +++ b/src/_locales/uk/LC_MESSAGES/spec/libms/index.po @@ -19,11 +19,11 @@ msgstr "" "Generated-By: Babel 2.13.0\n" "X-Generator: Poedit 3.4\n" -#: ../../src/appx/libms/spec.rst:3 +#: ../../src/spec/libms/spec.rst:3 msgid "Library Management System" msgstr "Система Керування Бібліотекою" -#: ../../src/appx/libms/spec.rst:5 +#: ../../src/spec/libms/spec.rst:5 msgid "" "The Library Management System is a Django-based web application that offers " "a digital platform for managing and interacting with a library's collection. " @@ -47,7 +47,7 @@ msgstr "" "також підтримує різноманітні ролі користувачів, від звичайних членів до " "персоналу та адміністраторів, кожен з яких має відмінні можливості." -#: ../../src/appx/libms/spec.rst:15 +#: ../../src/spec/libms/spec.rst:15 msgid "" "A well-structured user interface ensures that all functionalities are easily " "accessible, making the library management process seamless and efficient. " @@ -61,11 +61,11 @@ msgstr "" "з сучасними технологічними інноваціями, сприяючи підвищенню ефективності та " "покращенню користувацького досвіду." -#: ../../src/appx/libms/spec.rst:22 +#: ../../src/spec/libms/spec.rst:22 msgid "User roles" msgstr "Ролі користувачів" -#: ../../src/appx/libms/spec.rst:25 +#: ../../src/spec/libms/spec.rst:25 msgid "" "It is essential for developers to consider security aspects when " "implementing these roles to ensure that users cannot perform actions outside " @@ -75,11 +75,11 @@ msgstr "" "щоб гарантувати, що користувачі не зможуть виконувати дії, які виходять за " "рамки призначеної їм ролі." -#: ../../src/appx/libms/spec.rst:30 +#: ../../src/spec/libms/spec.rst:30 msgid "Admins" msgstr "Адміністратори" -#: ../../src/appx/libms/spec.rst:32 +#: ../../src/spec/libms/spec.rst:32 msgid "" "Superusers have full control over the entire system. They can access and " "manage all functionalities provided by the Django admin site." @@ -88,26 +88,26 @@ msgstr "" "отримати доступ до всіх функцій, що надаються адмін-сайтом Django, і " "керувати ними." -#: ../../src/appx/libms/spec.rst:35 +#: ../../src/spec/libms/spec.rst:35 msgid "Admins can create, modify, or delete any record within the application." msgstr "" "Адміністратори можуть створювати, змінювати або видаляти будь-які записи в " "додатку." -#: ../../src/appx/libms/spec.rst:38 ../../src/appx/libms/spec.rst:49 -#: ../../src/appx/libms/spec.rst:68 ../../src/appx/libms/spec.rst:82 +#: ../../src/spec/libms/spec.rst:38 ../../src/spec/libms/spec.rst:49 +#: ../../src/spec/libms/spec.rst:68 ../../src/spec/libms/spec.rst:82 msgid "Capabilities" msgstr "Можливості" -#: ../../src/appx/libms/spec.rst:39 +#: ../../src/spec/libms/spec.rst:39 msgid "Access Django admin site" msgstr "Доступ до адміністративного сайту Django" -#: ../../src/appx/libms/spec.rst:42 +#: ../../src/spec/libms/spec.rst:42 msgid "Librarians" msgstr "Бібліотекарі" -#: ../../src/appx/libms/spec.rst:44 +#: ../../src/spec/libms/spec.rst:44 msgid "" "Staff personnel are in charge of day-to-day operations within the library. " "They can add new books to the library's collection, manage existing books' " @@ -118,39 +118,39 @@ msgstr "" "наявні книги, а також приймати або відхиляти запити від постійних " "користувачів." -#: ../../src/appx/libms/spec.rst:50 +#: ../../src/spec/libms/spec.rst:50 msgid "Management of the library catalogue" msgstr "Управління бібліотечним каталогом" -#: ../../src/appx/libms/spec.rst:52 +#: ../../src/spec/libms/spec.rst:52 msgid "Add, modify or delete authors" msgstr "Додавати, змінювати або видаляти авторів" -#: ../../src/appx/libms/spec.rst:53 +#: ../../src/spec/libms/spec.rst:53 msgid "Add, modify or delete genres" msgstr "Додавати, змінювати або видаляти жанри" -#: ../../src/appx/libms/spec.rst:54 +#: ../../src/spec/libms/spec.rst:54 msgid "Add, modify or delete books' details" msgstr "Додавати, змінювати або видаляти дані про книги" -#: ../../src/appx/libms/spec.rst:56 +#: ../../src/spec/libms/spec.rst:56 msgid "Review borrow requests from regular users" msgstr "Переглядати запити на позичення від користувачів" -#: ../../src/appx/libms/spec.rst:57 +#: ../../src/spec/libms/spec.rst:57 msgid "Accept or decline borrow requests" msgstr "Приймати або відхиляти запити на позичення" -#: ../../src/appx/libms/spec.rst:58 +#: ../../src/spec/libms/spec.rst:58 msgid "Register returned books and update their status" msgstr "Реєструвати повернені книги та оновлювати їх статус" -#: ../../src/appx/libms/spec.rst:61 +#: ../../src/spec/libms/spec.rst:61 msgid "Regular" msgstr "Звичайний" -#: ../../src/appx/libms/spec.rst:63 +#: ../../src/spec/libms/spec.rst:63 msgid "" "Regular registered users are the members of the library. They can search " "books, request to borrow them, and are responsible for returning borrowed " @@ -160,51 +160,51 @@ msgstr "" "книги, запитувати їх, а також несуть відповідальність за своєчасне " "повернення позичених книг." -#: ../../src/appx/libms/spec.rst:69 ../../src/appx/libms/spec.rst:83 +#: ../../src/spec/libms/spec.rst:69 ../../src/spec/libms/spec.rst:83 msgid "Browse the books' catalogue" msgstr "Переглядати каталог книг" -#: ../../src/appx/libms/spec.rst:70 ../../src/appx/libms/spec.rst:84 +#: ../../src/spec/libms/spec.rst:70 ../../src/spec/libms/spec.rst:84 msgid "View details of a book" msgstr "Переглядати деталі книги" -#: ../../src/appx/libms/spec.rst:71 ../../src/appx/libms/spec.rst:85 +#: ../../src/spec/libms/spec.rst:71 ../../src/spec/libms/spec.rst:85 msgid "Search books" msgstr "Шукати книги" -#: ../../src/appx/libms/spec.rst:72 +#: ../../src/spec/libms/spec.rst:72 msgid "Request to borrow available books" msgstr "Робити запит на позичення доступних книжок" -#: ../../src/appx/libms/spec.rst:73 +#: ../../src/spec/libms/spec.rst:73 msgid "Check due date for returned books" msgstr "Перевіряти термін повернення запозичених книжок" -#: ../../src/appx/libms/spec.rst:74 +#: ../../src/spec/libms/spec.rst:74 msgid "Return borrowed books" msgstr "Повертати запозичені книги" -#: ../../src/appx/libms/spec.rst:77 +#: ../../src/spec/libms/spec.rst:77 msgid "Anonymous" msgstr "Анонімні" -#: ../../src/appx/libms/spec.rst:79 +#: ../../src/spec/libms/spec.rst:79 msgid "Anonymous users are visitors who haven't logged into the system." msgstr "Анонімні користувачі - це відвідувачі, які не ввійшли в систему." -#: ../../src/appx/libms/spec.rst:86 +#: ../../src/spec/libms/spec.rst:86 msgid "Access to the registration or login pages" msgstr "Доступ до сторінок реєстрації або входу" -#: ../../src/appx/libms/spec.rst:90 +#: ../../src/spec/libms/spec.rst:90 msgid "Models" msgstr "Моделі" -#: ../../src/appx/libms/spec.rst:93 +#: ../../src/spec/libms/spec.rst:93 msgid "Author model" msgstr "Модель авторів" -#: ../../src/appx/libms/spec.rst:95 +#: ../../src/spec/libms/spec.rst:95 msgid "" "The ``Author`` model captures the details of the person, or group " "responsible for creating the book." @@ -212,32 +212,32 @@ msgstr "" "Модель ``Author`` фіксує інформацію про особу або групу осіб, відповідальних " "за створення книги." -#: ../../src/appx/libms/spec.rst:99 ../../src/appx/libms/spec.rst:116 -#: ../../src/appx/libms/spec.rst:128 ../../src/appx/libms/spec.rst:170 +#: ../../src/spec/libms/spec.rst:99 ../../src/spec/libms/spec.rst:116 +#: ../../src/spec/libms/spec.rst:128 ../../src/spec/libms/spec.rst:170 msgid "Attributes" msgstr "Атрибути" -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Name" msgstr "Name" -#: ../../src/appx/libms/spec.rst:102 +#: ../../src/spec/libms/spec.rst:102 msgid "The full name of the author. This should be limited to 255 characters." msgstr "Повне ім'я автора. Не більше 255 символів." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Bio" msgstr "Bio" -#: ../../src/appx/libms/spec.rst:105 +#: ../../src/spec/libms/spec.rst:105 msgid "A brief biography or description of the author." msgstr "Коротка біографія або опис автора." -#: ../../src/appx/libms/spec.rst:108 +#: ../../src/spec/libms/spec.rst:108 msgid "Genre model" msgstr "Модель жанра" -#: ../../src/appx/libms/spec.rst:110 +#: ../../src/spec/libms/spec.rst:110 msgid "" "The ``Genre`` model represents the category or type of content a book " "belongs to, such as \"Fiction\", \"Non-fiction\", \"Science\", \"Romance\" " @@ -249,15 +249,15 @@ msgstr "" "\"Наука\", \"Романтика\" тощо. Оскільки книга може належати до кількох " "категорій одночасно, вона реалізована як окрема модель." -#: ../../src/appx/libms/spec.rst:118 +#: ../../src/spec/libms/spec.rst:118 msgid "The name of the genre." msgstr "Назва жанру." -#: ../../src/appx/libms/spec.rst:121 +#: ../../src/spec/libms/spec.rst:121 msgid "Book model" msgstr "Модель книги" -#: ../../src/appx/libms/spec.rst:123 +#: ../../src/spec/libms/spec.rst:123 msgid "" "The ``Book`` model represents a physical book in the library's collection. " "Each book record captures essential bibliographic information, as well as " @@ -269,36 +269,36 @@ msgstr "" "пов'язані з її поточним статусом у бібліотеці (наприклад, доступна, позичена " "тощо)." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Title" msgstr "Title" -#: ../../src/appx/libms/spec.rst:131 +#: ../../src/spec/libms/spec.rst:131 msgid "The name or title of the book (255 characters or fewer)." msgstr "Назва книги (255 символів або менше)." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Summary" msgstr "Summary" -#: ../../src/appx/libms/spec.rst:134 +#: ../../src/spec/libms/spec.rst:134 msgid "A brief description or synopsis of the book." msgstr "Короткий опис або синопсис книги." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "ISBN" msgstr "ISBN" -#: ../../src/appx/libms/spec.rst:137 +#: ../../src/spec/libms/spec.rst:137 msgid "International Standard Book Number, a unique identifier for books." msgstr "" "International Standard Book Number, унікальний ідентифікатор для книг.." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Available" msgstr "Available" -#: ../../src/appx/libms/spec.rst:140 +#: ../../src/spec/libms/spec.rst:140 msgid "" "Current available status of the book. Either ``True`` or ``False``. Books " "are available by default." @@ -306,19 +306,19 @@ msgstr "" "Поточний статус доступності книги. Або ``True``, або ``False``. За " "замовчуванням книги доступні." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Published date" msgstr "Published date" -#: ../../src/appx/libms/spec.rst:144 +#: ../../src/spec/libms/spec.rst:144 msgid "The date when the book was published." msgstr "Дата, коли книга була опублікована." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Publisher" msgstr "Publisher" -#: ../../src/appx/libms/spec.rst:147 +#: ../../src/spec/libms/spec.rst:147 msgid "" "The entity or company responsible for the production and distribution of the " "book." @@ -326,11 +326,11 @@ msgstr "" "Організація або компанія, відповідальна за виробництво та розповсюдження " "книги." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Genre(s)" msgstr "Genre(s)" -#: ../../src/appx/libms/spec.rst:151 +#: ../../src/spec/libms/spec.rst:151 msgid "" "The category or type of content the book falls under (e.g., Fiction, Non-" "Fiction, Science)." @@ -338,29 +338,29 @@ msgstr "" "Категорія або тип контенту, до якого належить книга (наприклад, художня " "література, нон-фікшн, наукова література)." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Author(s)" msgstr "Author(s)" -#: ../../src/appx/libms/spec.rst:156 +#: ../../src/spec/libms/spec.rst:156 msgid "" "The name of the person or group responsible for creating the content of the " "book." msgstr "Ім'я особи або групи осіб, відповідальних за створення змісту книги." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Borrower" msgstr "Borrower" -#: ../../src/appx/libms/spec.rst:160 +#: ../../src/spec/libms/spec.rst:160 msgid "The user who has currently borrowed the book, if applicable." msgstr "Користувач, який наразі позичив книгу, якщо це можливо." -#: ../../src/appx/libms/spec.rst:163 +#: ../../src/spec/libms/spec.rst:163 msgid "Borrow request model" msgstr "Модель запиту на позику" -#: ../../src/appx/libms/spec.rst:165 +#: ../../src/spec/libms/spec.rst:165 msgid "" "The ``BorrowRequest`` model captures the intent of a user to borrow a " "specific book. It tracks the status of the request, whether it's pending, " @@ -369,82 +369,82 @@ msgstr "" "Модель ``BorrowRequest`` фіксує намір користувача взяти конкретну книгу. " "Вона відстежує статус запиту: очікує, схвалений, відхилений чи завершений." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Book" msgstr "Book" -#: ../../src/appx/libms/spec.rst:173 +#: ../../src/spec/libms/spec.rst:173 msgid "A reference to a book to be borrowed." msgstr "Посилання на книгу, яку потрібно взяти." -#: ../../src/appx/libms/spec.rst:176 +#: ../../src/spec/libms/spec.rst:176 msgid "A reference to a user who wants to borrow a book." msgstr "Посилання на користувача, який хоче взяти книгу." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Status" msgstr "Status" -#: ../../src/appx/libms/spec.rst:179 +#: ../../src/spec/libms/spec.rst:179 msgid "The current status of the request." msgstr "Поточний статус заявки." -#: ../../src/appx/libms/spec.rst:181 +#: ../../src/spec/libms/spec.rst:181 msgid "pending" msgstr "pending" -#: ../../src/appx/libms/spec.rst:182 +#: ../../src/spec/libms/spec.rst:182 msgid "approved" msgstr "approved" -#: ../../src/appx/libms/spec.rst:183 +#: ../../src/spec/libms/spec.rst:183 msgid "collected" msgstr "collected" -#: ../../src/appx/libms/spec.rst:184 +#: ../../src/spec/libms/spec.rst:184 msgid "complete" msgstr "complete" -#: ../../src/appx/libms/spec.rst:185 +#: ../../src/spec/libms/spec.rst:185 msgid "declined" msgstr "declined" -#: ../../src/appx/libms/spec.rst:187 +#: ../../src/spec/libms/spec.rst:187 msgid "" "The status constants should be encapsulated within the ``BorrowRequest`` " "model." msgstr "" "Константи стану повинні бути інкапсульовані в моделі ``BorrowRequest``." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Overdue" msgstr "Overdue" -#: ../../src/appx/libms/spec.rst:202 +#: ../../src/spec/libms/spec.rst:202 msgid "A flag indicating if a borrow request was overdue." msgstr "Прапорець, що вказує на те, чи був запит на позику прострочений." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Request date" msgstr "Request date" -#: ../../src/appx/libms/spec.rst:205 +#: ../../src/spec/libms/spec.rst:205 msgid "The date the borrow request was made. This is required." msgstr "Дата подання запиту на позику. Це обов'язкова інформація." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Approval date" msgstr "Approval date" -#: ../../src/appx/libms/spec.rst:208 +#: ../../src/spec/libms/spec.rst:208 msgid "The date the request was approved, if applicable. Optional." msgstr "Дата схвалення запиту, якщо це можливо. Необов'язково." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Due date" msgstr "Due date" -#: ../../src/appx/libms/spec.rst:211 +#: ../../src/spec/libms/spec.rst:211 msgid "" "The date by which the book should be returned. Optional, should only be set " "if the request if approved." @@ -452,11 +452,11 @@ msgstr "" "Дата, до якої книга має бути повернута. Необов'язкова, має бути вказана лише " "у разі схвалення запиту." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Complete date" msgstr "Complete date" -#: ../../src/appx/libms/spec.rst:215 +#: ../../src/spec/libms/spec.rst:215 msgid "" "The date the book was returned and the borrowing request was completed. " "Optional, should only be set if the request has reached the \"Complete\" " @@ -465,15 +465,15 @@ msgstr "" "Дата повернення книги та завершення запиту на позику. Необов'язкова, має " "бути встановлена тільки якщо запит досяг статусу \"Завершено\"." -#: ../../src/appx/libms/spec.rst:220 +#: ../../src/spec/libms/spec.rst:220 msgid "Relationships" msgstr "Відносини" -#: ../../src/appx/libms/spec.rst:228 +#: ../../src/spec/libms/spec.rst:228 msgid "Book to author" msgstr "Книга до автору" -#: ../../src/appx/libms/spec.rst:230 +#: ../../src/spec/libms/spec.rst:230 msgid "" "Each ``Author`` can be associated with multiple ``Books``, and each ``Book`` " "can have **one or more** ``authors``. This establishes a **many-to-many** " @@ -483,11 +483,11 @@ msgstr "" "``Книга`` може мати **одного або більше** ``авторів``. Це встановлює зв'язок " "**багато-до-багатьох** між цими двома сутностями." -#: ../../src/appx/libms/spec.rst:235 +#: ../../src/spec/libms/spec.rst:235 msgid "Book to genre" msgstr "Книга до жанру" -#: ../../src/appx/libms/spec.rst:237 +#: ../../src/spec/libms/spec.rst:237 msgid "" "Each ``Genre`` can be associated with multiple ``Books``, and vice-versa. " "However a ``Book`` might not belong to any genre. This relationship between " @@ -499,11 +499,11 @@ msgstr "" "``Жанром`` і ``Книгою`` все ще вважається **багато-до-багатьох**, але з " "можливістю нульових жанрів для книги." -#: ../../src/appx/libms/spec.rst:243 +#: ../../src/spec/libms/spec.rst:243 msgid "Book to borrow request" msgstr "Книга до запиту на позику" -#: ../../src/appx/libms/spec.rst:245 +#: ../../src/spec/libms/spec.rst:245 msgid "" "Each ``Book`` can be associated with multiple ``BorrowRequests``, but each " "``BorrowRequest`` refers only one ``book``, forming a **many-to-one** " @@ -513,11 +513,11 @@ msgstr "" "кожен ``Запит на позику`` посилається тільки на одну ``Книгу``, утворюючи " "зв'язок **багато-до-одного**." -#: ../../src/appx/libms/spec.rst:250 +#: ../../src/spec/libms/spec.rst:250 msgid "User to borrow request" msgstr "Користувач до запиту на позику" -#: ../../src/appx/libms/spec.rst:252 +#: ../../src/spec/libms/spec.rst:252 msgid "" "Each ``User`` can make multiple ``BorrowRequests``, but each " "``BorrowRequest`` refers to only one book, forming a **many-to-one** " @@ -527,11 +527,11 @@ msgstr "" "``Запит на позику`` відноситься тільки до однієї книги, формуючи зв'язок " "``багато до однієї``." -#: ../../src/appx/libms/spec.rst:256 +#: ../../src/spec/libms/spec.rst:256 msgid "User to book (as a borrower)" msgstr "Користувач до книги (як запозичувач)" -#: ../../src/appx/libms/spec.rst:258 +#: ../../src/spec/libms/spec.rst:258 msgid "" "A ``Book`` may have been borrowed by a ``User``, but at any given time, each " "``Book`` can be borrowed by one user only. This forms a **one-to-one** " @@ -541,15 +541,15 @@ msgstr "" "кожна \"Книга\" може бути позичена тільки одним користувачем. Це формує " "відносини \"один до одного\"." -#: ../../src/appx/libms/spec.rst:264 +#: ../../src/spec/libms/spec.rst:264 msgid "Views and templates" msgstr "Подання та шаблони" -#: ../../src/appx/libms/spec.rst:267 +#: ../../src/spec/libms/spec.rst:267 msgid "Admin site" msgstr "Адмін-сайт" -#: ../../src/appx/libms/spec.rst:269 +#: ../../src/spec/libms/spec.rst:269 msgid "" "Admin site provides the full control over the entire system. Only admins are " "permitted to use admin site. Librarians should use their dedicated views to " @@ -560,22 +560,22 @@ msgstr "" "повинні використовувати свої виділені подання для виконання операцій, за " "винятком особливих випадків." -#: ../../src/appx/libms/spec.rst:275 +#: ../../src/spec/libms/spec.rst:275 msgid "Authentication" msgstr "Автентифікація" -#: ../../src/appx/libms/spec.rst:278 +#: ../../src/spec/libms/spec.rst:278 msgid "Login" msgstr "Логін" -#: ../../src/appx/libms/spec.rst:281 ../../src/appx/libms/spec.rst:293 -#: ../../src/appx/libms/spec.rst:324 ../../src/appx/libms/spec.rst:344 -#: ../../src/appx/libms/spec.rst:371 ../../src/appx/libms/spec.rst:495 -#: ../../src/appx/libms/spec.rst:512 +#: ../../src/spec/libms/spec.rst:281 ../../src/spec/libms/spec.rst:293 +#: ../../src/spec/libms/spec.rst:324 ../../src/spec/libms/spec.rst:344 +#: ../../src/spec/libms/spec.rst:371 ../../src/spec/libms/spec.rst:495 +#: ../../src/spec/libms/spec.rst:512 msgid "Template" msgstr "Template" -#: ../../src/appx/libms/spec.rst:282 +#: ../../src/spec/libms/spec.rst:282 msgid "" "A form with fields for entering a username and a password, and a submit " "button." @@ -583,14 +583,14 @@ msgstr "" "Форма з полями для введення імені користувача та пароля, а також кнопкою " "\"Надіслати\"." -#: ../../src/appx/libms/spec.rst:285 ../../src/appx/libms/spec.rst:303 -#: ../../src/appx/libms/spec.rst:329 ../../src/appx/libms/spec.rst:353 -#: ../../src/appx/libms/spec.rst:390 ../../src/appx/libms/spec.rst:476 -#: ../../src/appx/libms/spec.rst:499 +#: ../../src/spec/libms/spec.rst:285 ../../src/spec/libms/spec.rst:303 +#: ../../src/spec/libms/spec.rst:329 ../../src/spec/libms/spec.rst:353 +#: ../../src/spec/libms/spec.rst:390 ../../src/spec/libms/spec.rst:476 +#: ../../src/spec/libms/spec.rst:499 msgid "View logic" msgstr "View logic" -#: ../../src/appx/libms/spec.rst:286 +#: ../../src/spec/libms/spec.rst:286 msgid "" "Validate entered credentials and authenticate the user. In case of incorrect " "credentials, display an error message." @@ -598,48 +598,48 @@ msgstr "" "Перевірити введені облікові дані та автентифікувати користувача. У разі " "неправильних облікових даних вивести повідомлення про помилку." -#: ../../src/appx/libms/spec.rst:290 +#: ../../src/spec/libms/spec.rst:290 msgid "Registration" msgstr "Реєстрація" -#: ../../src/appx/libms/spec.rst:294 +#: ../../src/spec/libms/spec.rst:294 msgid "A form for new user registration. **Required** fields are:" msgstr "Форма для реєстрації нового користувача. **Обов'язковими** полями є:" -#: ../../src/appx/libms/spec.rst:296 +#: ../../src/spec/libms/spec.rst:296 msgid "username" msgstr "username" -#: ../../src/appx/libms/spec.rst:297 +#: ../../src/spec/libms/spec.rst:297 msgid "first name" msgstr "first name" -#: ../../src/appx/libms/spec.rst:298 +#: ../../src/spec/libms/spec.rst:298 msgid "last name" msgstr "last name" -#: ../../src/appx/libms/spec.rst:299 +#: ../../src/spec/libms/spec.rst:299 msgid "password" msgstr "password" -#: ../../src/appx/libms/spec.rst:300 +#: ../../src/spec/libms/spec.rst:300 msgid "confirm password" msgstr "confirm password" -#: ../../src/appx/libms/spec.rst:304 +#: ../../src/spec/libms/spec.rst:304 msgid "Upon submission, the view should validate the provided data:" msgstr "Після відправлення, перегляд повинен підтвердити надані дані:" -#: ../../src/appx/libms/spec.rst:306 +#: ../../src/spec/libms/spec.rst:306 msgid "Check if username is already taken." msgstr "Перевірте, чи не зайнято вже ім'я користувача." -#: ../../src/appx/libms/spec.rst:307 +#: ../../src/spec/libms/spec.rst:307 msgid "Ensure that password and confirm password fields match." msgstr "" "Переконайтеся, що поля \"Пароль\" і \"Підтвердження пароля\" збігаються." -#: ../../src/appx/libms/spec.rst:308 +#: ../../src/spec/libms/spec.rst:308 msgid "" "Save the user's data if all validations pass. Otherwise, display appropriate " "error messages." @@ -647,7 +647,7 @@ msgstr "" "Зберегти дані користувача, якщо всі перевірки пройдено. В іншому випадку, " "відобразити відповідні повідомлення про помилки." -#: ../../src/appx/libms/spec.rst:311 +#: ../../src/spec/libms/spec.rst:311 msgid "" "When saving passwords in the database, always store them in a hashed format, " "never in plain text." @@ -655,7 +655,7 @@ msgstr "" "Зберігаючи паролі в базі даних, завжди зберігайте їх у хешованому форматі, а " "не у вигляді простого тексту." -#: ../../src/appx/libms/spec.rst:315 +#: ../../src/spec/libms/spec.rst:315 msgid "" "Django's built-in ``User`` model and authentication system handle password " "hashing by default, which is a big plus." @@ -663,15 +663,15 @@ msgstr "" "Вбудована в Django модель ``User`` та система автентифікації за " "замовчуванням обробляє хешування паролів, що є великим плюсом." -#: ../../src/appx/libms/spec.rst:319 +#: ../../src/spec/libms/spec.rst:319 msgid "Borrowing History" msgstr "Історія запозичень" -#: ../../src/appx/libms/spec.rst:321 +#: ../../src/spec/libms/spec.rst:321 msgid "This view is available only for authenticated users." msgstr "Це подання доступне лише для авторизованих користувачів." -#: ../../src/appx/libms/spec.rst:325 +#: ../../src/spec/libms/spec.rst:325 msgid "" "Users can see the list of **all** their borrows requests, regardless of " "approve/decline status." @@ -679,11 +679,11 @@ msgstr "" "Користувачі можуть бачити список **всіх** своїх заявок на позики, незалежно " "від статусу схвалення/відхилення." -#: ../../src/appx/libms/spec.rst:330 +#: ../../src/spec/libms/spec.rst:330 msgid "Authenticated users can see only their own borrow requests." msgstr "Авторизовані користувачі можуть бачити лише власні заявки на позики." -#: ../../src/appx/libms/spec.rst:331 +#: ../../src/spec/libms/spec.rst:331 msgid "" "Librarians and admins can access borrows requests list for any user, " "registered in the library system." @@ -691,11 +691,11 @@ msgstr "" "Бібліотекарі та адміністратори мають доступ до списку запитів на позики для " "будь-якого користувача, зареєстрованого в бібліотечній системі." -#: ../../src/appx/libms/spec.rst:335 +#: ../../src/spec/libms/spec.rst:335 msgid "Library collection" msgstr "Бібліотечний фонд" -#: ../../src/appx/libms/spec.rst:337 +#: ../../src/spec/libms/spec.rst:337 msgid "" "These views are generally available for all (including anonymous) users. The " "functionality for authenticated users include books borrowing." @@ -704,45 +704,45 @@ msgstr "" "користувачів. Функціонал для аутентифікованих користувачів включає в себе " "можливість позичати книги." -#: ../../src/appx/libms/spec.rst:341 +#: ../../src/spec/libms/spec.rst:341 msgid "Books list" msgstr "Список літератури" -#: ../../src/appx/libms/spec.rst:345 +#: ../../src/spec/libms/spec.rst:345 msgid "A list (or table) of books. Each book entry should provide information:" msgstr "" "Список (або таблиця) книг. Кожна позиція повинна містити інформацію про " "книгу:" -#: ../../src/appx/libms/spec.rst:347 +#: ../../src/spec/libms/spec.rst:347 msgid "title" msgstr "title" -#: ../../src/appx/libms/spec.rst:348 +#: ../../src/spec/libms/spec.rst:348 msgid "author(s)" msgstr "автор(и)" -#: ../../src/appx/libms/spec.rst:349 +#: ../../src/spec/libms/spec.rst:349 msgid "summary (truncated if too long, 30 words or fewer)" msgstr "опис (скорочене, якщо занадто довге, до 30 слів або менше)" -#: ../../src/appx/libms/spec.rst:350 +#: ../../src/spec/libms/spec.rst:350 msgid "availability status (either **Available** or **Unavailable**)" msgstr "статус доступності (**Доступний** або **Не доступний**)" -#: ../../src/appx/libms/spec.rst:354 +#: ../../src/spec/libms/spec.rst:354 msgid "Querying the data" msgstr "Запит даних" -#: ../../src/appx/libms/spec.rst:356 +#: ../../src/spec/libms/spec.rst:356 msgid "Fetch **all** books from the database" msgstr "Отримати **усі** книги з бази даних" -#: ../../src/appx/libms/spec.rst:358 +#: ../../src/spec/libms/spec.rst:358 msgid "Checking availability status (visual mark)" msgstr "Перевірка статусу доступності (візуальна позначка)" -#: ../../src/appx/libms/spec.rst:360 +#: ../../src/spec/libms/spec.rst:360 msgid "" "For each book, determine its availability status. Check ``Book.available`` " "flag." @@ -750,7 +750,7 @@ msgstr "" "Для кожної книги визначте її статус доступності. Встановіть прапорець ``Book." "available``." -#: ../../src/appx/libms/spec.rst:364 +#: ../../src/spec/libms/spec.rst:364 msgid "" "A user can still create a borrowing request, regardless of the book " "availability status. This is only the visual mark." @@ -758,50 +758,50 @@ msgstr "" "Користувач все одно може створити запит на позику, незалежно від статусу " "доступності книги. Це лише візуальна позначка." -#: ../../src/appx/libms/spec.rst:368 +#: ../../src/spec/libms/spec.rst:368 msgid "Detail view" msgstr "Детальний перегляд" -#: ../../src/appx/libms/spec.rst:372 +#: ../../src/spec/libms/spec.rst:372 msgid "" "The detailed view of a specific book, presenting comprehensive information:" msgstr "Детальний огляд конкретної книги, що містить вичерпну інформацію:" -#: ../../src/appx/libms/spec.rst:374 +#: ../../src/spec/libms/spec.rst:374 msgid "**Title**: Display the book's title prominently." msgstr "**Назва**: Покажіть назву книги на видному місці." -#: ../../src/appx/libms/spec.rst:375 +#: ../../src/spec/libms/spec.rst:375 msgid "**Genre(s)**: List all associated genres (if any)." msgstr "**Жанр(и)**: Перелічіть усі пов'язані жанри (якщо такі є)." -#: ../../src/appx/libms/spec.rst:376 +#: ../../src/spec/libms/spec.rst:376 msgid "**Author(s)**: List all associated authors." msgstr "**Автор(и)**: Перерахуйте всіх асоційованих авторів." -#: ../../src/appx/libms/spec.rst:377 +#: ../../src/spec/libms/spec.rst:377 msgid "**ISBN**: The International Standard Book Number." msgstr "**ISBN**: Міжнародний стандартний номер книги." -#: ../../src/appx/libms/spec.rst:378 +#: ../../src/spec/libms/spec.rst:378 msgid "**Published Date**: When the book was published." msgstr "**Дата публікації**: Коли вийшла друком книга." -#: ../../src/appx/libms/spec.rst:379 +#: ../../src/spec/libms/spec.rst:379 msgid "" "**Publisher**: The name of the entity or company responsible for publishing" msgstr "" "**Видавець**: Назва організації або компанії, відповідальної за публікацію" -#: ../../src/appx/libms/spec.rst:380 +#: ../../src/spec/libms/spec.rst:380 msgid "**Summary**: A full summary or description of the book. the book." msgstr "**Коротка анотація**: Повне резюме або опис книги. книги." -#: ../../src/appx/libms/spec.rst:382 +#: ../../src/spec/libms/spec.rst:382 msgid "**Action Buttons** (For authenticated users only):" msgstr "**Кнопки дій** (Тільки для авторизованих користувачів):" -#: ../../src/appx/libms/spec.rst:384 +#: ../../src/spec/libms/spec.rst:384 msgid "" "**Borrow Request Button**: If the user has no associated borrow request they " "can create a new one." @@ -809,7 +809,7 @@ msgstr "" "**Кнопка запиту на позику**: Якщо користувач не має пов'язаного запиту на " "позику, він може створити новий." -#: ../../src/appx/libms/spec.rst:386 +#: ../../src/spec/libms/spec.rst:386 msgid "" "**Gather Book Button**: If the user's borrow request for this book has been " "approved, allow the user to confirm they've picked up the book." @@ -817,11 +817,11 @@ msgstr "" "**Кнопка Забрати книгу**: Якщо запит користувача на позику цієї книги було " "схвалено, дозвольте користувачеві підтвердити, що він забрав книгу." -#: ../../src/appx/libms/spec.rst:391 +#: ../../src/spec/libms/spec.rst:391 msgid "**Fetching Book Details**:" msgstr "**Доступ до деталей книги**:" -#: ../../src/appx/libms/spec.rst:393 +#: ../../src/spec/libms/spec.rst:393 msgid "" "Use the book's identifier (usually a primary key) to fetch its details from " "the database." @@ -829,11 +829,11 @@ msgstr "" "Використовуйте ідентифікатор книги (зазвичай первинний ключ), щоб отримати " "інформацію про неї з бази даних." -#: ../../src/appx/libms/spec.rst:396 +#: ../../src/spec/libms/spec.rst:396 msgid "**Checking User Authentication**:" msgstr "**Перевірка автентичності користувача**:" -#: ../../src/appx/libms/spec.rst:398 +#: ../../src/spec/libms/spec.rst:398 msgid "" "Determine if a user is authenticated. If they are, display the appropriate " "action buttons based on the book's availability status and any existing " @@ -843,15 +843,15 @@ msgstr "" "кнопки дій на основі статусу доступності книги та наявних запитів " "користувача на позику." -#: ../../src/appx/libms/spec.rst:402 +#: ../../src/spec/libms/spec.rst:402 msgid "**Handling Borrow Requests**:" msgstr "**Обробка запитів на позику**:" -#: ../../src/appx/libms/spec.rst:404 +#: ../../src/spec/libms/spec.rst:404 msgid "If an authenticated user clicks on the \"Borrow Request\" button:" msgstr "Якщо авторизований користувач натискає кнопку \"Запит на позику\":" -#: ../../src/appx/libms/spec.rst:406 +#: ../../src/spec/libms/spec.rst:406 msgid "" "Create a new borrow request in the ``BorrowRequest`` model with status " "\"pending\"." @@ -859,11 +859,11 @@ msgstr "" "Створіть новий запит на позику в моделі ``BorrowRequest`` зі статусом \"на " "розгляді\"." -#: ../../src/appx/libms/spec.rst:408 +#: ../../src/spec/libms/spec.rst:408 msgid "Update the book's status to \"Awaiting approval\"." msgstr "Оновіть статус книги на \"Очікує затвердження\"." -#: ../../src/appx/libms/spec.rst:409 +#: ../../src/spec/libms/spec.rst:409 msgid "" "Redirect the user to a confirmation page or display a message indicating the " "request has been made." @@ -871,11 +871,11 @@ msgstr "" "Перенаправлення користувача на сторінку підтвердження або відображення " "повідомлення про те, що запит було зроблено." -#: ../../src/appx/libms/spec.rst:412 +#: ../../src/spec/libms/spec.rst:412 msgid "**Handling Book Gathering**:" msgstr "**Опрацювання Позики Книги**:" -#: ../../src/appx/libms/spec.rst:414 +#: ../../src/spec/libms/spec.rst:414 msgid "" "If an authenticated user has an approved borrow request and clicks the " "\"Gather Book\" button:" @@ -883,15 +883,15 @@ msgstr "" "Якщо авторизований користувач має схвалений запит на позику і натискає " "кнопку \"Зібрати книгу\":" -#: ../../src/appx/libms/spec.rst:417 +#: ../../src/spec/libms/spec.rst:417 msgid "Update the book's status to \"Borrowed\"." msgstr "Оновіть статус книги на \"Позичена\"." -#: ../../src/appx/libms/spec.rst:418 +#: ../../src/spec/libms/spec.rst:418 msgid "Update the borrow request's status to \"complete\"." msgstr "Оновіть статус запиту на позику до \"завершено\"." -#: ../../src/appx/libms/spec.rst:419 +#: ../../src/spec/libms/spec.rst:419 msgid "" "Redirect the user to a confirmation page or display a message indicating " "they've picked up the book." @@ -899,7 +899,7 @@ msgstr "" "Перенаправляйте користувача на сторінку підтвердження або показуйте " "повідомлення про те, що він забрав книгу." -#: ../../src/appx/libms/spec.rst:423 +#: ../../src/spec/libms/spec.rst:423 msgid "" "Always ensure the user's actions are authenticated and authorized. This " "prevents unauthorized borrow requests or gathering of books. Also, consider " @@ -911,20 +911,20 @@ msgstr "" "подумайте про те, щоб додати обробку помилок для випадків, коли не вдається " "отримати дані про книгу, або будь-яких інших непередбачуваних проблем." -#: ../../src/appx/libms/spec.rst:429 +#: ../../src/spec/libms/spec.rst:429 msgid "Books management" msgstr "Управління книгами" -#: ../../src/appx/libms/spec.rst:431 +#: ../../src/spec/libms/spec.rst:431 msgid "These views are available only for staff (librarians and admins)." msgstr "" "Ці перегляди доступні лише для персоналу (бібліотекарів та адміністраторів)." -#: ../../src/appx/libms/spec.rst:434 +#: ../../src/spec/libms/spec.rst:434 msgid "Authors and genres management" msgstr "Управління авторами та жанрами" -#: ../../src/appx/libms/spec.rst:436 +#: ../../src/spec/libms/spec.rst:436 msgid "" "Only librarians and admins can add, modify or delete authors and genres. No " "additional views for CRUD operations required (except admin site). " @@ -937,11 +937,11 @@ msgstr "" "через сайт адміністратора. Тільки адміністратори можуть видаляти авторів або " "жанри." -#: ../../src/appx/libms/spec.rst:442 +#: ../../src/spec/libms/spec.rst:442 msgid "Book creation and update" msgstr "Створення та оновлення книг" -#: ../../src/appx/libms/spec.rst:444 +#: ../../src/spec/libms/spec.rst:444 msgid "" "The template should comprise a form with fields corresponding to the book's " "attributes. Here are the essential elements for the form:" @@ -949,32 +949,32 @@ msgstr "" "Шаблон повинен містити форму з полями, що відповідають атрибутам книги. Ось " "основні елементи форми:" -#: ../../src/appx/libms/spec.rst:448 ../../src/appx/libms/spec.rst:463 +#: ../../src/spec/libms/spec.rst:448 ../../src/spec/libms/spec.rst:463 msgid "A text input field." msgstr "Поле для введення тексту." -#: ../../src/appx/libms/spec.rst:451 +#: ../../src/spec/libms/spec.rst:451 msgid "A textarea for a brief description or synopsis." msgstr "Текстова область для короткого опису або синопсису." -#: ../../src/appx/libms/spec.rst:454 +#: ../../src/spec/libms/spec.rst:454 msgid "A text input field for the book's International Standard Book Number." msgstr "Поле для введення міжнародного стандартного номера книги." -#: ../../src/appx/libms/spec.rst:457 +#: ../../src/spec/libms/spec.rst:457 msgid "A checkbox indicating if a book is available. Defaults to ``True``." msgstr "" "Прапорець, що вказує на наявність книги. За замовчуванням стоїть ``True``." -#: ../../src/appx/libms/spec.rst:460 +#: ../../src/spec/libms/spec.rst:460 msgid "A date input field." msgstr "Поле для введення дати." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Genres" msgstr "Жанри" -#: ../../src/appx/libms/spec.rst:466 +#: ../../src/spec/libms/spec.rst:466 msgid "" "A multi-select list of genres (e.g. dropdown, checkboxes etc.). This should " "fetch available genres from the database and allow users to select zero or " @@ -984,11 +984,11 @@ msgstr "" "тощо). Він повинен отримувати доступні жанри з бази даних і дозволяти " "користувачам вибирати нуль або більше жанрів." -#: ../../src/appx/libms/spec.rst +#: ../../src/spec/libms/spec.rst msgid "Authors" msgstr "Автори" -#: ../../src/appx/libms/spec.rst:471 +#: ../../src/spec/libms/spec.rst:471 msgid "" "A multi-select list of authors (e.g. dropdown, checkboxes etc.). This should " "fetch available authors from the database and allow users to select one or " @@ -998,7 +998,7 @@ msgstr "" "тощо). Він повинен отримувати доступних авторів з бази даних і дозволяти " "користувачам вибирати одного або декількох авторів." -#: ../../src/appx/libms/spec.rst:477 +#: ../../src/spec/libms/spec.rst:477 msgid "" "If it's an *update* action, pre-populate the form fields with the existing " "details of the book fetched from the database." @@ -1006,23 +1006,23 @@ msgstr "" "Якщо це дія *оновлення*, попередньо заповніть поля форми існуючими даними " "книги, отриманими з бази даних." -#: ../../src/appx/libms/spec.rst:479 +#: ../../src/spec/libms/spec.rst:479 msgid "For *creation*, provide an empty form for the librarian to fill in." msgstr "Для *створення* надайте бібліотекарю порожню форму для заповнення." -#: ../../src/appx/libms/spec.rst:480 +#: ../../src/spec/libms/spec.rst:480 msgid "Ensure the published date is logical (e.g. not a future date)." msgstr "" "Переконайтеся, що опублікована дата є логічною (наприклад, не є датою " "майбутнього)." -#: ../../src/appx/libms/spec.rst:481 +#: ../../src/spec/libms/spec.rst:481 msgid "Validate required inputs, according to general ``Book`` model rules." msgstr "" "Перевірити необхідні вхідні дані відповідно до загальних правил моделі " "``Book``." -#: ../../src/appx/libms/spec.rst:482 +#: ../../src/spec/libms/spec.rst:482 msgid "" "If validations pass: save changes to the database; otherwise, provide " "helpful error messages." @@ -1030,7 +1030,7 @@ msgstr "" "Якщо перевірка пройшла успішно: збережіть зміни в базі даних; в іншому " "випадку надайте корисні повідомлення про помилки." -#: ../../src/appx/libms/spec.rst:486 +#: ../../src/spec/libms/spec.rst:486 msgid "" "You MAY provide a mechanism (like modal or a quick entry form) to add a new " "genre or author without leaving the book form page." @@ -1039,40 +1039,40 @@ msgstr "" "введення) для додавання нового жанру або автора, не виходячи зі сторінки " "форми книги." -#: ../../src/appx/libms/spec.rst:490 +#: ../../src/spec/libms/spec.rst:490 msgid "Book deletion" msgstr "Видалення книги" -#: ../../src/appx/libms/spec.rst:492 +#: ../../src/spec/libms/spec.rst:492 msgid "" "Only librarians and administrators are permitted to perform this action." msgstr "Тільки бібліотекарі та адміністратори мають право виконувати цю дію." -#: ../../src/appx/libms/spec.rst:496 +#: ../../src/spec/libms/spec.rst:496 msgid "A confirm delete form with **Submit** and **Cancel** buttons." msgstr "Форма підтвердження видалення з кнопками **Подати** та **Скасувати**." -#: ../../src/appx/libms/spec.rst:500 +#: ../../src/spec/libms/spec.rst:500 msgid "Authorize user before deleting performing deletion." msgstr "Авторизуйте користувача перед виконанням видалення." -#: ../../src/appx/libms/spec.rst:501 +#: ../../src/spec/libms/spec.rst:501 msgid "" "If a form is submitted, a book should be removed from the library collection." msgstr "Якщо формуляр подано, книга має бути вилучена з бібліотечної колекції." -#: ../../src/appx/libms/spec.rst:503 +#: ../../src/spec/libms/spec.rst:503 msgid "" "If deletion is canceled view should redirect back to book detail view page." msgstr "" "Якщо видалення скасовано, перегляд має бути перенаправлений назад на " "сторінку детального перегляду книги." -#: ../../src/appx/libms/spec.rst:506 +#: ../../src/spec/libms/spec.rst:506 msgid "Borrow requests" msgstr "Запити на позики" -#: ../../src/appx/libms/spec.rst:508 +#: ../../src/spec/libms/spec.rst:508 msgid "" "This view facilitates the management of borrowing requests for librarians " "and admins, aiding in their prompt handling." @@ -1080,7 +1080,7 @@ msgstr "" "Цей перегляд полегшує бібліотекарям і адміністраторам управління запитами на " "позики, допомагаючи оперативно їх обробляти." -#: ../../src/appx/libms/spec.rst:513 +#: ../../src/spec/libms/spec.rst:513 msgid "" "Present a table showcasing the list of borrow requests. Each row embodies a " "borrow request and encompasses:" @@ -1088,19 +1088,19 @@ msgstr "" "Уявіть таблицю, що відображає список запитів на позики. Кожен рядок " "відображає один запит на позику і включає в себе всі запити:" -#: ../../src/appx/libms/spec.rst:516 +#: ../../src/spec/libms/spec.rst:516 msgid "**Book Title**: Title of the requested book." msgstr "**Назва книги**: Назва запитуваної книги." -#: ../../src/appx/libms/spec.rst:517 +#: ../../src/spec/libms/spec.rst:517 msgid "**User**: Identifier of the user who initiated the request." msgstr "**Користувач**: Ідентифікатор користувача, який ініціював запит." -#: ../../src/appx/libms/spec.rst:518 +#: ../../src/spec/libms/spec.rst:518 msgid "**Request Date**: Date of the request's inception." msgstr "**Дата запиту**: Дата створення запиту." -#: ../../src/appx/libms/spec.rst:519 +#: ../../src/spec/libms/spec.rst:519 msgid "" "**Due Date**: - Input field for librarians to set upon approval for new " "requests. - For approved ones, display the librarian-set date." @@ -1109,7 +1109,7 @@ msgstr "" "нових запитів. - Для затверджених запитів відображатиметься дата, " "встановлена бібліотекарем." -#: ../../src/appx/libms/spec.rst:522 +#: ../../src/spec/libms/spec.rst:522 msgid "" "**Status**: Present state of the request (New, Approved, Completed, " "Declined)." @@ -1117,7 +1117,7 @@ msgstr "" "**Статус**: Поточний стан запиту (Новий, Затверджений, Завершений, " "Відхилений)." -#: ../../src/appx/libms/spec.rst:524 +#: ../../src/spec/libms/spec.rst:524 msgid "" "**Approve Button**: Visible for new requests. Toggles status to \"Approved\" " "and freezes the due date." @@ -1125,7 +1125,7 @@ msgstr "" "**Кнопка \"Затвердити\"**: Відображається для нових запитів. Перемикає " "статус на \"Затверджено\" і заморожує дату виконання." -#: ../../src/appx/libms/spec.rst:526 +#: ../../src/spec/libms/spec.rst:526 msgid "" "**Decline Button**: Appears for new requests. Sets status to \"Declined\" " "and can prompt for a decline reason." @@ -1133,7 +1133,7 @@ msgstr "" "**Кнопка \"Відхилити\"**: З'являється для нових запитів. Встановлює статус " "\"Відхилено\" і може запитувати причину відхилення." -#: ../../src/appx/libms/spec.rst:528 +#: ../../src/spec/libms/spec.rst:528 msgid "" "**Complete Button**: Displayed for approved requests. Marks the request as " "completed." @@ -1141,11 +1141,11 @@ msgstr "" "**Кнопка \"Завершити\"**: Відображається для затверджених запитів. Позначає " "запит як завершений." -#: ../../src/appx/libms/spec.rst:532 +#: ../../src/spec/libms/spec.rst:532 msgid "View Logic" msgstr "View Logic" -#: ../../src/appx/libms/spec.rst:533 +#: ../../src/spec/libms/spec.rst:533 msgid "" "**Approve Borrow Request**: - Validate book availability. - Modify book " "status to \"Borrowed\". - Switch borrow request to \"Approved\". - " @@ -1157,7 +1157,7 @@ msgstr "" "\"Затверджено\". - Визначте дату повернення відповідно до побажань " "бібліотекаря. - Повідомте користувача про схвалення та дату повернення." -#: ../../src/appx/libms/spec.rst:540 +#: ../../src/spec/libms/spec.rst:540 msgid "" "**Decline Borrow Request**: - Change borrow request status to " "\"Declined\". - Optionally, procure decline reason from librarian. - " @@ -1167,7 +1167,7 @@ msgstr "" "За бажанням, запитайте причину відмови у бібліотекаря. - Повідомте " "користувача про відхилення." -#: ../../src/appx/libms/spec.rst:545 +#: ../../src/spec/libms/spec.rst:545 msgid "" "**Complete Borrow Request**: - Ensure book's return. - Update book " "status to \"Available\". - Toggle borrow request status to \"Completed\". " @@ -1178,7 +1178,7 @@ msgstr "" "\"Виконано\". - Якщо потрібно, запишіть будь-які примітки або пошкодження " "під час повернення." -#: ../../src/appx/libms/spec.rst:552 +#: ../../src/spec/libms/spec.rst:552 msgid "" "Implementing reminders for near-due borrow requests can function as an alert " "system for both the librarian and the user." From c9350cbf2754d12a679d79bd03423949239d514c Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Fri, 22 Dec 2023 21:23:59 +0200 Subject: [PATCH 5/7] Update giver site specification submodule --- src/spec/giver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/spec/giver b/src/spec/giver index 2006c3f5e..858138001 160000 --- a/src/spec/giver +++ b/src/spec/giver @@ -1 +1 @@ -Subproject commit 2006c3f5eb8c5615574f4fd0e6dd5252135bdbee +Subproject commit 858138001350b9e33d3ff45fdc69badcbe7425a4 From a3e2ee504525495eb139c2257382c28afd235e69 Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Fri, 22 Dec 2023 22:13:24 +0200 Subject: [PATCH 6/7] Add redirects support for the documentation builder --- poetry.lock | 17 ++++++++++++++++- pyproject.toml | 1 + requirements.txt | 1 + src/conf.py | 1 + 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index 99590a4bb..31e29235f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -846,6 +846,21 @@ sphinx = ">=2.0" [package.extras] dev = ["black (==22.12.0)"] +[[package]] +name = "sphinx-reredirects" +version = "0.1.3" +description = "Handles redirects for moved pages in Sphinx documentation projects" +category = "main" +optional = false +python-versions = ">=3.5" +files = [ + {file = "sphinx_reredirects-0.1.3-py3-none-any.whl", hash = "sha256:02c53437c467cf9ed89863eff3addedc01d129624b2f03ab6302518fb77a2c89"}, + {file = "sphinx_reredirects-0.1.3.tar.gz", hash = "sha256:56e222d285f76c944fd370f36ad3a1a66103a88b552e97d3d24a622bb9465de8"}, +] + +[package.dependencies] +sphinx = "*" + [[package]] name = "sphinx-rtd-theme" version = "1.3.0" @@ -1094,4 +1109,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "12aa9d45359f466ae21cd3f0222d067abdfcc88852b42c39c7878d4ced610431" +content-hash = "ba73b72ea0fd7fb6f0d95dbeb8f1a785e0f39374864274262542d6016c1136cf" diff --git a/pyproject.toml b/pyproject.toml index d349443d3..3e5f52937 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,6 +42,7 @@ sphinxcontrib-mermaid = "^0.8.1" sphinx-copybutton = "^0.5.2" toml = "^0.10.2" sphinx-material = "^0.0.36" +sphinx-reredirects = "^0.1.3" [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/requirements.txt b/requirements.txt index fdca6cacc..a3893cf3c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -32,6 +32,7 @@ soupsieve==2.5 ; python_version >= "3.9" and python_version < "4.0" sphinx-copybutton==0.5.2 ; python_version >= "3.9" and python_version < "4.0" sphinx-intl==2.1.0 ; python_version >= "3.9" and python_version < "4.0" sphinx-material==0.0.36 ; python_version >= "3.9" and python_version < "4.0" +sphinx-reredirects==0.1.3 ; python_version >= "3.9" and python_version < "4.0" sphinx-rtd-theme==1.3.0 ; python_version >= "3.9" and python_version < "4.0" sphinx==6.2.1 ; python_version >= "3.9" and python_version < "4.0" sphinxcontrib-applehelp==1.0.7 ; python_version >= "3.9" and python_version < "4.0" diff --git a/src/conf.py b/src/conf.py index 310e3eb6e..b457f4e4f 100644 --- a/src/conf.py +++ b/src/conf.py @@ -32,6 +32,7 @@ "sphinx_rtd_theme", "myst_parser", "sphinx_copybutton", + "sphinx_reredirects", ] source_suffix = { ".txt": "restructuredtext", From 6874c7fd0e384816b7908fb556bbe19a3958c211 Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Fri, 22 Dec 2023 22:14:00 +0200 Subject: [PATCH 7/7] Setup redirects for renamed submodules --- src/conf.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/conf.py b/src/conf.py index b457f4e4f..8aa336de3 100644 --- a/src/conf.py +++ b/src/conf.py @@ -47,6 +47,12 @@ ] suppress_warnings = [] +# options for reredirects +redirects = { + "appx/blog/spec": "../../spec/blog/index.html", + "appx/libms/spec": "../../spec/libms/index.html", +} + # options for bibliography bibtex_bibfiles = ["refs.bib"] bibtex_reference_style = "label"