Spaces:
Runtime error
Runtime error
File size: 1,861 Bytes
989ec3c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
from mongoengine import connect
from config import Config
from .annotations import *
from .categories import *
from .datasets import *
from .lisence import *
from .exports import *
from .images import *
from .events import *
from .users import *
from .tasks import *
import json
def connect_mongo(name, host=None):
if host is None:
host = Config.MONGODB_HOST
connect(name, host=host)
# https://github.com/MongoEngine/mongoengine/issues/1171
# Use this methods until a solution is found
def upsert(model, query=None, update=None):
if not update:
update = query
if not query:
return None
found = model.objects(**query)
if found.first():
return found.modify(new=True, **update)
new_model = model(**update)
new_model.save()
return new_model
def fix_ids(q):
json_obj = json.loads(q.to_json().replace('\"_id\"', '\"id\"'))
return json_obj
def create_from_json(json_file):
with open(json_file) as file:
data_json = json.load(file)
for category in data_json.get('categories', []):
name = category.get('name')
if name is not None:
upsert(CategoryModel, query={"name": name}, update=category)
for dataset_json in data_json.get('datasets', []):
name = dataset_json.get('name')
if name:
# map category names to ids; create as needed
category_ids = []
for category in dataset_json.get('categories', []):
category_obj = {"name": category}
category_model = upsert(CategoryModel, query=category_obj)
category_ids.append(category_model.id)
dataset_json['categories'] = category_ids
upsert(DatasetModel, query={ "name": name}, update=dataset_json)
|