Налаштування для хостингу кількох дерев¶
За замовчуванням, 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-вантажі.
Імена користувачів повинні бути унікальними для всіх дерев. Адреси електронної пошти не повинні бути унікальними (з моменту Gramps Web API 3.22), тому одна й та ж особа може, наприклад, мати облікові записи в кількох деревах, використовуючи одну адресу електронної пошти.
Створити нове дерево¶
Щоб створити нове дерево, рекомендується надіслати POST запит до кінцевої точки /trees/, а не використовувати Gramps CLI. Це використовуватиме UUIDv4 як ID дерева, що забезпечує додаткову безпеку, оскільки ім'я не може бути вгадане. Новостворені дерева використовують бекенд бази даних, встановлений у параметрі конфігурації NEW_DB_BACKEND: SQLite (за замовчуванням) або SharedPostgreSQL. Дивіться Використання бази даних PostgreSQL для деталей.
Авторизація¶
Для авторизації (отримання токена) необхідні лише ім'я користувача та пароль, як у режимі одного дерева, оскільки 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 у конфігурації фронтенду.