Ejemplo n.º 1
0
    def delete(self, request, team_name, share_id, *args, **kwargs):
        """
        放弃插件分享
        ---
        parameter:
            - name: team_name
              description: 团队名
              required: true
              type: string
              paramType: path
            - name: share_id
              description: 分享记录ID
              required: true
              type: string
              paramType: path
        """
        try:
            share_record = share_service.get_service_share_record_by_ID(
                ID=share_id, team_name=team_name)
            if not share_record:
                result = general_message(404, "share record not found",
                                         "分享流程不存在")
                return Response(result, status=404)

            if share_record.is_success or share_record.step >= 3:
                result = general_message(400, "share record is complete",
                                         "分享流程已经完成,无法放弃")
                return Response(result, status=404)

            share_plugin = share_repo.get_share_plugin(share_record.group_id)
            if share_plugin and share_plugin.is_complete:
                share_record.delete()
                PluginShareRecordEvent.objects.filter(
                    record_id=share_record.ID).delete()
                share_plugin.delete()
                return Response(general_message(200, msg='', msg_show=''), 200)

            PluginShareRecordEvent.objects.filter(
                record_id=share_record.ID).delete()
            share_record.delete()
            result = general_message(200, "delete success", "放弃成功")
            return Response(result, status=200)
        except Exception as e:
            logger.exception(e)
            result = error_message(e.message)
            return Response(result, status=500)
Ejemplo n.º 2
0
    def get(self, request, team_name, share_id, *args, **kwargs):
        """
        查询分享的插件信息
        ---
        parameter:
            - name: team_name
              description: 团队名
              required: true
              type: string
              paramType: path
            - name: share_id
              description: 分享记录ID
              required: true
              type: string
              paramType: path
        """
        team_id = self.team.tenant_id

        try:
            share_record = share_service.get_service_share_record_by_ID(
                ID=share_id, team_name=team_name)
            if not share_record:
                result = general_message(404, "share record not found",
                                         "分享流程不存在,请退出重试")
                return Response(result, status=404)
            if share_record.is_success or share_record.step >= 3:
                result = general_message(400, "share record is complete",
                                         "分享流程已经完成,请重新进行分享")
                return Response(result, status=400)

            share_plugin_info = dict()
            share_plugin = share_repo.get_share_plugin(share_record.group_id)

            if share_plugin:
                plugin_id = share_plugin.plugin_id
                share_plugin_info = share_plugin.to_dict()
                share_plugin_info["is_shared"] = True
                share_plugin_info.pop("update_time")
            else:
                plugin = plugin_repo.get_plugin_by_plugin_id(
                    team_id, share_record.group_id)
                if not plugin:
                    result = general_message(404,
                                             msg="plugin not exist",
                                             msg_show="插件不存在")
                    return Response(result, status=400)

                plugin_id = plugin.plugin_id

                share_plugin_info["category"] = plugin.category
                share_plugin_info["plugin_key"] = make_uuid()
                share_plugin_info["plugin_id"] = plugin_id
                share_plugin_info["plugin_name"] = plugin.plugin_alias
                share_plugin_info["version"] = "1.0"
                share_plugin_info["desc"] = "This is a default description."
                share_plugin_info["scope"] = "team"
                share_plugin_info["share_id"] = share_record.group_id
                share_plugin_info["pic"] = ""
                share_plugin_info["share_user"] = str(self.user.user_id)
                share_plugin_info["share_team"] = team_name
                share_plugin_info["is_shared"] = False

                plugin_version = plugin_svc.get_tenant_plugin_newest_versions(
                    self.response_region, self.tenant, plugin_id)

                share_plugin_info["build_version"] = plugin_version[
                    0].build_version

                config_groups = []
                for group in plugin_repo.get_plugin_config_groups(
                        plugin_id, plugin_version[0].build_version):
                    group_map = group.to_dict()

                    items = plugin_svc.get_config_items_by_id_metadata_and_version(
                        group.plugin_id, group.build_version,
                        group.service_meta_type)

                    config_items = []
                    for item in items:
                        config_items.append(item.to_dict())

                    group_map['config_items'] = config_items
                    config_groups.append(group_map)

                share_plugin_info["config_groups"] = config_groups

            return Response(
                general_message(200,
                                "",
                                "",
                                bean={'share_plugin_info': share_plugin_info}),
                200)
        except Exception as e:
            logger.exception(e)
            result = error_message(e.message)
            return Response(result, status=500)