service_save.py 2.5 KB
# coding=utf-8
#author:        4N
#createtime:    2021/9/22
#email:         nheweijun@sina.com


from app.util.component.ApiTemplate import ApiTemplate
from app.util.component.ModelVisitor import ModelVisitor
from app.models import Service

class Api(ApiTemplate):
    '''
    保存服务到dmd文件
    '''
    api_name = "服务Save"
    def process(self):
        res = {}
        try:
            guid = self.para.get("guid")
            service = Service.query.filter_by(guid=guid).one_or_none()
            if not service:
                raise Exception("服务不存在!")
            res["data"] = {}

            if service.type in ["ImageWMS","ImageWMTS"]:
                from app.modules.service.image.models import ImageService
                speci_service = ImageService.query.filter_by(guid=service.service_guid).one_or_none()
                relate_images = speci_service.images.all()
                res["data"]["speci_service"] = ModelVisitor.object_to_json(speci_service)

                res["data"]["speci_service"]["images"] = [{"name":im["name"],"guid":im["guid"]} for im in ModelVisitor.objects_to_jsonarray(relate_images)]
                res["data"]["speci_service"]["images"] = sorted(res["data"]["speci_service"]["images"], key=lambda x: x["name"])

            elif service.type.__eq__("WMTS") or service.type.__eq__("TMS"):
                from app.modules.service.wmts.models import WMTS
                speci_service = WMTS.query.filter_by(guid=service.service_guid).one_or_none()

                res["data"]["speci_service"] = ModelVisitor.object_to_json(speci_service)

            elif service.type.__eq__("WMS/WFS"):
                from app.modules.service.wms.models import WMS
                speci_service = WMS.query.filter_by(guid=service.service_guid).one_or_none()
                res["data"]["speci_service"] = ModelVisitor.object_to_json(speci_service)
            else:
                res["data"] = {}

            res["data"]["service"] = ModelVisitor.object_to_json(service)

        except Exception as e:
            raise e
        return res


    api_doc = {
        "tags": ["服务接口"],
        "parameters": [
            {"name": "guid",
             "in": "formData",
             "type": "string",
             "description": "guid"},
        ],
        "responses": {
            200: {
                "schema": {
                    "properties": {
                    }
                }
            }
        }
    }