diff --git a/deps/infra-0.2-py3-none-any.whl b/deps/infra-0.2-py3-none-any.whl index 864ca1e..8e1b758 100644 Binary files a/deps/infra-0.2-py3-none-any.whl and b/deps/infra-0.2-py3-none-any.whl differ diff --git a/main.py b/main.py index 0a3cc94..0f8ac51 100644 --- a/main.py +++ b/main.py @@ -28,6 +28,7 @@ from sqlalchemy.orm import Session from fastapi import FastAPI, Response, Form, UploadFile, File, Request import uvicorn from typing import Annotated +import pathlib NEW_REPLICATION_REQUEST = 99 @@ -345,14 +346,49 @@ def get_metadata(params, files, url): def put_object(params, files, url): - pass + date = datetime.datetime.now() + req = ET.fromstring(params['query_data']) + obj = req.find('chart') + class_id = obj.get('Class') + con = OOConnectionParams(scheme, Config.oodb_host, Config.oodb_port, Config.oodb_dbname, + Config.oodb_username, Config.oodb_passwd, Config.oodb_schema) + ws = OODBWorkspace.ws(Config.oodb_schema) + if not ws.isInit(): + res = ws.init(con) + logger.warning(res) + fc = ws.featureClass(class_id) + feature = fc.createFeature() + geom = Polygon.fromExtent(Envelope(0.0, 0.0, 1.0, 1.0, SRFactory.PZ9011())) + res = feature.setGeometry(geom) + for attr in obj.findall('Attribute'): + name = attr.get('name') + value = attr.get('value') + res &= feature.addAttribute(name, variantFromString(value)) + + assert len(files) == 1 + file = files[0] + dir = TemporaryDirectory() + with zipfile.ZipFile(file, 'r') as zip_ref: + zip_ref.extractall(dir.name) + + fp = pathlib.Path(dir.name) + for item in fp.glob('**/*'): + if not item.is_file(): + continue + print(item.relative_to(dir.name)) + print(os.path.getsize(item)) + upload_file(str(item), uuid4().hex, Config.s3_bucket) + + ws.transaction() + res = ws.save() + ws.commit(f'Putobject from {params["to"]}') def apply_commits(params, files, url): logger.warning(params, files, url) assert len(files) == 1 file = files[0] - dir = TemporaryDirectory[str] + dir = TemporaryDirectory() with zipfile.ZipFile(file, 'r') as zip_ref: zip_ref.extractall(dir.name) req = ET.fromstring(params['query_data']) diff --git a/requirements.txt b/requirements.txt index 2e95daa..060ca86 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ +--find-links=deps aiohttp==3.8.4 aiosignal==1.3.1 annotated-types==0.5.0 @@ -17,7 +18,7 @@ graphql-core==3.3.0a3 greenlet==2.0.2 h11==0.14.0 idna==3.4 -infra @ file:///home/ashatora/PycharmProjects/xmlrpcserver/deps/infra-0.2-py3-none-any.whl#sha256=b4dae258fa13c1f60ea1fdf70466c7a374529cf4cdfdef76579a2a0f8022e2a3 +infra jmespath==1.0.1 multidict==6.0.4 pika==1.3.2 @@ -35,6 +36,6 @@ sniffio==1.3.0 SQLAlchemy==2.0.20 starlette==0.27.0 typing_extensions==4.7.1 -urllib3==2.0.4 +urllib3==1.26 uvicorn==0.23.2 yarl==1.9.2