def bulk(collection_id): """ --- post: summary: Load entities into a collection description: > Bulk load entities into the collection with id `collection_id` parameters: - description: The collection ID. in: path name: collection_id required: true schema: minimum: 1 type: integer - description: >- This will disable checksum security measures in order to allow bulk loading of document data. in: query name: unsafe schema: type: boolean requestBody: description: Entities to be loaded. content: application/json: schema: type: array items: $ref: '#/components/schemas/EntityUpdate' responses: '204': description: No Content tags: - Collection """ collection = get_db_collection(collection_id, request.authz.WRITE) require(request.authz.can_bulk_import()) entities = ensure_list(request.get_json(force=True)) # This will disable checksum security measures in order to allow bulk # loading of document data: safe = get_flag("safe", default=True) # Flag is only available for admins: if not request.authz.is_admin: safe = True # Let UI tools change the entities created by this: mutable = get_flag("mutable", default=False) role_id = request.authz.id bulk_write(collection, entities, safe=safe, mutable=mutable, role_id=role_id) collection.touch() db.session.commit() return ("", 204)
def bulk(collection_id): collection = get_db_collection(collection_id, request.authz.WRITE) require(request.authz.can_bulk_import()) # This will disable checksum security measures in order to allow bulk # loading of document data. unsafe = get_flag('unsafe', default=False) unsafe = unsafe and request.authz.is_admin entities = ensure_list(request.get_json(force=True)) bulk_write(collection, entities, unsafe=unsafe) refresh_collection(id) return ('', 204)
def bulk(collection_id): """ --- post: summary: Load entities into a collection description: > Bulk load entities into the collection with id `collection_id` parameters: - description: The collection ID. in: path name: collection_id required: true schema: minimum: 1 type: integer - description: >- This will disable checksum security measures in order to allow bulk loading of document data. in: query name: unsafe schema: type: boolean requestBody: description: Entities to be loaded. content: application/json: schema: type: array items: $ref: '#/components/schemas/EntityUpdate' responses: '204': description: No Content tags: - Collection """ collection = get_db_collection(collection_id, request.authz.WRITE) require(request.authz.can_bulk_import()) job_id = get_session_id() # This will disable checksum security measures in order to allow bulk # loading of document data. unsafe = get_flag('unsafe', default=False) unsafe = unsafe and request.authz.is_admin entities = ensure_list(request.get_json(force=True)) bulk_write(collection, entities, job_id=job_id, unsafe=unsafe) collection.touch() db.session.commit() return ('', 204)
def load_entities(foreign_id, infile, unsafe=False): """Load FtM entities from the specified iJSON file.""" collection = ensure_collection(foreign_id, foreign_id) def read_entities(): for idx in count(1): line = infile.readline() if not line: return if idx % 1000 == 0: log.info("[%s] Loaded %s entities from: %s", foreign_id, idx, infile.name) yield json.loads(line) job_id = Job.random_id() log.info("Loading [%s]: %s", job_id, foreign_id) bulk_write(collection, read_entities(), job_id=job_id, unsafe=unsafe) update_collection(collection)
def load_entities(foreign_id, infile, unsafe=False): """Load FtM entities from the specified iJSON file.""" collection = ensure_collection(foreign_id, foreign_id) def read_entities(): for idx in count(1): line = infile.readline() if not line: return if idx % 1000 == 0: log.info("[%s] Loaded %s entities from: %s", collection, idx, infile.name) yield json.loads(line) role = Role.load_cli_user() bulk_write(collection, read_entities(), unsafe=unsafe, role_id=role.id, index=False) reindex_collection(collection)