Exemple #1
0
 def get_queryset(self):
     queryset = super().get_queryset()
     if self.action == "get" or self.action == "list":
         if can_install_plugins(self.organization) or can_configure_plugins(self.organization):
             return queryset
     else:
         if can_install_plugins(self.organization):
             return queryset
     return queryset.none()
Exemple #2
0
    def check_for_updates(self, request: request.Request, **kwargs):
        if not can_install_plugins(self.organization):
            raise PermissionDenied("Plugin installation is not available for the current organization!")
        plugin = self.get_object()
        latest_url = parse_url(plugin.url, get_latest_if_none=True)
        plugin.latest_tag = latest_url.get("tag", latest_url.get("version", None))
        plugin.latest_tag_checked_at = now()
        plugin.save()

        return Response({"plugin": PluginSerializer(plugin).data})
Exemple #3
0
 def upgrade(self, request: request.Request, **kwargs):
     plugin: Plugin = self.get_object()
     organization = self.organization
     if plugin.organization != organization:
         raise NotFound()
     if not can_install_plugins(self.organization, plugin.organization_id):
         raise PermissionDenied("Plugin upgrading is not available for the current organization!")
     serializer = PluginSerializer(plugin, context={"organization": organization})
     validated_data = {}
     if plugin.plugin_type != Plugin.PluginType.SOURCE:
         validated_data = update_validated_data_from_url({}, plugin.url)
         serializer.update(plugin, validated_data)
     return Response(serializer.data)
Exemple #4
0
    def check_for_updates(self, request: request.Request, **kwargs):
        if not can_install_plugins(self.organization):
            raise PermissionDenied(
                "Plugin installation is not available for the current organization!"
            )

        plugin = self.get_object()
        latest_url = parse_url(plugin.url, get_latest_if_none=True)

        # use update to not trigger the post_save signal and avoid telling the plugin server to reload vms
        Plugin.objects.filter(id=plugin.id).update(latest_tag=latest_url.get(
            "tag", latest_url.get("version", None)),
                                                   latest_tag_checked_at=now())

        return Response({"plugin": PluginSerializer(plugin).data})