Налаштування для хостингу кількох дерев¶
За замовчуванням Gramps Web дозволяє доступ лише до однієї бази даних родинного дерева (“дерево”), вказаної в конфігураційному файлі.
Однак, починаючи з версії 0.7.0 бекенду Gramps Web API, також можливо обслуговувати кілька дерев з однієї установки. Проте, кожен користувач (на даний момент) прив'язаний до одного дерева, тому ця конфігурація не підходить для спільного використання дерев між користувачами, а призначена для хостингу кількох ізольованих екземплярів Gramps Web.
Увімкнення підтримки кількох дерев¶
Щоб увімкнути підтримку кількох дерев, параметр конфігурації TREE повинен бути встановлений на один астериск *, наприклад, у конфігураційному файлі:
TREE = "*"
Це зробить всі дерева в директорії бази даних Gramps сервера доступними (за наявності достатніх прав користувача). ID дерева — це назва підкаталогу. Ви можете перерахувати існуючі дерева (імена та ID) за допомогою команди
python -m gramps_webapi --config /app/config/config.cfg tree list
Крім того, вам слід встановити параметр конфігурації MEDIA_PREFIX_TREE на True, щоб забезпечити зберігання медіа-файлів у окремих підкаталогах. В іншому випадку, користувачі зможуть отримати доступ до медіа-файлів, які належать дереву, до якого у них немає дозволу!
Додати обліковий запис користувача до конкретного дерева¶
Щоб додати користувача до конкретного дерева, просто додайте параметр командного рядка --tree TREEID до команди додавання користувача. Ви також можете надіслати POST-запит на кінцеву точку /users/ з властивістю tree, встановленою в JSON-вантажі.
Імена користувачів та адреси електронної пошти повинні бути унікальними для всіх дерев.
Створити нове дерево¶
Щоб створити нове дерево, рекомендується надіслати POST-запит на кінцеву точку /trees/, а не використовувати Gramps CLI. Це використовуватиме UUIDv4 як ID дерева, що забезпечує додаткову безпеку, оскільки ім'я не може бути вгадане. Наразі підтримується лише SQLite для новостворених дерев.
Авторизація¶
Для авторизації (отримання токена) необхідні лише ім'я користувача та пароль, як у режимі одного дерева, оскільки ID дерева відомий для кожного користувача, тому немає потреби його надавати.
Міграція існуючих медіа-файлів¶
Якщо ви хочете мігрувати існуючий екземпляр Gramps Web на підтримку кількох дерев і використовуєте локальні медіа-файли, ви можете просто перемістити їх до підкаталогу оригінального місця з ID дерева як назвою.
Якщо ви використовуєте медіа-файли, розміщені на S3, ви можете використовувати скрипт, наданий у директорії scripts репозиторію gramps-web-api:
python scripts/s3_rename.py BUCKET_NAME TREE_ID
Це передбачає, що відповідні ключі доступу вже встановлені як змінні середовища.
Міграція існуючої бази даних користувачів¶
Якщо ви хочете увімкнути підтримку кількох дерев і повторно використовувати існуючих користувачів, вам потрібно призначити їх до конкретного дерева. Ви можете використовувати наступну команду, надану для цієї мети,
python -m gramps_webapi --config /app/config/config.cfg user fill-tree TREE_ID
Налаштування фронтенду¶
Сторінка реєстрації, доступна з сторінки входу, не працює в налаштуванні з кількома деревами, оскільки для реєстрації потрібно вказати дерево. Тому доцільно встановити hideRegisterLink на true у конфігурації фронтенду.