С помощью шаблона плагина вы можете легко создать новый плагин и настроить среду разработки Docker, которая устанавливает Baserow в качестве зависимости. Он включает линтеры и может легко устанавливаться через Cookiecutter.
Структура, используемая для плагинов Baserow, еще не окончательна и может измениться для поддержки установки плагинов через маркетплейс, доступный в Baserow.
Чтобы использовать шаблон плагина, сначала необходимо установить инструмент Cookiecutter (pip install cookiecutter
).
После установки Cookiecutter выполните следующую команду, чтобы создать новый плагин Baserow из нашего шаблона. В этом руководстве мы назовем наш плагин "My Baserow Plugin", однако вы можете выбрать свое собственное имя плагина, когда вас об этом попросит Cookiecutter.
Python-модуль зависит от выбранного вами имени плагина. Например, если мы выберем "My Baserow Plugin", имя Django-приложения должно быть my_baserow_plugin, а имя модуля Nuxt будет my-baserow-plugin.
cookiecutter gl:baserow/baserow --directory plugin-boilerplate
project_name [My Baserow Plugin]:
project_slug [my-baserow-plugin]:
project_module [my_baserow_plugin]:
Если вы не видите никаких ошибок, это означает, что ваш плагин был создан.
Теперь, чтобы запустить вашу среду разработки, выполните следующие команды:
cd my-baserow-plugin
# Включите Docker buildkit
export COMPOSE_DOCKER_CLI_BUILD=1
export DOCKER_BUILDKIT=1
# Установите эти переменные, чтобы образы создавались и запускались с тем же uid/gid, что и у вашего пользователя.
# Это предотвращает проблемы с правами доступа при монтировании локальных источников в образы.
export PLUGIN_BUILD_UID=$(id -u)
export PLUGIN_BUILD_GID=$(id -g)
# Вы можете опционально `export COMPOSE_FILE=docker-compose.dev.yml`, чтобы не использовать флаг `-f docker-compose.dev.yml` каждый раз.
docker-compose -f docker-compose.dev.yml up -d --build
docker-compose -f docker-compose.dev.yml logs -f
Среда разработки теперь запущена и доступна по адресу http://localhost.
Вы можете проверить, что плагин работает, посетив демонстрационный URL http://localhost/starting.
Наиболее важная часть внутри папки my-baserow-plugin
— это папка plugins/my_baserow_plugin
. Здесь вы найдете весь код вашего плагина. Для примера мы добавим простой эндпоинт, который всегда возвращает один и тот же ответ, и покажем этот текст на странице в веб-фронтенде.
Мы хотим предоставить эндпоинт по следующему URL http://localhost/api/my-baserow-plugin/example/, который возвращает JSON-ответ, содержащий заголовок и некоторое содержимое. Создайте/измените следующие файлы:
Сначала откройте plugins/my_baserow_plugin/backend/src/my_baserow_plugin/api/views.py
и добавьте свой новый представление ниже существующего StartingView
.
class ExampleView(APIView):
permission_classes = (AllowAny,)
def get(self, request):
return Response({
'title': 'Example title',
'content': 'Example text'
})
Затем измените plugins/my_baserow_plugin/backend/src/my_baserow_plugin/api/urls.py
и добавьте URL-шаблон для нового представления.
from django.urls import re_path
from .views import StartingView, ExampleView
app_name = 'my_baserow_plugin.api'
urlpatterns = [
re_path(r"starting/$", StartingView.as_view(), name="starting"),
re_path(r'example/$', ExampleView.as_view(), name='example'),
]
С этими изменениями вы должны иметь возможность посетить эндпоинт http://localhost/api/my-baserow_plugin/example/, который должен возвращать желаемое содержимое.
Теперь, когда у нас есть эндпоинт, мы хотим показать ответ на странице в веб-фронтенде. Добавьте/измените следующий код.
Измените plugins/my_baserow_plugin/web-frontend/modules/my-baserow-plugin/routes.js
и добавьте свой новый маршрут после существующего маршрута 'starting':
import path from 'path'
export const routes = [
{
name: 'starting',
path: '/starting',
component: path.resolve(__dirname, 'pages/starting.vue'),
},
{
name: 'example',
path: '/example',
component: path.resolve(__dirname, 'pages/example.vue'),
},
]
Добавьте plugins/my_baserow_plugin/web-frontend/modules/my-baserow-plugin/pages/example.vue
<template>
<div>
{{ content }}
</div>
</template>
<script>
export default {
async asyncData({app}) {
// TODO Убедитесь, что вы измените этот префикс URL на имя вашего плагина с разделением нижними подчеркиваниями и в нижнем регистре.
const response = await app.$client.get('my_baserow_plugin/example/')
return response.data
},
head() {
return {
title: this.title,
}
},
}
</script>
Теперь вам нужно перезапустить сервер разработки Nuxt, так как маршруты были изменены и загружаются модулем module.js.
Выполните docker-compose -f docker-compose.dev.yml restart
, чтобы сделать это.
Если вы теперь посетите http://localhost/example в своем браузере, вы должны увидеть страницу, содержащую заголовок и содержимое, определенные в эндпоинте.
Теперь у вас должно быть базовое представление о том, как вносить изменения в Baserow через шаблон плагина. Изменения, о которых мы здесь говорили, конечно, приведены для примера и предназначены только для того, чтобы дать вам представление о том, как это работает.
После того как вы запустили среду разработки и все контейнеры работают, вы можете выполнить следующие команды для запуска линтеров.
docker-compose -f docker-compose.dev.yml exec my-baserow-plugin /baserow.sh backend-cmd bash -c bash
cd /baserow/data/plugins/my_baserow_plugin/web-frontend/
yarn run eslint --fix
yarn run stylelint
yarn add your_dependency
cd /baserow/data/plugins/my_baserow_plugin/backend/
black .
flake8
docker-compose -f docker-compose.dev.yml exec -T my-baserow-plugin /baserow/supervisor/docker-postgres-setup.sh run <<< "ALTER USER baserow CREATEDB;"
docker-compose -f docker-compose.dev.yml exec my-baserow-plugin /baserow.sh backend-cmd bash -c bash
cd /baserow/data/plugins/my_baserow_plugin/backend/
pytest
Руководство Создание плагина содержит дополнительную информацию о создании плагинов. Также см. README.md в корне папки вашего плагина.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )