Beispiel #1
0
def create(*, db_session, service_plugin_in: ServicePluginCreate) -> ServicePlugin:
    """
    Create a new service_plugin.
    """
    service = plugin = None
    # service = Service()
    if service_plugin_in.service:
        if service_plugin_in.service.org_id or service_plugin_in.service.org_id == 0:
            service = service_service.get_by_code_and_org_code(
                db_session=db_session, code=service_plugin_in.service.code, org_id=service_plugin_in.service.org_id
            )
        else:
            service = service_service.get_by_code(
                db_session=db_session, code=service_plugin_in.service.code
            )

    plugin = Plugin()
    if service_plugin_in.plugin:
        plugin = plugin_service.get_by_slug(
            db_session=db_session, slug=service_plugin_in.plugin.slug)

    if service is None or plugin is None:
        raise HTTPException(status_code=404, detail="service is None or plugin is None.")
    service_plugin = ServicePlugin(
        **service_plugin_in.dict(exclude={"service", "plugin", "config"}), service_id=service.id, plugin_id=plugin.id, config=plugin.config
    )

    db_session.add(service_plugin)
    db_session.commit()
    return service_plugin
Beispiel #2
0
def create(*, db_session,
           service_plugin_in: ServicePluginCreate) -> ServicePlugin:
    """
    Create a new service_plugin.
    """
    service = plugin = None
    # service = Service()
    if service_plugin_in.service:
        service = service_service.get_by_code(
            db_session=db_session, code=service_plugin_in.service.code)

    plugin = Plugin()
    if service_plugin_in.plugin:
        plugin = plugin_service.get_by_slug(db_session=db_session,
                                            slug=service_plugin_in.plugin.slug)

    if service is None or plugin is None:
        raise HTTPException(status_code=204,
                            detail="service is None or plugin is None.")
    service_plugin = ServicePlugin(
        **service_plugin_in.dict(exclude={"service", "plugin"}),
        service=service,
        plugin=plugin,
    )

    db_session.add(service_plugin)
    db_session.commit()
    return service_plugin
Beispiel #3
0
    def register(self, cls):
        from dispatch.database import SessionLocal
        from dispatch.plugin import service as plugin_service
        from dispatch.plugin.models import Plugin

        db_session = SessionLocal()
        record = plugin_service.get_by_slug(db_session=db_session,
                                            slug=cls.slug)
        if not record:
            plugin = Plugin(
                title=cls.title,
                slug=cls.slug,
                type=cls.type,
                version=cls.version,
                author=cls.author,
                author_url=cls.author_url,
                required=cls.required,
                multiple=cls.multiple,
                description=cls.description,
                enabled=cls.enabled,
            )
            db_session.add(plugin)
        else:
            # we only update values that should change
            record.tile = cls.title
            record.version = cls.version
            record.author = cls.author
            record.author_url = cls.author_url
            record.description = cls.description
            db_session.add(record)

        db_session.commit()
        self.add(f"{cls.__module__}.{cls.__name__}")
        return cls
Beispiel #4
0
def install_plugins(force):
    """Installs all plugins, or only one."""
    from dispatch.database import SessionLocal
    from dispatch.plugin import service as plugin_service
    from dispatch.plugin.models import Plugin

    db_session = SessionLocal()
    for p in plugins.all():
        record = plugin_service.get_by_slug(db_session=db_session, slug=p.slug)
        if not record:
            click.secho(
                f"Installing plugin... Slug: {p.slug} Version: {p.version}",
                fg="blue")
            record = Plugin(
                title=p.title,
                slug=p.slug,
                type=p.type,
                version=p.version,
                author=p.author,
                author_url=p.author_url,
                required=p.required,
                multiple=p.multiple,
                description=p.description,
                enabled=p.enabled,
            )
            db_session.add(record)

        if force:
            click.secho(
                f"Updating plugin... Slug: {p.slug} Version: {p.version}",
                fg="blue")
            # we only update values that should change
            record.tile = p.title
            record.version = p.version
            record.author = p.author
            record.author_url = p.author_url
            record.description = p.description
            record.required = p.required
            record.type = p.type
            db_session.add(record)

        db_session.commit()
Beispiel #5
0
    def register(self, cls):
        from dispatch.database import SessionLocal
        from dispatch.plugin import service as plugin_service
        from dispatch.plugin.models import Plugin

        db_session = SessionLocal()
        record = plugin_service.get_by_slug(db_session=db_session,
                                            slug=cls.slug)
        if cls.slug == "kandbox_env":
            logger.debug("Debugging loading kandbox_env")
        if not record:

            config = {}
            config_spec = {}
            try:
                config_spec = cls.config_form_spec
                config = cls.default_config
            except Exception as e:
                logger.warn(
                    f"Unable to find config spec for plugin: {cls.slug}, type = {cls.type} "
                )
            plugin = Plugin(
                title=cls.title,
                slug=cls.slug,
                type=cls.type,
                version=cls.version,
                author=cls.author,
                author_url=cls.author_url,
                required=cls.required,
                multiple=cls.multiple,
                description=cls.description,
                enabled=cls.enabled,
                config=config,
                config_form_spec=config_spec,
            )
            db_session.add(plugin)
        else:
            # we only update values that should change
            record.tile = cls.title
            record.version = cls.version
            record.author = cls.author
            record.author_url = cls.author_url
            record.description = cls.description
            db_session.add(record)

        db_session.commit()
        db_session.close()
        self.add(f"{cls.__module__}.{cls.__name__}")
        return cls